Galera Cluster est l'une des solutions de haute disponibilité les plus populaires pour MySQL. Il s'agit d'un cluster virtuellement synchrone, ce qui permet de contrôler le retard de réplication. Grâce au contrôle de flux, le cluster Galera peut s'autoréguler et permettre à davantage de nœuds chargés de rattraper le reste du cluster. La version récente de Galera 4 a apporté de nouvelles fonctionnalités et améliorations. Nous les avons couverts dans un article de blog sur MariaDB 10.4 Galera Cluster et un article de blog sur les fonctionnalités existantes et à venir de Galera 4.
Comment fonctionne Galera 4 lorsqu'il est utilisé dans Amazon EC2 ? Comme vous le savez probablement, Amazon propose des services de base de données relationnelle, conçus pour fournir aux utilisateurs un moyen simple de déployer une base de données MySQL hautement disponible. Mon collègue, Ashraf Sharif, a comparé les temps de basculement pour RDS MySQL et RDS Aurora dans son article de blog. Les temps de basculement pour Aurora ont l'air vraiment bien, mais il y a des mais. Tout d'abord, vous êtes obligé d'utiliser RDS. Vous ne pouvez pas déployer Aurora sur les instances que vous gérez. Si les fonctionnalités et options existantes disponibles dans Aurora ne vous suffisent pas, vous n'avez pas d'autre choix que de déployer quelque chose par vous-même. Ici entre Galera. Galera, contrairement à Aurora, n'est pas une boîte noire propriétaire. Au contraire, il s'agit d'un logiciel open source, qui peut être utilisé librement sur tous les environnements pris en charge. Vous pouvez installer Galera Cluster sur AWS Elastic Computing Cloud (EC2) et, grâce à cela, créer un environnement hautement disponible où le basculement est presque instantané :dès que vous pouvez détecter la défaillance d'un nœud, vous pouvez vous reconnecter à l'autre nœud Galera. Comment déployer Galera 4 dans EC2 ? Dans cet article de blog, nous allons y jeter un coup d'œil et nous vous fournirons un guide étape par étape montrant quelle est la manière la plus simple d'y parvenir.
Déployer un cluster Galera 4 sur EC2
La première étape consiste à créer un environnement que nous utiliserons pour notre cluster Galera. Nous utiliserons les machines virtuelles Ubuntu 18.04 LTS.
Nous utiliserons la taille d'instance t2.medium pour les besoins de ce blog Publier. Vous devez dimensionner vos instances en fonction de la charge attendue.
Nous allons déployer trois nœuds dans le cluster. Pourquoi trois ? Nous avons un blog qui explique comment Galera maintient une haute disponibilité.
Nous allons configurer le stockage pour ces instances.
Nous choisirons également le groupe de sécurité approprié pour les nœuds. Encore une fois, dans notre cas, le groupe de sécurité est assez ouvert. Vous devez vous assurer que l'accès est limité autant que possible - seuls les nœuds qui doivent accéder aux bases de données doivent être autorisés à s'y connecter.
Enfin, soit nous choisissons un pair de clé existant, soit nous en créons un nouveau. Après cette étape, nos trois instances seront lancées.
Une fois qu'ils sont installés, nous pouvons nous y connecter via SSH et commencer à configurer la base de données.
Nous avons décidé d'utiliser la convention de nommage "nœud1, nœud2, nœud3". Nous avons donc dû modifier /etc/hosts sur tous les nœuds et les répertorier avec leurs adresses IP locales respectives. Nous avons également modifié /etc/hostname pour utiliser le nouveau nom des nœuds. Lorsque cela est fait, nous pouvons commencer à configurer notre cluster Galera. Au moment d'écrire ces lignes, le seul fournisseur qui fournit la version GA de Galera 4 est MariaDB avec sa version 10.4, nous allons donc utiliser MariaDB 10.4 pour notre cluster. Nous allons procéder à l'installation en utilisant les suggestions et les guides du site Web de MariaDB.
Déployer un cluster MariaDB 10.4 Galera
Nous allons commencer par préparer les référentiels :
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
bash ./mariadb_repo_setup
Nous avons téléchargé le script destiné à configurer les référentiels et nous l'avons exécuté pour nous assurer que tout est correctement configuré. Cela a configuré les référentiels pour utiliser la dernière version de MariaDB, qui, au moment de la rédaction, est 10.4.
[email protected]:~# apt update
Hit:1 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:3 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic-backports InRelease
Hit:4 http://downloads.mariadb.com/MariaDB/mariadb-10.4/repo/ubuntu bionic InRelease
Ign:5 http://downloads.mariadb.com/MaxScale/2.4/ubuntu bionic InRelease
Hit:6 http://downloads.mariadb.com/Tools/ubuntu bionic InRelease
Hit:7 http://downloads.mariadb.com/MaxScale/2.4/ubuntu bionic Release
Hit:8 http://security.ubuntu.com/ubuntu bionic-security InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
4 packages can be upgraded. Run 'apt list --upgradable' to see them.
Comme vous pouvez le voir, les référentiels pour MariaDB 10.4 et MaxScale 2.4 ont été configurés. Nous pouvons maintenant continuer et installer MariaDB. Nous allons le faire étape par étape, nœud par nœud. MariaDB fournit un guide sur la façon dont vous devez installer et configurer le cluster.
Nous devons installer les packages :
apt-get install mariadb-server mariadb-client galera-4 mariadb-backup
Cette commande installe tous les packages nécessaires à l'exécution de MariaDB 10.4 Galera. MariaDB crée un ensemble de fichiers de configuration. Nous en ajouterons un nouveau, qui contiendrait tous les paramètres requis. Par défaut, il sera inclus à la fin du fichier de configuration afin que tous les paramètres précédents pour les variables que nous définissons soient écrasés. Idéalement, par la suite, vous modifieriez les fichiers de configuration existants pour supprimer les paramètres que nous avons mis dans le galera.cnf afin d'éviter toute confusion lorsque le paramètre donné est configuré.
[email protected]:~# cat /etc/mysql/conf.d/galera.cnf
[mysqld]
bind-address=10.0.0.103
default_storage_engine=InnoDB
binlog_format=row
innodb_autoinc_lock_mode=2
# Galera cluster configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://10.0.0.103,10.0.0.130,10.0.0.62"
wsrep_cluster_name="Galera4 cluster"
wsrep_sst_method=mariabackup
wsrep_sst_auth='sstuser:pa55'
# Cluster node configuration
wsrep_node_address="10.0.0.103"
wsrep_node_name="node1"
Lorsque la configuration est prête, nous pouvons commencer.
[email protected]:~# galera_new_cluster
Cela devrait amorcer le nouveau cluster sur le premier nœud. Ensuite, nous devons procéder avec des étapes similaires sur les nœuds restants :installez les packages requis et configurez-les en gardant à l'esprit que l'adresse IP locale change, nous devons donc modifier le fichier galera.cnf en conséquence.
Lorsque les fichiers de configuration sont prêts, nous devons créer un utilisateur qui sera utilisé pour le Snapshot State Transfer (SST) :
MariaDB [(none)]> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'pa55';
Query OK, 0 rows affected (0.022 sec)
MariaDB [(none)]> GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
Query OK, 0 rows affected (0.022 sec)
Nous devrions le faire sur le premier nœud. Les nœuds restants rejoindront le cluster et ils recevront un instantané de l'état complet afin que l'utilisateur leur soit transféré. Maintenant, la seule chose que nous devons faire est de démarrer les nœuds restants :
[email protected]:~# service mysql start
[email protected]:~# service mysql start
et vérifiez que le cluster a bien été formé :
MariaDB [(none)]> show global status like 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
1 row in set (0.001 sec)
Tout va bien, le cluster est opérationnel et il se compose de trois nœuds Galera. Nous avons réussi à déployer MariaDB 10.4 Galera Cluster sur Amazon EC2.