Comment résoudre un Split Brain sur DRBD :
Sur le serveur primaire on observe l’état du DRBD :
server1:~# cat /proc/drbd
version: 0.7.21 (api:79/proto:74)
SVN Revision: 2326 build by root@server1, 2011-08-04 19:30:51
0: cs:StandAlone st:Primary/Unknown ld:Consistent
ns:534782720 nr:6220 dw:534944920 dr:291509157 al:33812 bm:47 lo:0 pe:0 ua:0 ap:0
Sur le serveur secondaire on a :
server2:~# cat /proc/drbd
version: 0.7.21 (api:79/proto:74)
SVN Revision: 2326 build by root@server2, 2011-08-04 19:31:09
0: cs:StandAlone st:Secondary/Unknown ld:Consistent
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0
Donc on observe bien que les serveurs sont en standalone et ne sont plus synchronisés.
Cependant on observe que le serveur primaire fonctionne toujours.
On va donc effacer toutes les données sur le serveur secondaire et tout resynchronisé depuis le serveur primaire.
Pour les étapes qui suivent, il faut s’assurer d’être sur le bon serveur avant de continuer.
On coupe le drbd sur le serveur secondaire :
server2:~# /etc/init.d/drbd stop
On redémarre drbd sur le serveur primaire :
server1:~# drbdadm connect all
server1:~# cat /proc/drbd
version: 0.7.21 (api:79/proto:74)
SVN Revision: 2326 build by root@server1, 2011-08-04 19:39:51
0: cs:WFConnection st:Primary/Unknown ld:Consistent
ns:0 nr:0 dw:537240380 dr:291534637 al:34125 bm:360 lo:0 pe:0 ua:0 ap:0
On a remis le serveur primaire en attente de connexion.
On retourne sur le serveur secondaire :
server2:~# rmmod drbd
ERROR: Module drbd does not exist in /proc/modules
server2:~# modprobe drbd
server2:~# drbdadm attach r0
server2:~# drbdadm invalidate r0
server2:~# drbdadm adjust r0
Après quelques minutes, on observe que la synchronisation des deux serveurs est en cours :
server1:~# cat /proc/drbd
version: 0.7.21 (api:79/proto:74)
SVN Revision: 2326 build by root@server1, 2011-08-04 19:45:51
0: cs:SyncSource st:Primary/Secondary ld:Consistent
ns:24768676 nr:0 dw:537576684 dr:315968437 al:34170 bm:1852 lo:0 pe:0 ua:0 ap:0
[=======>............] sync'ed: 37.5% (39870/63773)M
finish: 1:04:55 speed: 10,476 (9,448) K/sec
server2:~# cat /proc/drbd
version: 0.7.21 (api:79/proto:74)
SVN Revision: 2326 build by root@server2, 2011-08-04 19:46:09
0: cs:SyncTarget st:Secondary/Primary ld:Inconsistent
ns:0 nr:24778832 dw:24778832 dr:0 al:0 bm:5479 lo:6 pe:206 ua:6 ap:0
[=======>............] sync'ed: 37.5% (39860/63773)M
finish: 1:04:59 speed: 10,412 (9,448) K/sec
A la fin de la synchronisation, les deux serveurs doivent être dans l’état suivant :
server1:~# cat /proc/drbd
version: 0.7.21 (api:79/proto:74)
SVN Revision: 2326 build by root@server1, 2011-08-04 19:55:51
0: cs:Connected st:Primary/Secondary ld:Consistent
server2:~# cat /proc/drbd
version: 0.7.21 (api:79/proto:74)
SVN Revision: 2326 build by root@server2, 2011-08-04 19:56:09
0: cs:Connected st:Secondary/Primary ld:Consistent