Mysql
 sql >> Base de données >  >> RDS >> Mysql

Haute disponibilité avec un budget restreint - Déploiement d'un cluster Galera MySQL minimal à deux nœuds

Nous recevons régulièrement des questions sur la configuration d'un cluster Galera avec seulement 2 nœuds.

La documentation indique clairement que vous devez avoir au moins 3 nœuds Galera pour éviter le partitionnement du réseau. Mais il existe des raisons valables d'envisager un déploiement à 2 nœuds, par exemple, si vous souhaitez obtenir une haute disponibilité de la base de données mais que vous avez un budget limité à dépenser pour un troisième nœud de base de données. Ou peut-être utilisez-vous Galera dans un environnement de développement/bac à sable et préférez-vous une configuration minimale.

Galera implémente un algorithme basé sur un quorum pour sélectionner un composant principal à travers lequel il applique la cohérence. Le composant principal doit avoir la majorité des voix, donc dans un système à 2 nœuds, il n'y aurait pas de majorité, ce qui entraînerait un cerveau divisé. Heureusement, il est possible d'ajouter un garbd (Galera Arbitrator Daemon), qui est un démon léger sans état qui peut agir comme un nœud impair. La défaillance de l'arbitre n'affecte pas les opérations du cluster et une nouvelle instance peut être rattachée au cluster à tout moment. Il peut y avoir plusieurs arbitres dans le cluster.

ClusterControl prend en charge le déploiement de garbd sur des hôtes autres que des bases de données.

Normalement, un cluster Galera a besoin d'au moins trois hôtes pour être pleinement fonctionnel, cependant, au moment du déploiement, deux nœuds suffiraient pour créer un composant principal. Voici les étapes :

  1. Déployer un cluster Galera de deux nœuds,
  2. Une fois le cluster déployé par ClusterControl, ajoutez garbd sur le nœud ClusterControl.

Vous devriez vous retrouver avec la configuration ci-dessous :

Déployer le cluster Galera

Accédez à la section ClusterControl Deploy pour déployer le cluster.

Après avoir sélectionné la technologie que nous voulons déployer, nous devons spécifier l'utilisateur, la clé ou le mot de passe et le port pour se connecter par SSH à nos hôtes. Nous avons également besoin du nom de notre nouveau cluster et si nous voulons que ClusterControl installe le logiciel et les configurations correspondants pour nous.

Après avoir configuré les informations d'accès SSH, nous devons sélectionner le fournisseur/la version et nous devons définir le mot de passe de l'administrateur de la base de données, le datadir et le port. Nous pouvons également spécifier quel référentiel utiliser.

Même si ClusterControl vous avertit qu'un cluster Galera a besoin d'un nombre impair de nœuds, n'ajoutez que deux nœuds au cluster.

Le déploiement d'un cluster Galera déclenchera une tâche ClusterControl qui peut être surveillée sur la page des tâches.

Installer Garbd

Une fois le déploiement terminé, installez garbd sur l'hôte ClusterControl. Nous avons la possibilité de déployer garbd à partir de ClusterControl, mais cette option ne fonctionnera pas si nous voulons le déployer sur le même serveur ClusterControl. Cela permet d'éviter certains problèmes liés aux versions de la base de données et aux dépendances des packages.

Nous devons donc l'installer manuellement, puis importer garbd dans ClusterControl.

Voyons l'installation manuelle de Percona Garbd sur CentOS 7.

Créez le fichier de référentiel Percona :

$ vi /etc/yum.repos.d/percona.repo
[percona-release-$basearch]
name = Percona-Release YUM repository - $basearch
baseurl = http://repo.percona.com/release/$releasever/RPMS/$basearch
enabled = 1
gpgcheck = 0
[percona-release-noarch]
name = Percona-Release YUM repository - noarch
baseurl = http://repo.percona.com/release/$releasever/RPMS/noarch
enabled = 1
gpgcheck = 0
[percona-release-source]
name = Percona-Release YUM repository - Source packages
baseurl = http://repo.percona.com/release/$releasever/SRPMS
enabled = 0
gpgcheck = 0

Ensuite, installez le package garbd Percona XtraDB Cluster :

$ yum install Percona-XtraDB-Cluster-garbd-57

Maintenant, nous devons configurer garbd. Pour cela, nous devons éditer le fichier /etc/sysconfig/garb :

$ vi /etc/sysconfig/garb
# Copyright (C) 2012 Codership Oy
# This config file is to be sourced by garb service script.
# A comma-separated list of node addresses (address[:port]) in the cluster
GALERA_NODES="192.168.100.192:4567,192.168.100.193:4567"
# Galera cluster name, should be the same as on the rest of the nodes.
GALERA_GROUP="Galera1"
# Optional Galera internal options string (e.g. SSL settings)
# see http://galeracluster.com/documentation-webpages/galeraparameters.html
# GALERA_OPTIONS=""
# Log file for garbd. Optional, by default logs to syslog
# Deprecated for CentOS7, use journalctl to query the log for garbd
# LOG_FILE=""

Modifiez les paramètres GALERA_NODES et GALERA_GROUP en fonction de la configuration des nœuds Galera. Nous devons également supprimer la ligne # REMOVE THIS AFTER CONFIGURATION avant de démarrer le service.

Et maintenant, nous pouvons lancer le service garb :

$ service garb start
Redirecting to /bin/systemctl start garb.service

Maintenant, nous pouvons importer le nouveau garbd dans ClusterControl.

Accédez à ClusterControl -> Sélectionnez Cluster -> Ajouter un équilibreur de charge.

Ensuite, sélectionnez la section Garbd et Importer Garbd.

Ici, nous n'avons qu'à spécifier le nom d'hôte ou l'adresse IP et le port du nouveau Garbd.

L'importation de garbd déclenchera une tâche ClusterControl qui peut être surveillée sur la page des tâches. Une fois terminé, vous pouvez vérifier que garbd est en cours d'exécution avec une coche verte dans la barre supérieure :

C'est tout !

Notre cluster Galera minimal à deux nœuds est maintenant prêt !