Vin*_*nie 7 replication mongodb configuration mongodb-3.0
我正在使用 MongoDB 3.0.0 版。我正在尝试在我们的机器上设置 mongodb 复制。最初设置了复制,但由于 VM 上的一些更改,整个过程崩溃了。当我再次尝试设置时,辅助节点和仲裁器卡在启动模式中。
在我设置的 mongoDB conf 文件中
replSet=ReplicaSet1
Run Code Online (Sandbox Code Playgroud)
我使用命令添加了 2 台机器
rs.add("10.235.96.12:27017")
rs.add("10.235.96.12:27017")
Run Code Online (Sandbox Code Playgroud)
但是在这之后,当我做一个rs.status()次要和仲裁者时,仍然在 StartUp 中显示
ReplicaSet1:PRIMARY> rs.status()
{
"set" : "ReplicaSet1",
"date" : ISODate("2015-07-31T04:45:57.260Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "BOSPROD9:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 63104,
"optime" : Timestamp(1438257913, 1),
"optimeDate" : ISODate("2015-07-30T12:05:13Z"),
"electionTime" : Timestamp(1438254975, 2),
"electionDate" : ISODate("2015-07-30T11:16:15Z"),
"configVersion" : 7,
"self" : true
},
{
"_id" : 1,
"name" : "10.235.96.12:27017",
"health" : 1,
"state" : 0,
"stateStr" : "STARTUP",
"uptime" : 62663,
"optime" : Timestamp(0, 0),
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2015-07-31T04:45:56.520Z"),
"lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
"pingMs" : 0,
"configVersion" : -2
},
{
"_id" : 2,
"name" : "10.235.96.13:27017",
"health" : 1,
"state" : 0,
"stateStr" : "STARTUP",
"uptime" : 60043,
"lastHeartbeat" : ISODate("2015-07-31T04:45:55.786Z"),
"lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
"pingMs" : 0,
"configVersion" : -2
}
],
"ok" : 1
}
Run Code Online (Sandbox Code Playgroud)
当我尝试rs.conf在 Secondary 或 Arbiter 上执行 a时,我收到消息
2015-07-31T05:23:07.927+0000 E QUERY Error: Could not retrieve replica set config: {
"info" : "run rs.initiate(...) if not yet done for the set",
"ok" : 0,
"errmsg" : "no replset config has been received",
"code" : 94
}
Run Code Online (Sandbox Code Playgroud)
我确实多次尝试清理所有机器中的所有 local.0、local.1 文件,并且还从日志文件夹中删除了所有日志文件。我仍然遇到同样的问题。有人能告诉我我在这里做错了什么吗?
我已经为所有成员设置了 replset。尝试在独立模式下启动,它工作正常。
从“BOSPROD9”,尝试用 mongoshell 连接到其他服务:
$ mongo --host 10.235.96.12 --port 27017
$ mongo --host 10.235.96.13 --port 27017
Run Code Online (Sandbox Code Playgroud)
(Telnet 不一样。)如果这不起作用,则可能是防火墙或 BindIP。
检查 bind_ip(应该是 0.0.0.0,在 mongodb.conf 中更改为 127.0.0.1):
$ netstat -nap | grep :27017 | grep LISTEN
tcp 0 0 0.0.0.0:27018 0.0.0.0:* LISTEN -
Run Code Online (Sandbox Code Playgroud)
尝试查看 10.235.96.12 和 10.235.96.13 上的日志文件,为什么它们会卡住。他们收到配置了吗?
尝试以这种方式重新配置:
mongo> var cfg = {_id:"ReplicaSet1",members:[{_id:0, host:"BOSPROD9:27017"},{_id:1, host:"10.235.96.12:27017"},{_id:2, host:"10.235.96.13:27017",arbiterOnly:true}]};
mongo> rs.reconfig(cfg);
Run Code Online (Sandbox Code Playgroud)
解决方案:
使用主机名而不是 ip:给所有服务器一个主机名,更新主机文件并在 rs-configuration 中使用主机名。似乎 mongodb 建议不要使用 ip 地址,而是使用主机名。
| 归档时间: |
|
| 查看次数: |
11194 次 |
| 最近记录: |