如果只配置了一个主机,Rails 是否会自动找出 MongoDB 副本集中的主服务器?
Does Rails automagically figures out the primary in a MongoDB replica set if only has one host configured?
场景如下:
节点 1:
Railsdocker容器,monogid.yml只有一个主机:mongo:27017
Mongo docker 容器(命名为 'mongo'),在节点 2 和仲裁器中配置为具有 mongo 的副本集。
节点 2:
Railsdocker容器,monogid.yml只有一个主机:mongo:27017
Mongo docker 容器(命名为 'mongo'),在节点 1 和仲裁器中配置为具有 mongo 的副本集。
我知道 mongoid
配置应该在副本集中有一个主机列表,而不是只有一个,
但是在测试以上内容时我可以看到,如果在 Node2 中访问 Web,Node1[=51= 中的 mongo ] 是获得负载的主机,即使该主机未在 Node2 配置中配置。
那么,我可以就这样在两个节点上保留 mongoid 的配置吗?
是否真的有必要在配置中使用主机列表,或者 Rails 中的驱动程序会自行解决?
让我知道更多详细信息是否有帮助或解释不清楚。
更新:来自网络的负载是读取和写入。
大多数驱动程序会在连接时调用 db.isMaster(),这将 return 副本集中的一组节点。这允许驱动程序发现其他节点并重新连接到主节点。通常,您应该列出所有已知节点,以防您播种的节点暂时关闭。由于您已经配置了一个副本集,因此您必须已经为所有节点分配了一个地址,那么为什么不将其列在连接 URI 中呢?
提示:如果无法为所有主机设置正确的 DNS 引用,可以在 /etc/hosts 中使用别名
场景如下:
节点 1:
Railsdocker容器,monogid.yml只有一个主机:mongo:27017
Mongo docker 容器(命名为 'mongo'),在节点 2 和仲裁器中配置为具有 mongo 的副本集。
节点 2:
Railsdocker容器,monogid.yml只有一个主机:mongo:27017
Mongo docker 容器(命名为 'mongo'),在节点 1 和仲裁器中配置为具有 mongo 的副本集。
我知道 mongoid
配置应该在副本集中有一个主机列表,而不是只有一个,
但是在测试以上内容时我可以看到,如果在 Node2 中访问 Web,Node1[=51= 中的 mongo ] 是获得负载的主机,即使该主机未在 Node2 配置中配置。
那么,我可以就这样在两个节点上保留 mongoid 的配置吗?
是否真的有必要在配置中使用主机列表,或者 Rails 中的驱动程序会自行解决?
让我知道更多详细信息是否有帮助或解释不清楚。
更新:来自网络的负载是读取和写入。
大多数驱动程序会在连接时调用 db.isMaster(),这将 return 副本集中的一组节点。这允许驱动程序发现其他节点并重新连接到主节点。通常,您应该列出所有已知节点,以防您播种的节点暂时关闭。由于您已经配置了一个副本集,因此您必须已经为所有节点分配了一个地址,那么为什么不将其列在连接 URI 中呢? 提示:如果无法为所有主机设置正确的 DNS 引用,可以在 /etc/hosts 中使用别名