Alguém implementou a replicação do Mongo usando o replset arbiter. No momento do failover de Primário para Secundário, o Árbitro deve desativar o VIP no primário e habilitá-lo no secundário quando o Árbitro indicar o secundário como Mestre.
Isso é possível?
Eu entendo que é para fins de votação. Mas quando ele pode decidir quem deve estar disponível para gravações e quem não deve, gostaria de incorporar uma lógica que também deva encaminhar as solicitações de aplicativos para o vencedor. Também não quero manter a decisão do host no final do aplicativo. Kinda não parece limpo para mim.
Nota: Ele abrirá a gravação no secundário, não significa que roteará as solicitações do aplicativo para o secundário (NewMaster).
Portanto, os drivers aqui são drivers de aplicativos que devem ser escritos dessa maneira.
@mongo_client = MongoReplicaSetClient.new(
['n1.mydb.net:27017', 'n2.mydb.net:27017', 'n3.mydb.net:27017']
).db("test").collection("sample")
Para escolher o seu membro. eu estou certo?
Resposta do Community Wiki gerada a partir de comentários sobre a pergunta de James Wahlin e Markus W Mahlberg
James: O árbitro é um membro votante em uma eleição, mas não indica membros como principais ou controla o processo. Eu sugeriria a leitura: Replica Set Elections no manual do MongoDB.
Quando há uma eleição, todas as conexões do cliente são descartadas pelo MongoDB. Nesse momento, o cliente se conectará a uma de suas sementes e executará uma chamada isMaster. Essa chamada informa ao cliente qual membro é primário e quais membros são secundários. Dessa forma, o cliente gravará perfeitamente no membro correto, com base na preferência de leitura.
Markus: Ele vai encaminhar as requisições do aplicativo para o secundário. Os drivers reconhecem o conjunto de réplicas. Como todas as conexões são descartadas ativamente pelo primário antigo ou obsoleto, o driver tentará encontrar o primário atual na lista de membros do conjunto de réplicas que ele conhece. Você pode verificar esse comportamento configurando um conjunto de réplicas localmente, executando em 3 portas diferentes em sua máquina local e eliminando uma delas aleatoriamente. Após o curto período em que uma eleição precisa ser concluída, seu aplicativo cliente grava no primário recém-eleito.