préambule:
Deux serveurs identiques PU840 de chez DELL
dans notre cas de figure, nous utilisons une mandriva 2006(os imposé par la société)
Serveur d’application avec une base de donnée Mysql, qui faudra copier en tant réél sur un deuxième serveur.
Solution choisi: Heartbeat/Mon/Réplica Mysql
Heartbeat:
clustering en haute disponibilité basé sur des battements de cœur.
Au préalabe:
urpmi heartbeat
IP1: serveur maitre
IP2: serveur esclave
IPv :virtuel(utiliser par les clients)
Fichier à configurer:
/etc/ha.d/ha.cf
/etc/ha.d/haressource
/etc/ha.d/authkeys
Ouvrir le port 694 en Udp sur les 2 serveurs
Ajouter l’exécution de heartbeat au démarrage du serveur
copier les fichiers de conf sur les deux serveurs
Pour plus de détails sur HEARTBEAT -> https://memo-linux.com/?p=565
Mon:
surveillance de la défaillance des services uniquement sur le serveur maitre
Au préalabe:
urpmi mon
Choix des services à surveiller
Fichier à configurer:
/etc/mon/mon.cf
Ajouter l’exécution de Mon au démarrage du serveur Maitre
Pour plus de détails sur MON -> memo-linux.com/?p=569
Replication MYSQL
Au préalabe:
Base MySql identique sur les 2 serveurs.
[servermaitre]# mysqldump -u root -pMDP mysql > base.sql
[servermaitre]# scp base.sql login@IP_serveresclave:/root
[serveresclave:root]# mysql -u root -pMDP mysql < base.sql configurer le fichier /etc/my.cnf
sur le server maitre:
log-bin=/var/lib/mysql/mysql-bin
server-id = 1
sur le serveur exclave:
log-bin=/var/lib/mysql/mysql-bin
server-id = 2
master-host = IP sever maitre
master-user = repli
master-password = repli
master-port = 3306
Configuration de la réplication:
sur le serveur maitre:
[servermaitre]# mysql -u root -pMDP
On bloque la base en lecture seul
>mysql: FLUSH TABLES WITH READ LOCK;
On repère la position de la base:
>mysql: show master status;
et on note:
mysql-bin.000001 ← le log bin à utiliser
2554773 ← la position du log
évidemment à adpater suivant le cas.
sur le serveur exclave:
[serveresclave]# mysql -u root -pMDP
on va ajouter ‘utilisateur repli avec comme mdp repli
ça sera cet utilisateur qui aura le droit pour faire la réplication de la base mysql en temps réel
mysql>GRANT REPLICATION SLAVE ON *.* TO repli@’%’ IDENTIFIED BY ‘repli’;
On va positioner les server esclave comme le maitre:
mysql> CHANGE MASTER TO MASTER_HOST = ‘1IP server maitre’, MASTER_USER = ‘repli’, MASTER_PASSWORD = ‘repli’, MASTER_LOG_FILE = ‘mysql-bin.000001’, MASTER_LOG_POS = 2554773;
mysql>flush privileges;
on démarre la réplication
mysql> start slave;
on vérifie qu’on a pas d’erreur
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.94.8.58
Master_User: repli
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 2560749
Relay_Log_File: GLPI_esclave-relay-bin.000024
Relay_Log_Pos: 660186
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
******
Last_Errno: 0
Last_Error:
******
Seconds_Behind_Master: 0
1 row in set (0.00 sec)
sur le serveur maitre on dévérouille l’écriture sur la base
mysql> UNLOCK TABLES;
script de lancement automatique des services heartbeat/mon/htpp/myslq:
/root/script/./startHA
le script stratHA est a créer ;-)
Annexe:
Tuto Heartbeat/Mon:
http://www.netexpertise.eu/fr/mysql/auto-failover-heartbeat.html
Tuto replication MySql:
http://www.system-linux.eu/index.php?post/2009/09/10/R%C3%A9plication-Mysql