我正在3个节点上运行mongodb副本集,让他们的IP为192.168.1.100,192.168.1.101、192.168.1.102

现在在当前副本集中192.168.1.100是主要副本,而192.168.1.101和192.168.1.102是次要副本,我的应用程序连接到192.168.1.100进行写操作。现在两天后192.168.1.100关闭并且mongodb选择192.168.1.101作为主要副本。我的应用程序如何知道192.168.1.101是primary。

它们是mongodb中的任何 float ip概念,因此,当主服务器切换到副本集时,无需手动操作。

最佳答案

显然,您应该能够使用“驱动程序”(mongo cli工具或首选语言绑定(bind),例如node-mongo)连接到副本集的任何成员。建立连接后,只需询问当前的mongod为该集合的其他成员提供服务:

> db.runCommand("ismaster")
{
     "ismaster" : false,
     "secondary" : true,
     "hosts" : [
             "ny1.acme.com",
             "ny2.acme.com",
             "sf1.acme.com"
     ],
     "passives" : [
          "ny3.acme.com",
          "sf3.acme.com"
     ],
     "arbiters" : [
         "sf2.acme.com",
     ]
     "primary" : "ny2.acme.com",
     "ok" : true
}

对于我来说,重要的是不要连接到主数据库。像OP一样,我想减少查找辅助成员所需的连接数。该方法应该适合您,但是此处的文档可能有些陈旧。

http://docs.mongodb.org/meta-driver/latest/legacy/connect-driver-to-replica-set/

关于mongodb - MongoDB如何知道副本集中的主数据库服务器IP?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16292391/

10-13 01:09