mongodb: o cliente pode sugerir a reeleição do conjunto de réplicas?

1

Um conjunto de réplicas do Mongodb fornece failover automático. Se uma primária ficar inativa (ou seja, houver um problema de rede entre a primária e a secundária), ocorrerá uma reeleição.

No entanto, considere o seguinte caso:

Todos os servidores estão ativos, a rede entre o primário e o secundário é boa e, portanto, o conjunto de réplicas é feliz como pode ser. No entanto, devido a outro problema de rede (desconhecido para o conjunto de réplicas), o cliente não pode alcançar o principal. Assim, o HA é perdido.

Neste caso, o cliente pode fazer ping em um secundário e informar ao secundário que o primário não pode ser alcançado e que uma nova eleição deve ser executada. Isso é possível?

    
por adamM 29.10.2016 / 22:23

1 resposta

0

Você provavelmente poderia fazer isso em uma situação de recuperação de desastre, onde obter o banco de dados é importante, e você não se importa com a reversão.

Algo como:

cfg = rs.conf()
cfg.members[0].priority = 2
rs.reconfig(cfg, { force: true })

Onde membros [0] é um servidor "bom" conhecido.

Uma maneira mais segura de fazer isso provavelmente instalaria um pequeno serviço de gerenciamento em cada nó do mongo que você poderia acessar via api descanse. Se possível, os comandos do administrador devem ser retransmitidos para o primário.

Automatizar esse tipo de coisa seria bem difícil, já que provavelmente não há maneira fácil de seus aplicativos e servidores concordarem em quais servidores são "bons" e quais servidores são ruins.

Um modelo comum para clusters mongo é executar nós em vários locais, alguns dos quais podem ter roteamento menos confiável. Nesses casos, recomendo modificar as prioridades do nó. Se você tiver servidores que nunca desejaria como primário, defina suas prioridades como 0 e defina os nós no seu local preferido como prioridade 2 (ou superior).

Para mais informações, reconfigure, leia: link

Editar: Acho que ficaria tentado a brincar com os árbitros do mongo. Ao executar mongo árbitros nos locais onde você executa os clientes, eles poderiam votar no processo eleitoral. Servidores que não podem ser vistos pela maioria dos servidores de votação não podem ser primários.

    
por 31.10.2016 / 01:52