Восстановление DRBD после split brain

Oct 29, 2015 18:54 · 337 words · 2 minute read drbd

DRBD — распределённое реплицируемое блочное устройство, которое используется для построения отказоустойчивых кластеров под управлением ОС Linux. DRBD отражает все операции с блочным устройством по сети, поэтому принято считать что это сетевой RAID-1.

Больше информации о DRBD можно найти здесь, а мы в данной статье разберемся как восстанавливать блочное устройство после split brain.

Из-за возникновения split brain на обоих хостах DRBD-ресурсы находятся в режиме Primary, а состояние соединения StandAlone. В /var/log/kern.log можно увидеть такие строки:

kernel: block drbd0: Split-Brain detected, dropping connection!

Смотрим состояние DRBD на первом хосте:

cat /proc/drbd 
version: 8.3.11 (api:88/proto:86-96)
srcversion: F937DCB2E5D83C6CCE4A6C9 
 0: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown C r-----
    ns:806339152 nr:7553228 dw:815132460 dr:1840430365 al:34434471 bm:15105 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

 2: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown C r-----
    ns:499963084 nr:1132592 dw:501095676 dr:857543433 al:2345239 bm:941 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

на втором:

cat /proc/drbd 
version: 8.3.11 (api:88/proto:86-96)
srcversion: F937DCB2E5D83C6CCE4A6C9 
 0: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown C r-----
    ns:0 nr:1727749652 dw:1727749652 dr:0 al:0 bm:2405 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

 2: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown C r-----
    ns:0 nr:348016128 dw:348016128 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

Исправить данную ситуацию можно с помощью следующих шагов:

  • перевести один из хостов в режим Secondary и отменить на нем все внесенные изменения, выполнив следующие команды:
drbdadm secondary all
drbdadm disconnect all
drbdadm -- --discard-my-data connect all
  • второй хост перевести в режим Primary и отключить/подключить ресурсы такими командами:
drbdadm primary all
drbdadm disconnect all
drbdadm connect all

Проблема решена, после завершения синхронизации состояние DRBD на первом хосте:

cat /proc/drbd 
version: 8.3.11 (api:88/proto:86-96)
srcversion: F937DCB2E5D83C6CCE4A6C9 
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:811209960 nr:7553228 dw:820003268 dr:1842586049 al:34451063 bm:15105 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

 2: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:500025956 nr:1132592 dw:501158548 dr:857725017 al:2345912 bm:941 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

на втором:

cat /proc/drbd 
version: 8.3.11 (api:88/proto:86-96)
srcversion: F937DCB2E5D83C6CCE4A6C9 
 0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
    ns:0 nr:1732429880 dw:1732429880 dr:0 al:0 bm:2405 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

 2: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
    ns:0 nr:348078352 dw:348078352 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
tweet Share