这是场景:
节点1:
启动docker容器monogid.yml 只有一个主机:mongo:27017
Mongo docker容器(名为“ mongo”),配置为在Node2中使用mongo和仲裁器设置的副本集。
节点2:
启动docker容器monogid.yml 只有一个主机:mongo:27017
Mongo docker容器(名为“ mongo”),配置为在Node1中具有mongo和仲裁器的副本集。
我知道mongoid
配置应该在副本集中有一组主机,而不是只有一个,
但是,当测试上述内容时,我可以看到,如果在 Node2 中访问Web,则 Node1 中的mongo就是负载,即使该主机未在Node2配置中配置。
那么,我可以像这样在两个节点上保留蒙古包的配置吗?
真的需要在配置中使用主机列表吗?还是Rails中的驱动程序会自行解决?
请让我知道更多详细信息是否有帮助或解释不清楚。
更新:网络负载既是读写负载。
答案 0 :(得分:0)
大多数驱动程序在连接时将调用db.isMaster(),它将返回副本集中的一组节点。这使驱动程序可以发现其他节点并重新连接到主节点。通常,您应该列出所有已知的节点,以防您暂时种下的节点。由于已经配置了副本集,因此必须已经为所有节点指定了地址,那么为什么不只在连接URI中列出它呢? 提示:如果无法为所有主机设置正确的DNS引用,则可以在/ etc / hosts中使用别名