Quantas instâncias de mongod devo executar com uma configuração de replicaset de 2 servidores?

2

Atualmente, tenho o servidor A e o servidor B em execução com as seguintes instâncias do mongod:

Servidor A

  1. servidor mongod (geralmente PRIMÁRIO)
  2. árbitro mongod

Servidor B

  1. servidor mongod (geralmente SECUNDÁRIO)

Quando o servidor A desce, o servidor B não se elege como primário para receber tudo. Assim, todo o meu aplicativo fica off-line porque o banco de dados não está disponível.

Minha pergunta é, sem aumentar a quantidade de servidores físicos, como posso ter certeza de que o servidor B assumirá corretamente quando o servidor A cair?

O seguinte seria uma boa ideia?

Servidor A

  1. servidor mongod 1A
  2. servidor mongod 2A
  3. mongod arbiterA

Servidor B

  1. servidor mongod 1B
  2. servidor mongod 2B
  3. mongod arbiterB

Onde não adicionei um árbitro a B porque isso tornaria o número total de servidores igual. A questão é: esta é a maneira mais eficiente de deixar o servidor B assumir quando o servidor A é desligado? Ou posso remover alguns servidores para salvar RAM / CPU / HDD?

    
por Tom 27.05.2012 / 10:05

2 respostas

3

Não é realmente eficaz ter árbitros na mesma máquina que seus processos de mongod. Você tem um terceiro servidor não relacionado para executar o Arbiter?

(Documentado aqui: link )

A execução de vários processos mongod no mesmo servidor causará problemas de desempenho. Além disso, ter dois processos mongod utilizáveis e um árbitro na mesma máquina significa que, se os dois servidores físicos ficarem desconectados uns dos outros, cada um deles elegerá uma Primária local.

    
por 01.06.2012 / 02:24
2

A maneira mais eficiente de fazer o Servidor B assumir quando A desliga é mover seu árbitro atual para B. No entanto, isso significaria que A deixaria de ser primário se B falisse porque não seria capaz de formar a maioria.

Existem duas opções - ter outra instância de árbitro pronta para entrar em A / B e reconfigurar o conjunto quando houver uma falha em adicioná-lo ao conjunto e remover o outro árbitro, ou relançar a A / B como um mongod independente fora de um conjunto de réplicas enquanto o outro está desativado e reconfigure quando as coisas estiverem saudáveis novamente.

Com 2 máquinas, você encontrará esse problema de ter que intervir manualmente para recuperar o conjunto. Cada solução automática que consigo imaginar envolve ter outra máquina.

    
por 28.05.2012 / 09:59