【问题标题】:MonogoDB Replica Set Status Not changing from Startup to SecondaryMongoDB 副本集状态未从启动更改为辅助
【发布时间】:2016-04-30 08:21:50
【问题描述】:

我已经设置了一个具有 3 个节点的 MongoDB 副本集(vm 正在运行 CentOS)。一个节点成为主节点,另外 2 个节点卡在启动中。当这 2 个节点将其状态从启动更改为辅助时。

aryabhata:PRIMARY> rs.status()
{
    "set" : "aryabhata",
    "date" : ISODate("2016-04-30T08:10:45.173Z"),
    "myState" : 1,
    "members" : [
            {
                    "_id" : 0,
                    "name" : "localhost.localdomain:27017",
                    "health" : 1,
                    "state" : 1,
                    "stateStr" : "PRIMARY",
                    "uptime" : 69091,
                    "optime" : Timestamp(1461935462, 1),
                    "optimeDate" : ISODate("2016-04-29T13:11:02Z"),
                    "electionTime" : Timestamp(1461934754, 1),
                    "electionDate" : ISODate("2016-04-29T12:59:14Z"),
                    "configVersion" : 459192,
                    "self" : true
            },
            {
                    "_id" : 1,
                    "name" : "repset1.com:27017",
                    "health" : 1,
                    "state" : 0,
                    "stateStr" : "STARTUP",
                    "uptime" : 92,
                    "optime" : Timestamp(0, 0),
                    "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
                    "lastHeartbeat" : ISODate("2016-04-30T08:10:44.485Z"),
                    "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                    "pingMs" : 0,
                    "configVersion" : -2
            },
            {
                    "_id" : 2,
                    "name" : "repset2.com:27017",
                    "health" : 1,
                    "state" : 0,
                    "stateStr" : "STARTUP",
                    "uptime" : 68382,
                    "lastHeartbeat" : ISODate("2016-04-30T08:10:43.974Z"),
                    "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                    "pingMs" : 0,
                    "configVersion" : -2
            }
    ],
    "ok" : 1
}

【问题讨论】:

    标签: mongodb database-replication replicaset


    【解决方案1】:

    从主要检查您是否能够连接到次要

    mongo --host repset1.com --port 27017
    

    当上述失败可能是防火墙或BindIP问题。

    检查bind_ip(应该是0.0.0.0,在mongodb.conf里改是127.0.0.1):

    netstat -plunt | grep :27017 | grep LISTEN
    

    查看辅助设备的日志文件,了解它们为何卡住。他们收到配置详细信息了吗?

    尝试重新配置,见mongo replicaset reconfigure

    【讨论】:

    • 感谢您的回复。我的辅助服务器没有收到配置详细信息
    【解决方案2】:

    我的问题是通过设置主 IP 地址而不是主机名来解决问题

    cfg = rs.conf()
    cfg.members[0].host = "public-or-private-primary-ip:27017" 
    rs.reconfig(cfg)
    

    在次要状态更改为 STARTUP2 之后

    【讨论】:

      【解决方案3】:

      对我来说,问题是主节点启用了授权。在这种情况下,辅助节点总是留在STARTUP

      要使用授权,您需要在所有节点(主要和次要)的配置文件中设置keyFile


      在linux上创建mongodb密钥文件:

      openssl rand -base64 741 > mongodb.key
      chmod 600 mongodb.key
      chown mongod:mongod mongodb.key
      

      mongod.conf 文件:

      replication:
        replSetName: rs0
      
      security:
        authorization: enabled
        keyFile: /home/mongodb.key
      

      来源MongoDB replica set with simple password authentication

      【讨论】:

        【解决方案4】:

        要求主节点将主机名解析为从节点的 IP,并且从节点将主节点的主机名解析为 IP。

        在我的情况下,我忘记为辅助服务器添加主机文件以解析主服务器的主机名。一旦我更新了辅助节点中的 hosts 文件,辅助节点的状态将转换为 STARTUP2,然后转换为 SECONDARY。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-04-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-08-03
          相关资源
          最近更新 更多