Mise en place de la réplication des bases

Préparation du compte Mysql

Sur les 2 serveurs Mysql

  • Arrêter les bases de données
  • Modification du compte mysql
  • Génération des clés ssh
  • Echange des clés ssh entre les serveurs bases de données
  • Copier le contenu de la clé publique du serveur DB1 sur DB2 et inversement dans le fichier ~/.ssh/authorized_keys
  • Modifier les droits du fichier
  • Tester les connexions

Configuration de MariaDB

  • Ajouter les lignes suivantes dans le fichier /etc/my.cnf.d/centreon.cnf
  • Penser à mettre 1 pour le master et 2 pour le slave
  • Laisser le read_only commenté

Redémarrer le services sur les 2 serveurs

Configuration de la réplication des bases

Création des comptes Centreon

Se connecter à mysql en root

Remplacer dans la commande les valeurs qui correspondent à votre environnement.

CREATE USER '@MARIADB_CENTREON_USER@'@'@DATABASE_SLAVE_IPADDR@' IDENTIFIED BY '@MARIADB_CENTREON_PASSWD@';
GRANT ALL PRIVILEGES ON centreon.* TO '@MARIADB_CENTREON_USER@'@'@DATABASE_SLAVE_IPADDR@';
GRANT ALL PRIVILEGES ON centreon_storage.* TO '@MARIADB_CENTREON_USER@'@'@DATABASE_SLAVE_IPADDR@';

CREATE USER '@MARIADB_CENTREON_USER@'@'@DATABASE_MASTER_IPADDR@' IDENTIFIED BY '@MARIADB_CENTREON_PASSWD@';
GRANT ALL PRIVILEGES ON centreon.* TO '@MARIADB_CENTREON_USER@'@'@DATABASE_MASTER_IPADDR@';
GRANT ALL PRIVILEGES ON centreon_storage.* TO '@MARIADB_CENTREON_USER@'@'@DATABASE_MASTER_IPADDR@';
CREATE USER '@MARIADB_CENTREON_USER@'@'@CENTRAL_SLAVE_IPADDR@' IDENTIFIED BY '@MARIADB_CENTREON_PASSWD@';
GRANT ALL PRIVILEGES ON centreon.* TO '@MARIADB_CENTREON_USER@'@'@CENTRAL_SLAVE_IPADDR@';
GRANT ALL PRIVILEGES ON centreon_storage.* TO '@MARIADB_CENTREON_USER@'@'@CENTRAL_SLAVE_IPADDR@';

CREATE USER '@MARIADB_CENTREON_USER@'@'@CENTRAL_MASTER_IPADDR@' IDENTIFIED BY '@MARIADB_CENTREON_PASSWD@';
GRANT ALL PRIVILEGES ON centreon.* TO '@MARIADB_CENTREON_USER@'@'@CENTRAL_MASTER_IPADDR@';
GRANT ALL PRIVILEGES ON centreon_storage.* TO '@MARIADB_CENTREON_USER@'@'@CENTRAL_MASTER_IPADDR@';

Création des comptes de réplication

Remplacer dans la commande les valeurs qui correspondent à votre environnement.

CREATE USER '@MARIADB_REPL_USER@'@'@CENTRAL_SLAVE_IPADDR@' IDENTIFIED BY '@MARIADB_CENTREON_PASSWD@';
GRANT ALL PRIVILEGES ON centreon.* TO '@MARIADB_CENTREON_USER@'@'@CENTRAL_SLAVE_IPADDR@';
GRANT ALL PRIVILEGES ON centreon_storage.* TO '@MARIADB_CENTREON_USER@'@'@CENTRAL_SLAVE_IPADDR@';

CREATE USER '@MARIADB_REPL_USER@'@'@CENTRAL_MASTER_IPADDR@' IDENTIFIED BY '@MARIADB_CENTREON_PASSWD@';
GRANT ALL PRIVILEGES ON centreon.* TO '@MARIADB_CENTREON_USER@'@'@CENTRAL_MASTER_IPADDR@';
GRANT ALL PRIVILEGES ON centreon_storage.* TO '@MARIADB_CENTREON_USER@'@'@CENTRAL_MASTER_IPADDR@';

Installation de la HA

dnf config-manager --enable highavailability
dnf install centreon-ha-common pcs pacemaker corosync corosync-qdevice

Configuration des éléments pour la replication

Editer le fichier /etc/centreon-ha/mysql-resources.sh et mettre les bonnes valeurs dans celui-ci .

#!/bin/bash
###############################
# Database access credentials #
###############################
DBHOSTNAMEMASTER='@DATABASE_MASTER_NAME@'
DBHOSTNAMESLAVE='@DATABASE_SLAVE_NAME@'
DBREPLUSER='@MARIADB_REPL_USER@'
DBREPLPASSWORD='@MARIADB_REPL_PASSWD@'
DBROOTUSER='@MARIADB_REPL_USER@'
DBROOTPASSWORD='@MARIADB_REPL_PASSWD@'
CENTREON_DB='centreon'
CENTREON_STORAGE_DB='centreon_storage'
###############################

Contrôle des connexion

Lancer la commande suivante sur les 2 serveurs SGBD pour verifiers qu’ils se connectent aux différents serveurs

/usr/share/centreon-ha/bin/mysql-check-status.sh
Connection SLAVE Status 'Centreon-DB1' [OK]
Connection SLAVE Status 'Centreon-DB2' [OK]
Slave Thread Status [KO]
Error reports:
No slave (maybe because we cannot check a server).
Position Status [SKIP]
Error reports:
Skip because we can't identify a unique slave.

Le message d’erreur est normal car la réplication n’est pas active. Il est important a ce stade que les connexion DB1 et DB2 soient OK.

Activer la replication

Passage en mode readonly

Maintenant que tout est bien configuré, activez le mode read_only sur les deux serveurs en décommentant (c’est-à-dire en retirant le # en début de ligne) cette instruction dans le fichier /etc/my.cnf.d/centreon.cnf :

Nœud principal

[server]
server-id=1
read_only
log-bin=mysql-bin

Nœud secondaire

[server]
server-id=2
read_only
log-bin=mysql-bin

Appliquez ensuite ce changement par un redémarrage de MariaDB sur les deux nœuds :

systemctl restart mariadb

Synchronisation des bases de données

Arrêt du serveur DB2

systemctl stop mariadb

Lancer la réplication des bases

Sur le Serveur DB1 lancer la commande de synchronisation des bases de données

/usr/share/centreon-ha/bin/mysql-sync-bigdb.sh

A la fin de l’exécution :

Umount and Delete LVM snapshot
Logical volume "dbbackupdatadir" successfully removed.
Start MySQL Slave
OK
Start Replication
Id      User    Host    db      Command Time    State   Info    Progress
5       replication     CentreonDB1:47706       NULL    Query   0       starting        show processlist        0.000
6       system user             NULL    Connect 0       Connecting to master    NULL    0.000
7       system user             NULL    Slave_SQL       0       Slave has read all relay log; waiting for more updates  NULL    0.000

Il est important de vérifier :

  • Le démontage des snapshot est bien effectué
  • Que le Slave est bien démarré
  • Que la réplication est active

Nous pouvons maintenant contrôler que la réplication fonctionne :

/usr/share/centreon-ha/bin/mysql-check-status.sh
Connection MASTER Status 'Centreon-DB1' [OK]
Connection SLAVE Status 'Centreon-DB2' [OK]
Slave Thread Status [OK]
Position Status [OK]

Etapes suivantes

  • Installation des briques corosync/pacemaker/heartbeat
  • Configuration du cluster
  • Configuration des centreon pour la HA