DRBD - автоматическое восстановление после отключения
У меня есть кластер высокой доступности, который настроен с ресурсом DRBD.
Master/Slave Set: RVClone01 [RV_data01]
Masters: [ rvpcmk01-cr ]
Slaves: [ rvpcmk02-cr ]
Я выполняю тест, который отключает один из сетевых адаптеров, которые подключаются между сетевыми интерфейсами DRBD (например, отключение сетевого адаптера). Теперь кластер отображает статусы, что все нормально, НО состояние DRBD при запуске "drbd-Overview" показывает на основном сервере:
[root@rvpcmk01 ~]# drbd-overview
0:drbd0/0 WFConnection Primary/Unknown UpToDate/DUnknown /opt ext4 30G 13G 16G 45%
и на вторичном сервере:
[root@rvpcmk02 ~]# drbd-overview
0:drbd0/0 StandAlone Secondary/Unknown UpToDate/DUnknown
Теперь у меня есть несколько вопросов: 1. Почему кластер не знает о проблеме с DRBD? 2. Почему, когда я снова подключил сетевой адаптер к UP и снова подключил соединение между DRBD, DRBD не обработал этот сбой и не синхронизировал DRBD, когда соединение в порядке? 3. В этой статье я видел статью, в которой говорилось о "Решить сплит-мозг DRBD" - https://www.hastexo.com/resources/hints-and-kinks/solve-drbd-split-brain-4-steps/ В статье объясняется, как преодолеть проблему отключения и повторной синхронизации DRBD.НО как я должен знать, что такого рода проблемы существуют?
Надеюсь, я четко объясню свой случай и предоставлю достаточно информации о том, что у меня есть и что мне нужно...
1 ответ
1) Вы не используете устройства ограждения /STONITH в Pacemaker или DRBD, поэтому ничего не происходит, когда вы отключаете сетевой интерфейс, который использует DRBD. Это не тот сценарий, на который Pacemaker будет реагировать, не определяя политики ограждения в DRBD и устройства STONITH в Pacemaker.
2) Скорее всего, вы используете только одно кольцо для коммуникаций Corosync (такое же, как устройство DRBD), что заставит вторичное устройство перейти в первичное состояние (вводит разделенный мозг в DRBD), пока соединения кластера не будут повторно подключены и не осознают, что они есть два мастера, понижение одного до среднего. Опять же, ограждение /STONITH предотвратит / справится с этим.
3) Вы можете настроить обработчик уведомлений о разделении мозга в вашей конфигурации DRBD.
Установив STONITH/ устройства ограждения в Pacemaker, вы добавите следующие определения в конфигурацию DRBD, чтобы "исправить" все проблемы, упомянутые в вашем вопросе:
resource <resource>
handlers {
split-brain "/usr/lib/drbd/notify-split-brain.sh root";
fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh";
...
}
disk {
fencing resource-and-stonith;
...
}
...
}
Настройка ограждения /STONITH в Pacemaker слишком зависит от вашего аппаратного / программного обеспечения, чтобы я мог дать вам рекомендации по настройке этого для вашего кластера. Это должно направить вас в правильном направлении: http://clusterlabs.org/doc/crm_fencing.html
Надеюсь, это поможет!