gpt4 book ai didi

Ubuntu EC2 实例上的 MongoDB - 无法使用 java 访问副本集的主要成员

转载 作者:行者123 更新时间:2023-12-04 19:18:36 29 4
gpt4 key购买 nike

我正在使用 Ubuntu t1.micro EC2 实例并使用以下链接安装了 MongoDB-2.6.7:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

我面临的问题是我无法访问副本集主成员。

 ServerAddress address0 = new ServerAddress("<public_ip1>", 27017); 
ServerAddress address1 = new ServerAddress("<public_ip2>", 27018);
ServerAddress address2 = new ServerAddress("<public_ip3>", 27019);

我收到 MongoTimeoutException .

这里的问题是: 当我不使用 PRIMARY 的服务器地址并将 ReadPreference 设置为 secondaryPreferred 时,我可以从可用的 SECONDARY 中读取。

我可以 读取(甚至写入 PRIMARY) ,当我将这些服务器地址中的任何一个用作 时个人联系 .
 MongoClient mongoClient = new MongoClient("<public_ip1>", 27017);

副本集配置如下:
 {
"_id" : "replicaSet",
"version" : 5,
"members" : [
{
"_id" : 0,
"host" : "ip-10-0-3-76:27017" //**private_ip**
},
{
"_id" : 1,
"host" : "ip-10-0-2-19:27018" //**private_ip**
},
{
"_id" : 2,
"host" : "ip-10-0-3-144:27019" //**private_ip**
}
]

}

安全配置也没有问题。我已经为入站和出站设置了 ALL。

任何人都可以帮我解决这个问题。

错误如下:

线程“主”com.mongodb.MongoTimeoutException 中的异常:在等待与 {serverSelectors=[ReadPreferenceServerSelector{readPreference=secondaryPreferred} 匹配的服务器时,10000 毫秒后超时,
LatencyMinimizingServerSelector{acceptableLatencyDifference=15 ms}]}。集群状态的客户端 View 是 {type=ReplicaSet, servers=[{address=ip-10-0-2-19:27018, type=Unknown, state=Connecting, exception=
{com.mongodb.MongoException$Network: 异常打开套接字},由 {java.net.UnknownHostException: ip-10-0-2-19}} 引起,{address=ip-10-0-3-10:27019 ,类型=未知,状态=正在连接,异常=
{com.mongodb.MongoException$Network: 异常打开套接字},由 {java.net.UnknownHostException: ip-10-0-3-10}} 引起,{address=ip-10-0-3-76:27017 ,类型=未知,状态=正在连接,异常=
{com.mongodb.MongoException$Network: 异常打开套接字},由 {java.net.UnknownHostException: ip-10-0-3-76}} 引起
在 com.mongodb.BaseCluster.getServer(BaseCluster.java:82)
在 com.mongodb.DBTCPConnector.getServer(DBTCPConnector.java:656)
在 com.mongodb.DBTCPConnector.access $500(DBTCPConnector.java:40)
在 com.mongodb.DBTCPConnector$MyPort.getConnection(DBTCPConnector.java:505)
在 com.mongodb.DBTCPConnector$MyPort.get(DBTCPConnector.java:448)
在 com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:284)
在 com.mongodb.DBTCPConnector.call(DBTCPConnector.java:269)
在 com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:84)
在 com.mongodb.DB.command(DB.java:320)
在 com.mongodb.DB.command(DB.java:299)
在 com.mongodb.DBCollection.getCount(DBCollection.java:1269)
在 com.mongodb.DBCursor.count(DBCursor.java:796)
在 com.test.replicaSetTest.main(replicaSetTest.java:41)

最佳答案

是的,您可以使用弹性 IP 地址。将一个弹性 IP 附加到每个 Ec2 实例网络接口(interface)。
你可以引用这个链接:http://blog.mongodirector.com/best-practices-for-deploying-mongodb-on-ec2/

关于Ubuntu EC2 实例上的 MongoDB - 无法使用 java 访问副本集的主要成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28411362/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com