Одно из наиболее проблемных мест всех кластерных систем – обрыв соединения между серверами. Оба сервера считают что их напарник выключился и начинают выполнять соответствующие действия. То же самое происходит и с DRBD дисками, после потери соединения они переходят в состояние StandAlone.

1. Признаки

В логах видим

block drbd0: Split-Brain detected but unresolved, dropping connection!
block drbd0: helper command: /sbin/drbdadm split-brain minor-0
block drbd0: helper command: /sbin/drbdadm split-brain minor-0 exit code 0 (0x0)
block drbd0: conn( WFReportParams -> Disconnecting )
block drbd0: error receiving ReportState, l: 4!
block drbd0: asender terminated
block drbd0: Terminating asender thread
block drbd0: Connection closed
block drbd0: conn( Disconnecting -> StandAlone )
block drbd0: receiver terminated
block drbd0: Terminating receiver thread

Состояние на сервере 1:

[root@srv1 ~]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:31
0: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown C r----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

Состояние на сервере 2:

[root@srv2 ~]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:31
0: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown   r----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

2. Исправляем

Для конфигурации DRBD с primary/prymary самый важный момент – выбор сервера с наиболее старыми и неактуальными данными. В моем случае это серевер 1 (srv1).

На сервере 1 переводим r0 в состояние secondary

[root@srv1 ~]# drbdadm secondary r0

Запускаем подключение к r0 с параметром –discard-my-data,

[root@srv1 ~]# drbdadm -- --discard-my-data connect r0

Если выходит следующее сообщение

0: Failure: (125) Device has a net-config (use disconnect first)
Command 'drbdsetup 0 net 192.168.1.117:7789 192.168.1.195:7789 C --set-defaults --create-device --allow-two-primaries --discard-my-data' terminated with exit code 10

Отключаем r0 и повторяем операцию.

[root@srv1 ~]# drbdadm disconnect r0
[root@srv1 ~]# drbdadm -- --discard-my-data connect r0

На втором сервере запускаем

[root@srv2 ~]# drbdadm connect r0

Проверяем состояние, в случае если данные не синхронизированы начнется синхронизация разделов.

[root@srv2 ~]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:31
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

По окончании процедуры на первом сервере возвращаем раздел drbd в состояние primary

[root@srv1 ~]# drbdadm primary r0

Проверяем DRBD

[root@srv1 ~]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:31
0: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

Все впорядке, можно работать.

[root@srv1 ~]# drbdadm — –discard-my-data connect r0
0: Failure: (125) Device has a net-config (use disconnect first)
Command ‘drbdsetup 0 net 192.168.1.117:7789 192.168.1.195:7789 C –set-defaults –create-device –allow-two-primaries –discard-my-data’ terminated with exit code 10
[root@srv1 ~]# drbdadm disconnect r0
[root@srv1 ~]# drbdadm — –discard-my-data connect r0

Один комментарий : “DRBD primary/primary обрыв сетевого соединения.”

  1. Привет, столкнулся с такой же проблемой. Не могли бы вы подсказать как определить сервер на котором на данный момент менее свежие, не актуальные данные?

Оставить комментарий