Configurei um cluster de fragmentos, mas há alguns erros na réplica do servidor de configuração. Abaixo está meu status de réplica do servidor de configuração:
cnf-serv:SECONDARY> rs.status()
{
"set" : "cnf-serv",
"date" : ISODate("2017-08-21T01:28:00.926Z"),
"myState" : 2,
"term" : NumberLong(1),
"configsvr" : true,
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(0, 0),
"t" : NumberLong(-1)
},
"appliedOpTime" : {
"ts" : Timestamp(1502320369, 1),
"t" : NumberLong(1)
},
"durableOpTime" : {
"ts" : Timestamp(1502320369, 1),
"t" : NumberLong(1)
}
},
"members" : [
{
"_id" : 0,
"name" : "172.19.0.13:27017",
"health" : 0,
"state" : 8,
"stateStr" : "(not reachable/healthy)",
"uptime" : 0,
"optime" : {
"ts" : Timestamp(0, 0),
"t" : NumberLong(-1)
},
"optimeDurable" : {
"ts" : Timestamp(0, 0),
"t" : NumberLong(-1)
},
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"optimeDurableDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2017-08-21T01:28:00.831Z"),
"lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
"pingMs" : NumberLong(0),
"lastHeartbeatMessage" : "Connection refused",
"configVersion" : -1
},
{
"_id" : 1,
"name" : "172.19.0.4:27017",
"health" : 0,
"state" : 8,
"stateStr" : "(not reachable/healthy)",
"uptime" : 0,
"optime" : {
"ts" : Timestamp(0, 0),
"t" : NumberLong(-1)
},
"optimeDurable" : {
"ts" : Timestamp(0, 0),
"t" : NumberLong(-1)
},
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"optimeDurableDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2017-08-21T01:28:00.831Z"),
"lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
"pingMs" : NumberLong(0),
"lastHeartbeatMessage" : "Connection refused",
"configVersion" : -1
},
{
"_id" : 2,
"name" : "172.19.0.7:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 119601,
"optime" : {
"ts" : Timestamp(1502320369, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2017-08-09T23:12:49Z"),
"configVersion" : 185982,
"self" : true
}
],
"ok" : 1
}
Eu posso ver no comando acima que dois membros de réplica não são alcançáveis ​​e o único membro alcançável é um secundário. Portanto, preciso tornar o membro secundário primário para que a réplica de configuração funcione. Eu tentei abaixo do comando no secundário, mas não funciona:
cnf-serv:SECONDARY> rs.slaveOk()
cnf-serv:SECONDARY> var cfg = rs.config();
cnf-serv:SECONDARY> cfg.members[0].priority=0.5
0.5
cnf-serv:SECONDARY> cfg.members[1].priority=0.5
0.5
cnf-serv:SECONDARY> cfg.members[2].priority=1
1
cnf-serv:SECONDARY> rs.reconfig(cfg, {force: true})
{ "ok" : 1 }
depois de fazer essa alteração, o secundário ainda é secundário. Não se tornou o principal. Como posso corrigir esse problema de conjunto de réplicas?
Seu problema é que um nó de três não pode ser "majoritário". Se você remover esses dois nós da configuração, esse pode se tornar o principal. Embora a melhor solução seja fazer com que esses dois outros nós respondam.
Essa mensagem de erro informa que este nó (onde você deu rs.status() -command) não pode se conectar a outros dois nós. Eu acho que existe um firewall entre e não há buraco para a porta 27017.
Como sempre, a melhor fonte para a solução do problema é o arquivo mongodb.log, onde o programa informa o que há de errado com a configuração.