Конфигурация DRBD для автоматического разрешения любого расщепления мозга

Конфигурация DRBD для автоматического разрешения любого расщепления мозга

Я использую кластер из 2 узлов с DRBD (активный/пассивный), управляемый службой drbd systemd и небольшим скриптом, который монтирует тома всякий раз, когда ресурс становится основным.

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

Я попробовал следующую конфигурацию (где pri-lost-after-sbнаходится "reboot")

after-sb-0pri discard-younger-primary;
after-sb-1pri discard-secondary;
after-sb-2pri call-pri-lost-after-sb;

и on-suspended-primary-outdated force-secondaryнекоторые другие комбинации.

Но я всегда нахожу сценарий, когда кластер попадает в плохие состояния и не восстанавливается после split brain. Обычно я попадаю StandAloneна узлы и force-io-failuresна вторичный (так что после очередного сбоя первичного, этот вторичный не будет работать, даже если подключен).

Могу ли я что-то еще сделать, чтобы повысить надежность этой настройки, учитывая, что для меня приоритетнее бесперебойная работа сервиса, а не предотвращение потери данных?

решение1

В свое время я много раз пытался настроить подобный кластер. Это было до тех пор, пока я не понял, что DRBD сломан по своей сути и имеет второе название «split brain». В DRBD9 все стало немного лучше (только по сравнению с 8.xx, которая была кошмаром), но его все еще нельзя использовать в производстве. Я вижу только одно решение — сэкономить время и перейти на что-то более надежное. Например, Ceph.

Связанный контент