【发布时间】:2013-05-25 20:24:38
【问题描述】:
我正在使用 datanucleus mongodb maven 插件和“访问平台”来使用 JPA 将我的 java 应用程序连接到 mongodb。
我已按照http://docs.mongodb.org/manual/tutorial/deploy-replica-set/ 上的说明进行操作 在 ubuntu VM 上,将 db1.mongo、db2.mongo 和 db3.mongo 添加到来宾 vm 和主机 (Mac OS X) 上的 hosts 文件中。
我有一个简单的 Java 应用程序连接到服务器(如 http://www.datanucleus.org/products/accessplatform_3_0/mongodb/support.html 中所述)。
当我将应用程序连接到主应用程序(连接网址:mongodb:db1.mongo:27017/ops?replicaSet=rs0)时,一切正常,但是当我将其他两个 mongodb 添加到连接网址时,它变成了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。我试图通过在一个单独的虚拟机上运行 mongodb 来缓解这种情况,因此是一个非本地 IP,并将名称添加到主机文件中。
尝试 mongodb 的主要目标是实现可用性,因此复制和能够进行故障转移非常重要。发生故障时节点之间的事务和一致性不是问题,我们也不担心偶尔会丢失一两个更新,所以 mongodb 看起来是使用 JPA 的一个不错的选择(我完全受够了 mysql :-)
提前感谢您的帮助!
【问题讨论】:
标签: mongodb maven jpa datanucleus