我有副本集(托管在亚马逊上),它具有:

  • 主要
  • 次要
  • 仲裁人

  • 所有这些都是3.2.6版,此副本正在我的分片群集中制作一个分片(如果那很重要,尽管我认为不重要)。

    当我在Primary上键入rs.status()时,它说无法到达Secondary(仲裁器上也发生了同样的事情):
            {
            "_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 是错误的原因,了解此错误optimeDate原因的最佳方法是调查辅助设备的计算机当前日期时间,因为它也可能是错误的。不确定您是否仍在寻找答案,但是optimedate是问题所在,而不是副本集计算机之间的连接。

    09-11 23:26