Configuração do DRBD para resolver automaticamente qualquer divisão cerebral

Configuração do DRBD para resolver automaticamente qualquer divisão cerebral

Estou executando um cluster de 2 nós com DRBD (ativo/passivo) gerenciado pelo serviço drbd systemd e um pequeno script que monta volumes sempre que um recurso se torna primário.

Quero configurar o DRBD de forma que ele sempre resolva qualquer divisão cerebral e sempre tenha pelo menos um nó primário e capaz de servir em qualquer caso, desde que ambas as máquinas não estejam inoperantes.

Eu tentei a seguinte configuração (onde pri-lost-after-sbestá "reboot")

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

e on-suspended-primary-outdated force-secondarye algumas outras combinações.

Mas sempre encontro um cenário em que o cluster entra em estado ruim e não se recupera de um cérebro dividido. Normalmente estou entrando StandAlonenos nós e force-io-failuresno secundário (então depois de outra falha do primário, esse secundário não funcionará mesmo se estiver conectado).

Há mais alguma coisa que eu possa fazer para melhorar a robustez dessa configuração, considerando que priorizo ​​fortemente o tempo de atividade do serviço e não a prevenção de perda de dados?

Responder1

Antigamente, tentei várias vezes configurar um cluster semelhante. Isso foi até que eu entendi que o DRBD foi quebrado por design e tem como segundo nome "cérebro dividido". No DRBD9 as coisas melhoraram um pouco (apenas em comparação com o 8.xx que foi um pesadelo), mas ainda não pode ser usado em produção. Vejo apenas uma solução: economize seu tempo e migre para algo mais confiável. Por exemplo, Ceph.

informação relacionada