docker容器中安装了mongo db时发生超时异常

时间:2018-12-04 08:06:46

标签: spring mongodb docker containers database-replication

我已经设置了docker并创建了四个容器(每个容器都安装了一个启用了身份验证的mongodb实例),以使用仲裁器启用mongodb复制。我还向主机公开了mongodb的27017端口,以便外部应用程序可以连接它,但是我无法从Eclipse与我的JAVA Spring应用程序连接。

以下是我使用过的mongo uri:

  

mongodb://用户名:密码@ 192.168.1.102:18088,192.168.1.102:18089,192.168.1.102:18099 /?authSource = dbName; replicaSet = rs0; readPreference = secondaryPreferred; authMechanism = SCRAM-SHA-1; waitQueueMultiple = 100 Exception“”在等待与com.mongodb.client.internal.MongoClientDelegate$1@739c3a21匹配的服务器时,等待30000毫秒后超时。群集状态的客户端视图为{type = REPLICA_SET,服务器= [{地址= mongo3:27017,类型=未知,状态=正在连接,异常= {com.mongodb.MongoSocketException:mongo3},由{java.net.UnknownHostException:mongo3}}引起,{地址= mongo2:27017,类型=未知,状态= CONNECTING,异常= {com.mongodb.MongoSocketException:mongo2},由{java.net.UnknownHostException:mongo2}}引起,{地址= mongo1:27017,类型=未知,状态=正在连接,异常= {com.mongodb。由{java.net.UnknownHostException:mongo1}}引起的MongoSocketException:mongo1},由{address = mongorb:27017,type = UNKNOWN,state = CONNECTING,exception = {com.mongodb.MongoSocketException:mongorb}引起的{java.net.UnknownHostException:mongorb}}];嵌套异常是com.mongodb.MongoTimeoutException:等待服务器匹配com.mongodb.client.internal.MongoClientDelegate$1@739c3a21的服务器在30000毫秒后超时。群集状态的客户端视图是{type.REPLICA_SET,服务器= [{address = mongo3:27017,type = UNKNOWN,state = CONNECTING,异常= {com.mongodb.MongoSocketException:mongo3},由{java.net.UnknownHostException: mongo3}},{地址= mongo2:27017,类型=未知,状态=连接,异常= {com.mongodb.MongoSocketException:mongo2},由{java.net.UnknownHostException:mongo2}}引起,{地址= mongo1:27017 ,类型=未知,状态=正在连接,异常= {com.mongodb.MongoSocketException:mongo1},由{java.net.UnknownHostException:mongo1}},{地址= mongorb:27017,类型=未知,状态=正在连接,异常引起= {com.mongodb.MongoSocketException:mongorb},由{java.net.UnknownHostException:mongorb}}]“”

1 个答案:

答案 0 :(得分:0)

此位:

  

{地址= mongo3:27017,类型=未知,状态=正在连接,异常= {com.mongodb.MongoSocketException:mongo3},由{java.net.UnknownHostException:mongo3}}引起

在每个mongo实例中重复

,从本质上讲,这意味着您的mongo实例不可访问,因为mongorbmongo1mongo2mongo3不是'不能正确映射到相应的IP。

它似乎也好像您试图将每个实例映射到192.168.1.102上的不同端口一样,但是您的代码正在默认端口27017上发出所有请求。

我不熟悉Eclipse或Spring,但是您可能应该为每个实例配置主机,IP和端口,然后它应该可以正常运行。