Estou curioso sobre a seguinte situação ao configurar um cluster MongoDB.
2 Datacenters, 2 nós em cada datacenter para um total de um replicaset de 4 nós. Um dos dois datacenters ficou indisponível por qualquer motivo, bloqueando o primário e um dos secundários.
Por seção de tolerância a falhas de https://docs.mongodb.com/manual/core/replica-set-architectures/ : Preciso de no mínimo 3 votos para eleger um novo primário, mas terei apenas 2 eleitores sobreviventes.
Não consigo estender para um terceiro datacenter.
Como posso configurar o cluster para resistir a uma falha do datacenter e continuar gravando no datacenter sobrevivente?
Você precisa de outro membro do conjunto de réplicas (ou árbitro) em um terceiro data center. Mas se você não puder estender para um terceiro centro, adicione o quinto membro do conjunto de réplicas ao seu centro de dados principal. Seu centro de dados de backup permanecerá com dois membros.
Se o centro de dados de backup cair, o centro principal permanecerá ativo e as operações do conjunto de réplicas continuarão.
Se o centro principal ficar inativo, as operações do conjunto de réplicas serão somente leitura e você precisará executar uma intervenção manual.
Referências:
Implantar um conjunto de réplica geograficamente redundante
Conjuntos de réplicas distribuídos em dois ou mais data centers
Nesse cenário, seria necessário remover a capacidade de votação dos nós perdidos da configuração do servidor dos nós restantes. Isso reduz o tamanho efetivo do cluster para 2, onde um sistema prioritário pode criar um quorum e eleger um primário.
Exemplo:
Infelizmente, isso exige intervenção manual no momento da falha do datacenter para restaurar o serviço para qualquer coisa que dependa da gravação nesse banco de dados. Também requer intervenção manual para restaurar o cluster ao estado inicial depois que os nós perdidos retornarem ao serviço e se recuperarem (para devolver a eles os privilégios de votação).