Я работаю с drbd около года и сейчас рву волосы в отчаянии. Каждый раз, когда происходит сбой в сети (что, к сожалению, часто встречается в среде, в которой я работаю), критическая пара серверов разделяет мозги, и мне приходится вмешиваться вручную. Для некоторой предыстории эти серверы находятся в конфигурации главный-подчиненный и выполняют операции хеширования с файлами перед их распространением на другие серверы по всему миру. Они получают новые файлы каждые 2-5 минут, и они всегда должны быть синхронизированы, чтобы в случае сбоя службы другой сервер не обслуживал устаревшие данные. Хотя эта пара серверов еще не запущена в производство, это разочаровывает, поскольку приводит к тому, что устаревшие данные появляются на одном узле каждый раз, когда возникает проблема с сетью. (тревожно часто, к сожалению)
Как сделать так, чтобы drbd не разделял мозг каждый раз, когда возникает проблема с сетью? Или автоматизировать восстановление? Вот конфигурация моих ресурсов drbd. У меня это контролируется стеком cman.
resource foo {
handlers {
split-brain "/usr/local/bin/notify-split-brain.sh root";
}
protocol C;
meta-disk internal;
device /dev/drbd0;
net {
after-sb-0pri discard-younger-primary;
after-sb-1pri discard-secondary;
after-sb-2pri disconnect;
}
on nodea {
disk /dev/sdb;
address x.x.x.1:7789;
}
on nodeb {
disk /dev/sdb;
address x.x.x.2:7789;
}
}
Это работает в CentOS Linux версии 7.2.1511 (Core).