Failover automático do MongoDB entre 2 data centers

Failover automático do MongoDB entre 2 data centers

Se eu implantar um conjunto de réplicas do MongoDb em apenas 2 data centers, se um data center inteiro falhar, poderá haver failover automático para o outro data center?

Considere a situação em que 1 data center possui um primário, um secundário e um árbitro, e o segundo data center possui 2 membros secundários. Essencialmente, um conjunto de réplicas de 5 membros.

Se o data center 2 cair, ainda haverá 3 membros no conjunto de réplicas do data center 1. Isso é ótimo.

Ao contrário, se o data center 2 permanecer ativo e o data center 1 ficar inativo, restarão apenas 2 membros do conjunto de réplicas de 5 membros. Isso não é suficiente para que qualquer um dos secundários vote para se tornar primário.

Isso está correto? Se não, o que estou fazendo de errado.

Se isso não for possível, avise-me para que possamos explorar outras opções.

Adicionar um terceiro data center para abrigar o árbitro não é uma opção.

Responder1

A resposta à sua pergunta é que não é possível fazer apenas com dois locais.

A razão pela qual isso não é possível pode ser explicada da seguinte forma: Se ambos os locais estiverem totalmente funcionais, mas a conexão de rede entre os dois estiver com defeito, apenas um deles poderá permanecer funcional. Não é aceitável que ambos os locais elejam simultaneamente um primário neste caso.

Não há como um local saber a diferença entre o outro local estar completamente inativo e o outro local estar ativo, mas a conexão de rede entre os dois estar inativa.

Portanto, se cada local pudesse eleger independentemente um primário quando o outro local estivesse inoperante, a consequência seria que, no caso de uma interrupção da rede, seria possível que dois primários existissem simultaneamente. Ter duas primárias é um cenário inaceitável, e é por isso que apenas um dos dois locais seria capaz de eleger uma primária.

Ter três locais será suficientese você fizer suposições sobre o comportamento das falhas.Qualquer solução que funcione sem fazer suposições sobre falhas exigirá pelo menos quatro locais para tolerar a interrupção de um único local. Este requisito decorre de um dos teoremas-chave na área dos acordos bizantinos.

Responder2

Uma opção possível é ter um primário e um secundário no primeiro data center, 2 secundários no segundo data center e você pode ter o árbitro em um terceiro data center.

informação relacionada