Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Eleições do conjunto de réplicas

Nesta página

  • Fatores e condições que afetam as eleições
  • Membros votantes
  • Membros não votantes

Os conjuntos de réplicas usam eleições para determinar qual membro do conjunto se tornará primária. Os conjuntos de réplicas podem desencadear uma eleição em resposta a uma variedade de eventos, como:

No diagrama a seguir, o nó primário ficou indisponível por mais tempo que o configured timeout e aciona o processo de failover automático. Uma das secundárias restantes solicita uma eleição para selecionar uma nova primária e retomar automaticamente as operações normais.

Diagrama de uma eleição de um novo primário. Em um conjunto de réplicas de três membros com dois secundários, o primário se torna inacessível. A perda de uma primária desencadeia uma eleição em que um dos secundários se torna o novo primário.
clique para ampliar

O conjunto de réplicas não pode processar operações de escrita até que a eleição seja concluída com sucesso. O conjunto de réplicas pode continuar a servir queries de leitura se essas queries estiverem configuradas para serem executadas em secundários.

O tempo médio antes de um cluster eleger um novo primário normalmente não deve exceder 12 segundos, assumindo o padrão replica configuration settings. Isso inclui o tempo necessário para marcar o primary como indisponível , chamar e concluir umaeleição . Você pode ajustar esse período modificando a opção de configuração de replicação do settings.electionTimeoutMillis . Fatores como a latência da rede podem prolongar o tempo necessário para que as eleições de conjuntos de réplicas sejam concluídas, o que, por sua vez, afeta o tempo em que o cluster pode operar sem um primário. Esses fatores dependem da arquitetura específica de seus clusters.

A lógica de conexão do seu aplicativo deve incluir tolerância para failovers automáticos e as eleições subsequentes. Os drivers do MongoDB podem detectar a perda do primário e repetir automaticamente determinadas operações de gravação uma única vez, fornecendo tratamento adicional integrado de failovers e eleições automáticas:

Drivers compatíveis permitem gravações repetíveis por padrão

O protocolVersion: 1 de replicação reduz o tempo de failover do conjunto de réplicas e acelera a detecção de várias primárias simultâneas.

Você pode usar catchUpTimeoutMillis para priorizar failovers mais rápidos e preservação de gravações w:1.

Para obter mais informações sobre pv1, consulte Versão do protocolo do conjunto de réplicas.

Os membros do conjunto de réplicas enviam heartbeats (pings) uns aos outros a cada dois segundos. Se um heartbeat não retornar dentro de 10 segundos, os outros membros marcam o membro inadimplente como inacessível.

Depois que um conjunto de réplicas tiver uma primária estável, o algoritmo de eleição fará uma tentativa de "melhor esforço" para que a secundária com o priority mais alto disponível chame uma eleição. A prioridade dos membros afeta tanto o momento como o resultado das eleições; as secundárias com maior prioridade convocam eleições relativamente mais cedo do que as secundárias com menor prioridade e também têm maior probabilidade de vencer. No entanto, uma instância de prioridade mais baixa pode ser escolhida como primária por períodos breves, mesmo que uma secundária de prioridade mais alta esteja disponível. Os membros do conjunto de réplicas continuam a convocar eleições até que o membro de maior prioridade disponível se torne primária.

Membros com um valor de prioridade 0 não podem se tornar primários e não concorrem à eleição. Para obter detalhes, consulte Membros do conjunto de réplicas de prioridade 0.

O MongoDB fornece leituras espelhadas para pré-aquecer o cache de membros secundários elegíveis com os dados acessados mais recentemente. Com leituras espelhadas, o primário pode espelhar um subconjunto de operações que recebe e enviá-las para um subconjunto de secundários elegíveis. O pré-aquecimento do cache de um secundário pode ajudar a restaurar o desempenho mais rapidamente após uma eleição.

Para obter detalhes, consulte Leituras espelhadas.

Com um conjunto de réplicas distribuído, a perda de um centro de dados pode afetar a capacidade dos membros restantes em outro(s) centro(s) de dados de eleger uma primária.

Se possível, distribua os membros do conjunto de réplicas entre os centros de dados para maximizar a probabilidade de que, mesmo com a perda de um centro de dados, um dos membros restantes do conjunto de réplicas possa se tornar a nova primária.

Dica

Veja também:

Uma partição de rede pode segregar uma primária em uma partição com uma minoria de nós. Quando a primária detecta que só pode ver uma minoria dos nós de votação no conjunto de réplicas, a primária deixa de ser e se torna secundária. Independentemente disso, um membro da partição que pode se comunicar com um majority dos nós de votação (incluindo ele próprio) realiza uma eleição para se tornar a nova primária.

A configuração de membro do conjunto de réplicas members[n].votes e state de membro determinar se um membro vota em uma eleição.

Embora os membros não votantes não votem nas eleições, esses membros mantêm cópias dos dados do conjunto de réplicas e podem aceitar operações de leitura de aplicativos cliente.

Como um conjunto de réplicas pode ter até 50 membros, mas apenas 7 membros votantes, os membros sem direito a voto permitem que um conjunto de réplicas tenha mais de sete membros.

Não votante (ou seja, votes é 0) membros devem ter priority de 0.

Por exemplo, o seguinte conjunto de réplicas de nove membros tem sete membros votantes e dois membros não votantes.

Diagrama de um conjunto de réplicas de nove membros com o máximo de sete membros votantes.

Um membro não votante tem votes e priority iguais a 0:

{
"_id" : <num>,
"host" : <hostname:port>,
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 0,
"tags" : {
},
"secondaryDelaySecs" : NumberLong(0),
"votes" : 0
}

Importante

Não altere o número de votos para controlar quais membros se tornarão primárias. Em vez disso, modifique a opção members[n].priority. altere o número de votos em casos excepcionais. Por exemplo, para permitir mais de sete membros.

Para configurar um membro sem direito a voto, consulte Configurar membro do conjunto de réplicas sem direito a voto.

← Alta disponibilidade do conjunto de réplicas