DRBD sous linux
From Tuxunix
Contents |
DRBD MySQL V0.7 (Debian Etch)
- Ce système permet de mettre en place un cluster de type Actif - passif MySQL sans utiliser les fonctions de clustering intégrées à MySQL.
Ce système utilise un MySQL sans configuration particulière et deux technologies particulières :
- HeartBeat (permettant de gérer le passage actif à passif et inversement)
- DRBD qui permet de créer un système de fichier local répliqué sur une autre machine (RAID 1 sur TCP)
Note : la version DRBD utilisée est la 0.7. La version suivante (0.8) fonctionne différemment et possède d’autres fonctionnalités.
Pour des raisons de performance, la réplication des données se fait via un câble croisé sur des ports Gigabit.
Ce système permet de faire fonctionner un seul des deux serveurs à un instant t donné. En ordre de marche ‘normal‘ le maître est fonctionnel et le secondaire est allumé mais le système de fichier est démonté et le service MySQL est coupé.
Guide d’installation
L’installation se décompose en 4 phases : - Installation de DRBD
- Compilation du module kernel
- Installation du module et des outils
- Création des partitions
- Configuration
- Initialisation
- Installation et configuration de HeartBeat
- Installation de MySQL
- Test
Dans la procédure suivante, nous utiliserons les noms suivants : - Serveur Maitre : primary_srv
- Serveur Esclave : secondary_srv
DRBD
DRBD n’est pas inclus dans les kernels par defaut. Cependant, nous pouvons compiler le support sans changer le kernel avec l’utilitaire module-assistant.
sur le serveur maître :
primary_srv:~# apt-get install module-assistant
Une fois installé :
primary_srv:~# m-a
Choisir successivement les menus UPDATE et PREPARE. Ceci permettra d’installer les dépendances de compilation.
Choisir l’Option SELECT et choisir dans la liste le module drbd0.7-module.
Sélectionner GET, BUILD et finalement INSTALL. Le dernier point vous déclanchera surement une erreur de dépendance sur le package drbd-utils. Ne vous inquiétez pas, Apt va vous redemander de confirmer cette dépendance.
Pour quittez, choisissez BACK , CANCEL puis QUIT.
Une fois sur le prompt :
echo "drbd" >> /etc/modules /etc/init.d/module-init-tools start
Faites un dmesg , les dernières lignes devrait ressembler à
drbd: initialised. Version: 0.7.21 (api:79/proto:74) drbd: SVN Revision: 2326 build by root@primary_srv, 2007-10-12 19:54:40 drbd: registered as block device major 147
A ce stade, DRBD est installé sur le serveur maitre.
Sur primary_srv, il faut ajouter les deux lignes suivantes au /etc/hosts
X.X.X.X primary_srv.lan X.X.X.X secondary_srv.lan
Il faut modifier le fichier /etc/network/interfaces en conséquence.
auto eth2
iface eth2 inet static
address X.X.X.X
netmask 255.255.255.0
Sur le serveur secondary_srv , il faut de la même façon ajouter les deux lignes suivantes au /etc/hosts
X.X.X.X primary_srv.lan X.X.X.X secondary_srv.lan
Il faut modifier le fichier /etc/network/interfaces en conséquence.
auto eth2
iface eth2 inet static
address X.X.X.X
netmask 255.255.255.0
Recopions le module packagé par module-assistant pour le déployer sur le second serveur :
primary_srv:~# scp /usr/src/drbd0.7-module-2.6.18-4-*.deb root@secondary_srv.lan: root@secondary_srv.lan's password: drbd0.7-module-2.6.18-4-amd64_0.7.21-4+2.6.18.dfsg.1-12etch2_amd64.deb 100% 73KB 72.6KB/s 00:00 primary_srv:~#
puis depuis le second serveur :
secondary_srv:~# apt-get install drbd0.7-utils secondary_srv:~# dpkg -i drbd0.7-module-2.6.18-4-amd64_0.7.21-4+2.6.18.dfsg.1-12etch2_amd64.deb secondary_srv:~# echo "drbd" >> /etc/modules secondary_srv:~# /etc/init.d/module-init-tools start
un petit dmesg comme precedement permet de vérifier que tout est chargé
Attaquons la configuration du volume :
primary_srv:~# cat /proc/partitions major minor #blocks name 8 0 142737408 sda 8 1 136897866 sda1 8 2 1 sda2 8 5 5831563 sda5 8 16 142737408 sdb
Nous allons utliser /dev/sdb pour créer notre partition DRBD.
- Attention, ici nous disposons d’une pile RAID dédiée, si les partitions sont sur le même disque le système, il ne faut surtout pas utiliser le micro script suivant !!!!!!!! Il faut faire le partitionnement à la main.
MET DANS LES PREREQUIS QU’IL FAUT UNE PILE DEDIEE PUIS MODIFIE CE MESSAGE POUR DIRE QU’IL FAUT IMPERATIVEMENT UNE PILE DEDIEE
Cette commande permet de créer une partition de la taille de tout le volume
primary_srv:~# echo "n p 1 w" | fdisk /dev/sdb primary_srv:~#
vérifions que la partition est bien créée
primary_srv:~# cat /proc/partitions major minor #blocks name 8 0 142737408 sda 8 1 136897866 sda1 8 2 1 sda2 8 5 5831563 sda5 8 16 142737408 sdb 8 17 142729461 sdb1 primary_srv:~#
ensuite, nous devons créer une nouvelle configuration DRBD
primary_srv:~# > /etc/drbd.conf primary_srv:~# vim /etc/drbd.conf
il faut coller la configuration suivante :
resource data {
protocol A;
incon-degr-cmd "echo '!DRBD! pri on incon-degr' | wall ; sleep 60 ; halt -f";
net {
on-disconnect reconnect;
}
syncer {
rate 100M;
}
on primary_srv.lan {
device /dev/drbd0;
disk /dev/sdb1;
address X.X.X.X:7781;
meta-disk internal;
}
on secondary_srv.lan {
device /dev/drbd0;
disk /dev/sdb1;
address X.X.X.X:7781;
meta-disk internal;
}
}
Pensez à vérifier les adresses IP et les devices (lignes address et disk)
Sur le serveur secondaire, reproduisons les mêmes opérations de création de partitions et de configuration.
Une fois deux serveurs identiques, il faut lancer les services drbd :
primary_srv:~# /etc/init.d/drbd start
secondary_srv:~# /etc/init.d/drbd start
Le premier lancé des deux va attendre le second.
Une fois les deux services lancer, vous devriez un contenu proche de celui qui est ci-dessous dans le fichier /proc/drbd
primary_srv:~# cat /proc/drbd version: 0.7.21 (api:79/proto:74) SVN Revision: 2326 build by root@primary_srv, 2007-10-12 19:54:40 0: cs:Connected st:Secondary/Secondary ld:Inconsistent ns:0 nr:0 dw:0 dr:0 al:0 bm:17408 lo:0 pe:0 ua:0 ap:0 1: cs:Unconfigured primary_srv:~#
secondary_srv:~# cat /proc/drbd version: 0.7.21 (api:79/proto:74) SVN Revision: 2326 build by root@primary_srv, 2007-10-12 19:54:40 0: cs:Connected st:Secondary/Secondary ld:Inconsistent ns:0 nr:0 dw:0 dr:0 al:0 bm:17408 lo:0 pe:0 ua:0 ap:0 1: cs:Unconfigured secondary_srv:~#
Les informations importantes sont en gras et en rouge :
Connected nous permet de dire que la connection réseau entre le deux daemon drbd est fonctionnelle Secondary/Secondary nous permet de dire que le système de fichier n’est pas encore ultilisable. De plus, il est Inconsistent.
NOTE : On ne peut utiliser qu’un système qui est en mode Primary.
Nous allons regler le problème en forcant la synchronisation depuis le maitre :
primary_srv:~# drbdsetup /dev/drbd0 primary --do-what-I-say
Une fois la commande passé, le fichier /proc/drbd doit ressembler à :
primary_srv:~# cat /proc/drbd
version: 0.7.21 (api:79/proto:74)
SVN Revision: 2326 build by root@primary_srv, 2007-10-12 19:54:40
0: cs:SyncSource st:Primary/Secondary ld:Consistent
ns:573760 nr:0 dw:0 dr:581948 al:0 bm:17442 lo:1562 pe:0 ua:2047 ap:0
[>...................] sync'ed: 0.5% (138695/139256)M
finish: 1:48:05 speed: 21,856 (40,980) K/sec
1: cs:Unconfigured
primary_srv:~#
Une fois que la réplication est terminée et que le volume est consistant, passons primary_srv en maître et formatons le volume.
primary_srv:~# drbdadm primary all primary_srv:~# mkfs.ext3 /dev/drbd0
Pour vérifier que tout est OK, il suffit de regarder les /proc/drbd sur les deux serveurs :
primary_srv:~# cat /proc/drbd version: 0.7.21 (api:79/proto:74) SVN Revision: 2326 build by root@primary_srv, 2007-10-12 19:54:40 0: cs:Connected st:Primary/Secondary ld:Consistent ns:64659700 nr:0 dw:0 dr:64659700 al:0 bm:3947 lo:0 pe:0 ua:0 ap:0 primary_srv:~#
secondary_srv:~# cat /proc/drbd version: 0.7.21 (api:79/proto:74) SVN Revision: 2326 build by root@primary_srv, 2007-10-12 19:54:40 0: cs:Connected st:Secondary/Primary ld:Consistent ns:0 nr:64659700 dw:64659700 dr:0 al:0 bm:3947 lo:0 pe:0 ua:0 ap:0 secondary_srv:~#
Souvenez vous bien que l’on ne peux monter ou utiliser le /dev/drbd0 que sur le nœud qui à le statut primary !
Créons sur les deux serveurs les points de montage et éditons le /etc/fstab correspondants
primary_srv:~# mkdir /opt/drbd secondary_srv:~# mkdir /opt/drbd
la ligne à ajouter dans les deux /etc/fstab
/dev/drbd0 /opt/drbd ext3 defaults,noauto 0 0
Installation et configuration de HeartBeat
La procédure est à faire sur les deux serveurs de façon identique. Nous ne détaillerons que l’installation sur le premier serveur.
primary_srv:~# apt-get install heartbeat primary_srv:~# echo "auth 1 1 crc" > /etc/ha.d/authkeys primary_srv:~# chmod 600 /etc/ha.d/authkeys primary_srv:~# echo "primary_srv drbddisk Filesystem::/dev/drbd0::/opt/drbd::ext3 mysql Delay::1::0 IPaddr::213.218.156.134/27" > /etc/ha.d/haresources
Pensez bien à vérifier les parties en rouge L’IP correspond à l’IP virtuelle publique qui sera utilisée par le service MySQL.
Éditons le fichier de configuration principal de HeartBeat
primary_srv:~# vim /etc/ha.d/ha.cf bcast eth2 debugfile /var/log/ha-debug logfile /var/log/ha-log logfacility local0 keepalive 2 deadtime 10 warntime 6 initdead 60 udpport 694 node primary_srv node secondary_srv auto_failback on
Une fois ces opérations répliquées sur les deux serveurs, nous pouvons installer MySQL.
Installation de MySQL
L’installation de MySQL ne présente pas de difficultés. Il faut cependant vérifier quelques points sans lesquels la procédure de marchera pas.
- le prochain UID système doit être le même sur les deux serveurs (UID système doit être > 100 mais inférieur à 1000) - L’ordre d’installation des MySQL sur les serveurs est important.
Sur le maître :
primary_srv:~# apt-get install mysql-server … primary_srv:~# /etc/init.d/mysql stop
puis commenter la ligne suivante dans /etc/my.cnf pour obtenir
#bind-address = 127.0.0.1
DRBD MySQL V0.8 ((Debian Lenny)
DRBD
Contrairement a la version 0.7, le module est disponible compilé pour les kernesl Debian. L’ancienne étape consistant à utiliser module-assistant n’est donc plus utile. Sur les deux serveurs :
primary_srv:~# apt-get install drbd8-modules-`uname -r` drbd8-utils
Une fois sur le prompt :
echo "drbd" >> /etc/modules /etc/init.d/module-init-tools start
Faites un dmesg , les dernières lignes devrait ressembler à
[1181935.658069] drbd: initialised. Version: 8.0.14 (api:86/proto:86) [1181935.658069] drbd: GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33 [1181935.658069] drbd: registered as block device major 147 [1181935.658069] drbd: minor_table @ 0xffff81004e1bfb80
A ce stade, DRBD est installé sur le serveur maitre.
Ici, les deux IPs sont X.X.X.X pour primary_srv et X.X.X.X pour secondary_srv.
Sur primary_srv, il faut ajouter les deux lignes suivantes au /etc/hosts
X.X.X.X primary_srv.lan X.X.X.X secondary_srv.lan
Il faut modifier le fichier /etc/network/interfaces en conséquence.
auto eth2
iface eth2 inet static
address X.X.X.X
netmask 255.255.255.252
Sur le serveur secondary_srv , il faut de la même façon ajouter les deux lignes suivantes au /etc/hosts
X.X.X.X primary_srv.lan X.X.X.X secondary_srv.lan
Il faut modifier le fichier /etc/network/interfaces en conséquence.
auto eth2
iface eth2 inet static
address X.X.X.X
netmask 255.255.255.252
Attaquons la configuration du volume :
primary_srv:~# cat /proc/partitions major minor #blocks name
8 0 142737408 sda 8 1 136897866 sda1 8 2 1 sda2 8 5 5831563 sda5 8 16 142737408 sdb
Nous allons utliser /dev/sdb pour créer notre partition DRBD.
Attention, ici nous disposons d’une pile RAID dédiée, si les partitions sont sur le même disque que le système, il ne faut surtout pas utiliser le micro script suivant !!!!!!!! Il faut faire le partitionnement à la main.
Cette commande permet de créer une partition de la taille de tout le volume
primary_srv:~# echo "n p 1 w" | fdisk /dev/sdb primary_srv:~#
Vérifions que la partition est bien créée
primary_srv:~# cat /proc/partitions major minor #blocks name 8 0 142737408 sda 8 1 136897866 sda1 8 2 1 sda2 8 5 5831563 sda5 8 16 142737408 sdb 8 17 142729461 sdb1 primary_srv:~#
Ensuite, nous devons créer une nouvelle configuration DRBD
primary_srv:~# > /etc/drbd.conf primary_srv:~# vim /etc/drbd.conf
Il faut coller la configuration suivante :
# DRBD Basic Ouroboros configuration
global {
usage-count no;
}
common {
syncer { rate 100M; }
}
resource r0 {
protocol C;
handlers {
outdate-peer "/usr/lib/heartbeat/drbd-peer-outdater -t 5";
split-brain "/usr/ouroboros/bin/ouroboros-drbd-nagios splitbrain";
}
startup {
degr-wfc-timeout 120; # 2 minutes.
}
disk {
on-io-error detach;
}
net {
after-sb-0pri disconnect;
after-sb-1pri disconnect;
after-sb-2pri disconnect;
rr-conflict disconnect;
}
on primary_srv {
device /dev/drbd0;
disk /dev/sda3;
address X.X.X.X:7788;
meta-disk internal;
}
on secondary_srv {
device /dev/drbd0;
disk /dev/sda3;
address X.X.X.X:7788;
meta-disk internal;
}
}
Pour initialiser le volume drbd, éxecuter la commande suivant sur les 2 serveurs :
primary_srv:~# drbdadm create-md r0 secondary_srv:~# drbdadm create-md r0
Une fois deux serveurs identiques, il faut lancer les services drbd :
primary_srv:~# /etc/init.d/drbd start secondary_srv:~# /etc/init.d/drbd start
Le premier lancé des deux va attendre le second. Une fois les deux services lancés, vous devriez avoir un contenu proche de celui qui est ci-dessous dans le fichier /proc/drbd
primary_srv:~# cat /proc/drbd
version: 8.0.14 (api:86/proto:86)
GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33
0: cs:Connected st:Secondary/Secondary ds:UpToDate/Inconsistent C r--u
ns:3835912 nr:0 dw:0 dr:3835912 al:0 bm:236 lo:0 pe:0 ua:0 ap:0
resync: used:0/61 hits:239509 misses:235 starving:0 dirty:0 changed:235
act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0
secondary_srv:~# cat /proc/drbd
version: 8.0.14 (api:86/proto:86)
GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33
0: cs:Connected st:Secondary/Secondary ds:Inconsistent/UpToDate C r-p-
ns:0 nr:3835912 dw:3835912 dr:0 al:0 bm:236 lo:0 pe:0 ua:0 ap:0
resync: used:0/61 hits:239509 misses:235 starving:0 dirty:0 changed:235
act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0
Les informations importantes sont en gras et en rouge :
Connected nous permet de dire que la connection réseau entre le deux daemon drbd est fonctionnelle
Secondary/Secondary nous permet de dire que le système de fichier n’est pas encore ultilisable. De plus, il est Inconsistent.
NOTE : On ne peut utiliser qu’un système qui est en mode Primary.
Nous allons regler le problème en forcant la synchronisation depuis le maitre :
primary_srv:~# drbdsetup /dev/drbd0 primary -o
et sur le secondaire (facultatif à faire uniquement si le slave reste en Secondary/Secondary)
secondary_srv:~# drbdadm secondary r0 secondary_srv:~# drbdadm -- --discard-my-data connect r0 r0 est le nom de la ressource définie dans le fichier de configuration
Une fois la commande passé, le fichier /proc/drbd doit ressembler à :
primary_srv:~# cat /proc/drbd
version: 8.0.14 (api:86/proto:86)
GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33
0: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
ns:12332704 nr:0 dw:0 dr:12334880 al:0 bm:752 lo:0 pe:14 ua:68 ap:0
[>...................] sync'ed: 9.7% (113084/125127)M
finish: 0:18:54 speed: 102,088 (97,104) K/sec
resync: used:1/61 hits:770096 misses:753 starving:0 dirty:0 changed:753
act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0
primary_srv:~#
Une fois que la réplication est terminée et que le volume est consistant, passons primary_srv en maître et formatons le volume.
primary_srv:~# mkfs.ext3 /dev/drbd0
Pour vérifier que tout est OK, il suffit de regarder les /proc/drbd sur les deux serveurs :
primary_srv:~# cat /proc/drbd
version: 8.0.14 (api:86/proto:86)
GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33
0: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---
ns:128581224 nr:0 dw:2146740 dr:126434589 al:1909 bm:7821 lo:0 pe:0 ua:0 ap:0
resync: used:0/61 hits:8319311 misses:9236 starving:0 dirty:0 changed:9236
act_log: used:0/127 hits:534776 misses:6885 starving:0 dirty:4976 changed:1909
primary_srv:~#
secondary_srv:~# cat /proc/drbd
version: 8.0.14 (api:86/proto:86)
GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33
0: cs:Connected st:Secondary/Primary ds:UpToDate/UpToDate C r---
ns:0 nr:128581224 dw:132417136 dr:0 al:0 bm:8057 lo:0 pe:0 ua:0 ap:0
resync: used:0/61 hits:8319313 misses:9234 starving:0 dirty:0 changed:9234
act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0
secondary_srv:~#
Souvenez vous bien que l’on ne peut monter ou utiliser le /dev/drbd0 que sur le nœud qui à le statut primary !
Créons sur les deux serveurs les points de montage et éditons le /etc/fstab correspondants
primary_srv:~# mkdir /opt/drbd secondary_srv:~# mkdir /opt/drbd
la ligne à ajouter dans les deux /etc/fstab
/dev/drbd0 /opt/drbd ext3 defaults,noauto 0 0
L’option noauto est indispensable.
Installation et configuration de HeartBeat
La procédure est à faire sur les deux serveurs de façon identique. Nous ne detaillerons que l’installation sur le premier serveur.
primary_srv:~# apt-get install heartbeat primary_srv:~# echo "auth 1 1 crc" > /etc/ha.d/authkeys primary_srv:~# chmod 600 /etc/ha.d/authkeys primary_srv:~#echo "primary_srv drbddisk Filesystem::/dev/drbd0::/opt/drbd::ext3 mysql Delay::1::0 IPaddr::213.218.156.134/27" > /etc/ha.d/haresources
Pensez bien à vérifier les parties en rouge
L’IP correspond à l’IP virtuelle publique qui sera utilisée par le service MySQL.
Éditons le fichier de configuration principal de HeartBeat
primary_srv:~# vim /etc/ha.d/ha.cf bcast eth2 debugfile /var/log/ha-debug logfile /var/log/ha-log logfacility local0 keepalive 2 deadtime 10 warntime 6 initdead 60 udpport 694 node primary_srv node secondary_srv auto_failback on
Une fois ces opérations répliquées sur les deux serveurs, nous pouvons installer MySQL.
Correction des droits pour que heartbeat puisse exécuter les commande drbd (sur chaque serveur)
chgrp haclient /sbin/drbdsetup chmod o-x /sbin/drbdsetup chmod u+s /sbin/drbdsetup
chgrp haclient /sbin/drbdmeta chmod o-x /sbin/drbdmeta chmod u+s /sbin/drbdmeta
chmod +s /sbin/drbdadm
Installation de MySQL
L’installation de MySQL ne présente pas de difficultés. Il faut cependant vérifier quelques points sans lesquels la procédure de marchera pas.
- le prochain UID système doit être le même sur les deux serveurs (UID système doit être > 100 mais inférieur à 1000)
- L’ordre d’installation des MySQL sur les serveurs est important.
Sur le maître :
primary_srv:~# apt-get install mysql-server primary_srv:~# /etc/init.d/mysql stop
Puis commenter la ligne suivante dans /etc/my.cnf pour obtenir
#bind-address = 127.0.0.1
Ensuite, nous allons déplacer les data mysql sur le DRBD :
primary_srv:~# mount /opt/drbd primary_srv:/var/lib# mv mysql /opt/drbd/ primary_srv:/var/lib# ln -s /opt/drbd/mysql /var/lib/mysql primary_srv:~# /etc/init.d/mysql start
on vérifie que tout fonctionne puis on recoupe mysql et on le retire du démarrage auto
primary_srv:~# /etc/init.d/mysql stop primary_srv:~# update-rc.d -f mysql remove Removing any system startup links for /etc/init.d/mysql ... /etc/rc0.d/K21mysql /etc/rc1.d/K21mysql /etc/rc2.d/S19mysql /etc/rc3.d/S19mysql /etc/rc4.d/S19mysql /etc/rc5.d/S19mysql /etc/rc6.d/K21mysql primary_srv:~#
on bascule le service DRBD manuellement sur le secondaire :
primary_srv:/var/lib# umount /opt/drbd primary_srv:/var/lib# drbdadm secondary all
et sur le secondaire
secondary_srv:~# drbdadm primary all secondary_srv:~# mount /opt/drbd secondary_srv:~# ln -s /opt/drbd/mysql /var/lib/mysql secondary_srv:~# apt-get install mysql-server secondary_srv:~# update-rc.d -f mysql remove Removing any system startup links for /etc/init.d/mysql ... /etc/rc0.d/K21mysql /etc/rc1.d/K21mysql /etc/rc2.d/S19mysql /etc/rc3.d/S19mysql /etc/rc4.d/S19mysql /etc/rc5.d/S19mysql /etc/rc6.d/K21mysql secondary_srv:~#
De la même façon, on commente la ligne suivante dans /etc/my.cnf pour obtenir
#bind-address = 127.0.0.1
secondary_srv:~# /etc/init.d/mysql stop secondary_srv:~# /etc/init.d/mysql start
on vérifie que tout fonctionne puis on recoupe mysql
On ré-injecte les paramètres de l’utilisateur debian-sys-maintainer vers le primaire :
secondary_srv:~# scp -r /etc/mysql/debian.cnf root@primary_srv.lan:/etc/mysql/ root@primary_srv.lan's password: debian.cnf 100% 312 0.3KB/s 00:00 secondary_srv:~#
puis on rebascule le service sur le primaire
secondary_srv:~# /etc/init.d/mysql stop secondary_srv:~# umount /opt/drbd/ secondary_srv:~# drbdadm secondary all
primary_srv:~# drbdadm primary all primary_srv:~# mount /opt/drbd primary_srv:~# /etc/init.d/mysql start Starting MySQL database server: mysqld. Checking for corrupt, not cleanly closed and upgrade needing tables.. primary_srv:~#
pour finir, on démarre les systèmes HeartBeat :
primary_srv:~# /etc/init.d/heartbeat start secondary_srv:~# /etc/init.d/heartbeat start
Ces deux commandes peuvent prendre un peu de temps, n’hésitez pas à regarder les deux /var/log/ha-log
Le primaire va binder une interface eth0:0 qui sera l’adresse utilisée pour le service en failover. Pour tester, depuis une machine du noc :
Si le message est connection refused il y a un problème avec MySQL.
Pensez à répliquer les configurations sur les deux nodes
Coupons le primaire et attentons une bonne dizaine de seconde
primary_srv:~# /etc/init.d/heartbeat stop Stopping High-Availability services: Done.
Réactivons le primaire :
primary_srv:~# /etc/init.d/heartbeat start
Migration DRBD 0.7 vers 0.8
Init
#> /etc/init.d/heartbeat stop #> mount #> drbdadm secondary all #> cat /proc/drbd (Secondary) #> drbdadm down all #> rmmod drbd
- Installer la version 8 de drbd (drbd8-appli, etc...)
#> drbdadm create-md all v08 Magic number not found md_offset 161413591040 al_offset 161413558272 bm_offset 161408630784 Found reiser filesystem which uses 157155328 kB current configuration leaves usable 157625616 kB ==> This might destroy existing data! <== Do you want to proceed? [need to type 'yes' to confirm] yes v07 Magic number not found v08 Magic number not found You want me to create a v08 style flexible-size internal meta data block. There apears to be a v07 fixed-size internal meta data block already in place on /dev/drbd0 at byte offset 874560651226 Convert the existing v07 meta-data to v08? [need to type 'yes' to confirm] yes Converting meta data... Writing meta data... New drbd meta data block sucessfully created.
A ce point, drbdadm détecte la version 0.7, qui est toujours en place, répondre "Yes" à la premier question, pour upgrade les metadata en format DRBD8. Ensuite répondre "yes" pour convertir le format en version 8.
Une fois terminé, charger les nouveaux modules :
#> modprobe drbd #> cat /proc/drbd
#> drbdadm up all
Puis :
#> cat /proc/drbd

