【发布时间】:2016-11-23 22:16:01
【问题描述】:
我有副本集(托管在亚马逊上),其中有:
- 主要
- 次要
- 仲裁者
它们都是 3.2.6 版本,这个副本正在我的分片集群中制作一个分片(如果这很重要,尽管我认为它不重要)。
当我在主服务器上键入 rs.status() 时,它说无法到达辅助服务器(仲裁器也是如此):
{
"_id" : 1,
"name" : "secondary-ip:27017",
"health" : 0,
"state" : 8,
"stateStr" : "(not reachable/healthy)",
"uptime" : 0,
"optime" : {
"ts" : Timestamp(0, 0),
"t" : NumberLong(-1)
},
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2016-07-20T15:40:50.479Z"),
"lastHeartbeatRecv" : ISODate("2016-07-20T15:40:51.793Z"),
"pingMs" : NumberLong(0),
"lastHeartbeatMessage" : "Couldn't get a connection within the time limit",
"configVersion" : -1
}
(顺便看看 optimeDate O.o)
我的日志中的错误是:
[ReplicationExecutor] Error in heartbeat request to secondary-ip:27017; ExceededTimeLimit: Couldn't get a connection within the time limit
奇怪的是,当我继续输入 rs.status() 时,一切看起来都正常。此外,我可以从我的主实例(使用mongo --host secondary)连接到辅助实例,所以我想这不是网络问题。昨天一切正常。
TL;DR 我的主节点看不到辅助节点,仲裁器看不到辅助节点,而我的辅助节点看到主节点,就在前一天一切正常,我可以从主实例手动连接到辅助节点。
有人知道会出什么问题吗?
Tnx, 伊万
【问题讨论】:
-
解决办法是什么?我的 optimeDate 是一样的。
-
@Ivan - 如果解决了,请分享解决方案。
标签: mongodb replication sharding