dijous, 9 de maig de 2013

Resolving a DRBD Split-Brain

Per resoldre un Split-Brain en una base de dades amb Heartbeat + DRBD seguirem els següents passos.

Indentificar el problema:


Quan ocorrre un Split-Brain el sistema demana la intervenció humana per resoldre el problema. Apareix la següent entrada en el /var/log/messages i es marca l'estat de DRBD com a desconegut. La següent linea mostra l'entrada del log de sistema /var/log/messages.
Split-Brain detected, dropping connection!
Hi ha dos formes de consultar l'estat de DRBD. Una forma es utilitzant drbd-overview i l'altra es realitzar un cat del fitxer /proc/drbd.

El següent exemple mostra l'eixida d'aquestes dues comandes en la màquina que no ha detectat el split-brain.
root@home-1#drbd-overview
Mostra el següent:
  0:mysql  WFConnection Primary/Unknown UpToDate/DUnknown C r----- \ 
         /var/lib/mysql ext4 19G 2.5G 16G 14%
Si executem
root@home-1#cat /proc/drbd
Trobem el següent:
version: 8.3.11 (api:88/proto:86-96)
GIT-hash: 0de839cee13a4160eed6037c4bddd066645e23c5 build by root@home-1, \
    2013-05-09 12:33:07
 0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r-----
    ns:0 nr:0 dw:113524 dr:3276073 al:33 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 \
    wo:b oos:352532

El estat de la primera màquina home-1 esta enumerat dalt. La segona màquina home-2 que ha identificat l'Split-Brain, quedaria com segueix:
root@home-2#cat /proc/drbd
version: 8.3.11 (api:88/proto:86-96)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@home-2, \
    2013-05-09 10:09:38
 0: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown   r---
    ns:0 nr:5405948 dw:150302972 dr:976818256 al:137 bm:751 lo:0 pe:0 \ 
    ua:0 ap:0 ep:1 wo:b oos:0
Si revisem ambdós maquines trobarem una màquina que apareix amb estat WFConnection i l'altra apareix amb l'estat StandAlone.

Resoldre el problema:


Per corregir el problema procedirem com següeix: Ens hem d'assegurar que el dimoni del heartbeat estiga parat en ambdós hosts. Després utilitzarem les següents comandes en la màquina amb estat StandAlone, en el nostre cas home-2:
root@home-2#drbdadm disconnect <resource>
root@home-2#debdadm secondary <resource>
root@home-2#drbdadm -- --discard-my-data connect <resource>
A l'altra màquina home-1 executarem:
root@home-1#drbdadm connect <resource>
Al fixer de configuració drbd.conf o dins del directory drbd.d trobarem el nom del <resource>,aquest s'especifica en el fitxer de configuració.

Amb aquestes comandes es sol·luciona el problema. Si realitzem ara un comprobació veurem que ja torna a funcionar:
root@home-1#cat /proc/drbd
version: 8.3.11 (api:88/proto:86-96)
GIT-hash: 0de839cee13a4160eed6037c4bddd066645e23c5 build by root@home-1, \
    2013-05-09 12:33:07
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:135180 nr:0 dw:3791924 dr:282584 al:8 bm:41 lo:0 pe:0 ua:0 ap:0 \
    ep:1 wo:b oos:0
 root@home-1#drbd-overview
  0: mysql  Connected Primary/Secondary UpToDate/UpToDate C r----- \ 
     /var/lib/mysql ext4 19G 2.5G 16G 14%
Una volta la base de dades estiga en l'estat correcte arranquem de nou  el heartbeat als 2 servidores.

Enllaços:


http://www.drbd.org/users-guide/s-resolve-split-brain.html
http://www.drbd.org/users-guide/ch-admin.html

Cap comentari:

Publica un comentari a l'entrada