/ / Como desativar o Mongo (no conjunto de réplicas) corretamente sem o DB desativado? - mongodb, node.js, desligamento

Como desativar Mongo (no conjunto de réplica) corretamente sem DB down? - mongodb, node.js, desligamento

Minha configuração do servidor é assim:

2 x servidores. O mongoDB possui réplica definida entre os dois servidores. Cada um é um nó.

e então tenho meu servidor node.js conectado ao MongoDB.

O que aconteceu foi .. quando eu mato o servidor secundário. (desligando o servidor). O MongoDB no primário ainda está ativo, mas o servidor Node.js. teve um problema de conexão com o MongoDB na época. Até eu adicionei o servidor de volta, não funcionou. Eu uso o mangusto e o connect-mongo.

Então o que aconteceu? como desligar o nó Mongo corretamente?

Respostas:

1 para resposta № 1

Se o seu primário ainda for primário depois de tomarno secundário, é um problema de driver de um nó. De qualquer forma, você sempre deve ter um árbitro com um número par de nós de réplica, o "porquê" está bem documentado no documento do mongodb.

Caso este seja um nó.js issue, qual versão do node-mongodb-native você está usando? Eu tive alguns problemas diferentes de replicaset há 2 meses atrás, mas eles foram corrigidos com as versões mais recentes. A última edição do driver do replicaset foi encerrada em 9 de setembro, você deve experimentá-la com a última versão marcada (V0.9.6.18 como eu estou escrevendo isso)


5 para resposta № 2

Se você tiver uma réplica configurada com 2 nós, quando um nó descer, o outro será rebaixado para secundário. Se você não está se conectando com slaveOk verdade, então você não será capaz de ler (e nos dois casos não será capaz de escrever).

Essa é uma medida de segurança imposta pelo MongoDB,o que exige que a maioria (ou seja, metade mais um) de um conjunto de réplicas possa se ver para garantir que um primário possa ser eleito com segurança. Se a maioria não puder ser vista, os nós da minoria não saberão se a "outra metade" elegeu uma primária. Ter duas primárias ao mesmo tempo seria Very Bad (TM), pois isso poderia levar a atualizações conflitantes.

Em situações em que você deseja executar apenas doisnós, você também pode executar um árbitro para interromper os vínculos no caso de um nó ficar inoperante ou ficar invisível para o conjunto de réplicas. Um árbitro é um normal mongod processo, mas não armazena nenhum dado -essencialmente, ele apenas participa de eleições e fica ocioso de outra maneira. Em um conjunto de réplicas com 2 nós "normais" e um árbitro, qualquer um dos dois nós de retenção de dados pode ser desativado sem perder a maioria.

Para mais, veja a documentação do MongoDB sobre conjuntos de réplicas e a documentação sobre artibers.