我正在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/