我正在使用 datanucleus mongodb maven 插件和“访问平台”来使用 JPA 将我的 java 应用程序连接到 mongodb。
我在 ubuntu VM 上按照http://docs.mongodb.org/manual/tutorial/deploy-replica-set/ 上的说明进行操作,将 db1.mongo、db2.mongo 和 db3.mongo 添加到主机文件中来宾 vm 和主机 (Mac OS X)。
我有一个简单的 java 应用程序连接到服务器(如http://www.datanucleus.org/products/accessplatform_3_0/mongodb/support.html中所述)。
当我将应用程序连接到主应用程序(连接 url: mongodb:db1.mongo:27017/ops?replicaSet=rs0
)时,一切正常,但是当我将其他两个 mongodb 添加到连接 url 时,mongodb:db1.mongo:27017/ops?replicaSet=rs0,db2.mongo:27018,db3.mongo:27019
我得到了异常:
com.mongodb.MongoException: can't find a master
at com.mongodb.DBTCPConnector.checkMaster(DBTCPConnector.java:503)
at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:236)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:216)
...
我已经搜索过这个错误,但我发现的那些与 localhost/127.0.0.1 的使用有关。我试图通过在单独的 VM 上运行 mongodb 并因此在非本地 IP 上运行以及将名称添加到主机文件来缓解这种情况。
尝试 mongodb 的主要目标是实现可用性,因此复制和能够进行故障转移非常重要。发生故障时节点之间的事务和一致性不是问题,我们也不担心偶尔会丢失一两个更新,所以 mongodb 看起来是使用 JPA 的一个不错的选择(我完全受够了 mysql :-)
在此先感谢您的帮助!