Eleições do ReplicaSet do MongoDB quando alguns nós estão inativos

1

Estou tentando entrar no conceito do ReplicaSet e encontrei algo estranho na documentação do mongoDB:

For a node to be elected primary, it must receive a majority of votes. This is a majority of all votes in the set: if you have a 5-member set and 4 members are down, a majority of the set is still 3 members (floor(5/2)+1). Each member of the set receives a single vote and knows the total number of available votes.

If no node can reach a majority, then no primary can be elected and no data can be written to that replica set (although reads to secondaries are still possible).

(taken from here)

Então, se eu entendi direito, no caso de 5 membros mencionado, o único nó que ainda está em pé NÃO SERÁ escolhido como primário e todo o conjunto não receberá nenhuma escrita? e isso é mesmo se esse único nó fosse o último primário antes das eleições?

Se for verdade, pode haver muitos casos menos radicais que terminarão com um conjunto degenerado. Como podemos evitar isso?

    
por SecondThought 31.05.2012 / 10:16

1 resposta

2

A regra da maioria destina-se a evitar que vários nós únicos (isolados em pensamento) afirmem ser primários ao mesmo tempo. As estratégias para evitar isso dependerão da sua arquitetura.

Como alguns exemplos - você pode ter árbitros em cada data center ou zona para que você possa adicioná-los para formar a maioria, você pode reconfigurar o conjunto no caso de um "desastre" para incluir apenas 3 nós ao invés de 5 , permitindo assim que 2 formem uma maioria, etc. Ou, você pode reiniciar a única instância mongod restante (se tal coisa existir) como um standalone sem opções de réplica e usá-la dessa maneira até que você restaure seu set.

Ao projetar para recuperação de desastres ou failover em várias zonas, o importante é manter a regra da maioria em mente ao projetá-la.

    
por 01.06.2012 / 15:54