Разделенный мозг в кластере DRBD и Pacemaker

Вопрос или проблема

Я хотел бы представить вашему вниманию следующую ситуацию, которая в настоящее время происходит на нашем активном-пассивном кластере (DRBD, Pacemaker, Corosync, PostgreSQL).

ОС: Ubuntu server 14.04 x64
DRBD: 8.4
Pacemaker: 1.1.10
Corosync: 2.3.3
PostgreSQL: 9.3

Вот в чем проблема:
Когда основной узел выходит из строя, вторичный выбирается в качестве основного. Проблема возникает в момент повторного подключения предыдущего основного узла, который сразу попадает в ситуацию “разделенного разума” (split-brain), когда ему следует стать вторичным. Вот подробная последовательность событий и соответствующие логи:

A: Основной, B: Вторичный

1- A выходит из строя

2- B становится ОСНОВНЫМ

3- A снова запускается –> РАЗДЕЛЕННЫЙ РАЗУМ (Мы предположили, что в этом случае переключение должно происходить автоматически)

ЛОГИ из A:

Jan 28 16:15:11 node1 kernel: [  538.025422] block drbd0: helper command: /sbin/drbdadm initial-split-brain minor-0
Jan 28 16:15:11 node1 kernel: [  538.026185] block drbd0: helper command: /sbin/drbdadm initial-split-brain minor-0 exit code 0 (0x0)
Jan 28 16:15:11 node1 kernel: [  538.026194] block drbd0: Split-Brain detected but unresolved, dropping connection!

Статус DRBD:

service drbd status
drbd driver loaded OK; device status:
version: 8.4.3 (api:1/proto:86-101)
srcversion: F97798065516C94BE0F27DC 
m:res  cs          ro                 ds                   p       mounted  fstype
0:pg   StandAlone  Secondary/Unknown  Consistent/DUnknown  r-----

Насколько я вижу, кажется, что DRBD нарушил состояние этого узла.

Мои вопросы:

1- Правильно ли я предполагаю, что в событии 3 возвращающийся узел может быть автоматически подключен к кластеру?

2- Если это возможно, пожалуйста, скажите, как.

1- Правильно ли я предполагаю, что в событии 3 возвращающийся узел может быть автоматически подключен к кластеру?

Да, это возможно. DRBD не должен самостоятельно становиться основным, если в конфигурации ресурса этого не указано; проверьте, чтобы определение ‘startup { become-primary-on }’ не было установлено в конфигурациях ресурсов.

2- Если это возможно, пожалуйста, скажите, как.

Убедитесь, что следующее верно:

a. ‘drbd’ не настроен на автоматический запуск при загрузке (‘chkconfig drbd off’ в RHEL, ‘update-rc.d drbd disable’ в Debian).

b. DRBD не должен быть настроен на самостоятельное становление основным (как упоминалось выше).

В руководстве пользователя DRBD есть раздел о конфигурировании DRBD для использования с Pacemaker, который может помочь, если мой ответ выше не решит проблему: https://drbd.linbit.com/users-guide/ch-pacemaker.html

Ответ или решение

Ответ на вопрос о ситуации с разделением мозга в кластере DRBD и Pacemaker

Вы описали ситуацию, в которой ваша кластерная система на базе DRBD, Pacemaker и Corosync сталкивается с проблемой разделения мозга (split-brain) после перезагрузки первичного узла. Давайте рассмотрим вашу ситуацию более подробно.

Описание проблемы

При работе с активным-пассивным кластером, когда первичный узел (A) выходит из строя, вторичный узел (B) становится первичным. Если узел A затем снова запускается, он вызывает ситуацию разделения мозга, что может привести к повреждению данных и необходимости вмешательства администратора для разрешения конфликта.

Вопрос 1: Верно ли, что при событии 3 возвращающийся узел может автоматически присоединиться к кластеру?

Да, ваше предположение верно. В идеале, после восстановления первичного узла, он должен автоматически присоединиться к кластеру в качестве вторичного, а не вызывать конфликт. Однако для этого требуется правильная конфигурация DRBD и Pacemaker, чтобы избежать автоматической установки узла A в статус первичного после его восстановления.

Вопрос 2: Как это можно реализовать?

Чтобы обеспечить автоматическое присоединение узла A к кластеру в качестве вторичного, выполните следующие шаги:

  1. Проверьте конфигурацию DRBD:

    • Убедитесь, что в конфигурации ресурса DRBD отсутствует директива startup { become-primary-on }, которая разрешает автоматическую активацию узла в статусе первичного. Это может привести к возникновению разделения мозга.
  2. Настройка и проверка служб:

    • Убедитесь, что служба DRBD не настроена на автоматический запуск при загрузке системы. Это можно сделать с помощью следующих команд:
      • Для RHEL:
        chkconfig drbd off
      • Для Debian:
        update-rc.d drbd disable
  3. Использование Pacemaker для управления DRBD:

    • Убедитесь, что Pacemaker полностью управляет состояниями узлов и ресурсами. Pacemaker должен обрабатывать переход между первичным и вторичным состояниями узлов по возможности автоматически.
    • Проверьте настройки работы Pacemaker с DRBD, чтобы гарантировать возрастаение устойчивости к разделению мозга. В документации DRBD есть раздел, посвященный интеграции с Pacemaker, который может оказать значительное влияние на ваше решение. Ссылка на него: Документация DRBD о Pacemaker
  4. Тестирование конфигурации:

    • После внесения изменений протестируйте сценарий, когда узел A выходит из строя и восстанавливается. Убедитесь, что он корректно присоединяется как вторичный узел.
  5. Мониторинг состояния:

    • Обеспечьте постоянный мониторинг состояния вашего кластера, чтобы оперативно реагировать на возникающие события и избегать ситуации разделения мозга.

Заключение

Правильная настройка конфигураций DRBD и Pacemaker при работе в рамках активного-пассивного кластера имеет критическое значение для надежности и устойчивости вашей системы. Следуя предложенным шагам, вы сможете избежать проблем с автоматическим включением узла в статус первичного и, как следствие, сохранить целостность данных в вашем кластерном окружении.

Оцените материал
Добавить комментарий

Капча загружается...