无论我做什么,我似乎都无法让 Ruby 的 Mongo 驱动程序连接到副本集。我已经研究了有关该主题的所有票证和 SO 问题,并尝试了每种语法组合。但最终,我最终只是尝试在 Rails 控制台中使用驱动程序 API,如下所示:
Mongo::ReplSetConnection.new(['db1.yada.to:27017', 'db2.yada.to:27017'], :read => :primary).db("yada_production")
但不管它总是吐出什么,立即:
Mongo::ConnectionFailure: Failed to connect to primary node.
当我登录到数据库服务器并从那里访问 mongo 时,我看到 db1 是 PRIMARY> 而 db2 是 SECONDARY>
此外,我可以从端口 27017 上的应用程序服务器远程登录到数据库服务器。使用 Connection.new 将连接切换回单个服务器可以正常工作。
我要疯了。我最初使用的是 Mongo ruby 驱动程序 1.4 + Rails 3.1 + Mongoid 2.3 + MongoDB 2.0.6,但现在升级到 1.6.2 + Rails 3.2 + 2.4.12 + 2.0.6 时出现同样的问题。
我最初将它与 auth 一起使用,但我现在关闭了 auth 以简化事情。
这完全坏了吗?似乎其他人也有类似的问题,但没有一个“解决方案”对我有用。还有其他人有想法吗?