MongoDB freqüentemente alternando primárias

2

Estamos executando uma réplica do Mongo 2.6 com 3 membros: primário, secundário, árbitro. Quase todos os dias nosso MongoDB está trocando qual servidor é primário e isso faz com que todas as conexões com esse banco de dados sejam interrompidas. Seria perfeitamente bom se estivesse fazendo isso porque um dos servidores realmente estava em baixo, o desafio é que, em cada caso, parece que o servidor "down" não estava realmente fora do ar. Foi o tempo todo.

Veja o que sabemos:

  1. O processo mongod nos três servidores não foi reiniciado ou desativado.
  2. Os servidores ainda estavam relatando para a New Relic o tempo todo.
  3. No log do mongo, estamos vendo falhas freqüentes de pulsação.
  4. Os servidores não estão realmente sob uma carga muito alta em nenhum momento. Estou vendo um pico de CPU a cada hora, cerca de 10 minutos depois da hora, mas isso não se alinha perfeitamente com as falhas.

A seguir, é apresentado o resultado de show log rs , enquanto o shell estava no primário atual.

2015-05-17T15:05:49.339+0000 [rsBackgroundSync] replSet sync source problem: 10278 dbclient error communicating with server: server1:27017
2015-05-17T15:05:49.358+0000 [rsBackgroundSync] replSet syncing to: server1:27017
2015-05-17T15:05:56.444+0000 [rsBackgroundSync] replset setting syncSourceFeedback to server1:27017
2015-05-17T22:11:36.638+0000 [rsHealthPoll] replSet info server1:27017 is down (or slow to respond):
2015-05-17T22:11:36.644+0000 [rsHealthPoll] replSet member server1:27017 is now in state DOWN
2015-05-17T22:11:37.495+0000 [rsMgr] not electing self, we are not freshest
2015-05-17T22:11:38.656+0000 [rsHealthPoll] replSet member server1:27017 is up
2015-05-17T22:11:38.656+0000 [rsHealthPoll] replSet member server1:27017 is now in state PRIMARY
2015-05-17T22:11:39.140+0000 [rsBackgroundSync] replSet syncing to: server1:27017
2015-05-17T22:11:39.147+0000 [rsBackgroundSync] replset setting syncSourceFeedback to server1:27017
2015-05-17T23:05:47.431+0000 [rsBackgroundSync] replSet sync source problem: 10278 dbclient error communicating with server: server1:27017
2015-05-17T23:05:47.431+0000 [rsBackgroundSync] replSet syncing to: server1:27017
2015-05-17T23:05:47.876+0000 [rsBackgroundSync] replset setting syncSourceFeedback to server1:27017
2015-05-18T10:05:46.821+0000 [rsBackgroundSync] replSet sync source problem: 10278 dbclient error communicating with server: server1:27017
2015-05-18T10:05:46.822+0000 [rsBackgroundSync] replSet syncing to: server1:27017
2015-05-18T10:05:51.014+0000 [rsBackgroundSync] replset setting syncSourceFeedback to server1:27017
2015-05-18T22:12:11.433+0000 [rsHealthPoll] replSet info server1:27017 is down (or slow to respond):
2015-05-18T22:12:11.434+0000 [rsHealthPoll] replSet member server1:27017 is now in state DOWN
2015-05-18T22:12:11.507+0000 [rsMgr] replSet info electSelf 3
2015-05-18T22:12:14.708+0000 [rsMgr] replSet PRIMARY
2015-05-18T22:12:14.709+0000 [rsHealthPoll] replSet member server1:27017 is up
2015-05-18T22:12:14.709+0000 [rsHealthPoll] replSet member server1:27017 is now in state PRIMARY
2015-05-18T22:12:21.610+0000 [rsHealthPoll] replSet member server1:27017 is now in state ROLLBACK
2015-05-18T22:12:23.612+0000 [rsHealthPoll] replSet member server1:27017 is now in state SECONDARY
2015-05-19T22:13:13.004+0000 [rsHealthPoll] couldn't connect to server1:27017: couldn't connect to server server1:27017 (x.x.x.x), connection attempt failed
2015-05-19T22:13:24.127+0000 [rsHealthPoll] couldn't connect to server1:27017: couldn't connect to server server1:27017 (x.x.x.x) failed, connection attempt failed
2015-05-19T22:13:29.267+0000 [rsHealthPoll] replset info server1:27017 just heartbeated us, but our heartbeat failed: , not changing state
2015-05-20T22:14:35.832+0000 [rsHealthPoll] replset info server1:27017 just heartbeated us, but our heartbeat failed: , not changing state

Você pode ver que estamos recebendo falhas freqüentes de pulsação e notificações inativas, mas em cada caso o servidor passaria de baixo para backup em segundos a cada vez. Eu não tenho certeza onde começar a procurar o próximo para tentar descobrir o que poderia estar causando o problema.

    
por Nucleon 21.05.2015 / 02:10

2 respostas

0

Isso foi resolvido. A questão principal era que nosso provedor de hospedagem estava executando snapshots VMWare como mecanismo de backup. Esses instantâneos estavam fazendo com que a VM ficasse temporariamente em um período de estase, acredito que o termo técnico é que a máquina virtual fica quieta.

Quando esses instantâneos foram desativados, não tivemos mais problemas.

    
por 04.06.2015 / 18:15
2

Eu vejo isso com frequência e está sempre fora do processo mongod . Problemas de resolução de DNS, problemas de pilha de TCP / IP, links de rede, hardware físico etc. Trabalhe para sair do processo mongod . Verifique os erros de rede em seu sistema operacional host, verifique os links físicos (se físico estiver na equação), verifique seu provedor de nuvem entre os dois servidores se você estiver abrangendo regiões. Em toda a probabilidade, isso é algo nos sistemas operacionais host e nada a ver com o próprio MongoDB.

    
por 21.05.2015 / 05:54