loremOS Admin

"Системное администрирование – это культура"

DRBD. Split-brain

Опубликовано 11th Jul 2018 17:57:48 в категории Linux

Здравствуй, дорогой друг. Я не так давно попал в очень сложную ситуацию со своими серверами, которые синхронизируются по сети с помощью DRBD. Они "заболели" Split-brain'ом. Что это? Расскажу простым языком. У нас есть серверы (ноды), предположим, ha1 и ha2. Возникает ситуация, когда ha1 и ha2 "живы" и работают, но связь между ними прервалась. При этом каждая из них продолжает принимать запросы извне, либо одна из двух или вообще ни одна из них запросы не принимает (зависит от ситуации), но не может уведомить вторую ноду об этом и вообще о любых изменениях. Для каждой ноды все выглядит так, будто вторая нода вовсе померла, и она действует в одиночку. Вот эту ситуацию и называют «split-brain» - разделение "мозга" на два полушария, каждое из которых считает себя единственным хозяином ситуации. Шизофрения, в общем. 
Ну так вот, возникла у меня как раз такая ситуация. Ноды с DRBD друг друга потеряли, и оба стали primary. Решить проблему можно следующим образом (последовательность ВАЖНА!):

  1. Одну ноду (лучше ту, которая должна быть Slave) необходимо перевести в Secondary (если обе ноды перешли в Secondary, то пропускаем)
    drbdadm secondary all
  2. На той же ноде отключаем DRBD ресурсы
    drbdadm disconnect all
  3. На той же ноде отменим все внесенные изменения
    drbdadm -- --discard-my-data connect all
  4. На вторую ноду перевести в режим Primary (если она не в нём)
    drbdadm primary all
  5. Так же на второй ноде отключим/подключим ресурсы 
    drbdadm disconnect all
    drbdadm connect all

Профит!


Поделиться:


Теги