我有一个副本集(托管在亚马逊上),它有:
- 初级
- 次要的
- 仲裁人
所有这些都是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
}
(顺便说一句,看看最佳日期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,Ivan
似乎是辅助最优日期对错误负责,了解此错误最优日期的原因的最佳方法是调查辅助的机器当前日期时间,因为它也可能是错误的。不确定你是否还在寻找答案,但最佳日期是问题所在,而不是复制集机器之间的连接。