Docker中的SpringBoot未连接到服务器上的Mongo(非Dockerized)

问题描述 投票:0回答:1

[尝试连接到mongodb群集时出现以下错误-通过dockerized的spring boot应用程序部署在三台不同服务器上的ReplicaSet(非dockerized)。

2020-04-06 19:40:06.263  INFO 1 --- [           main] org.mongodb.driver.cluster               : Cluster created with settings {hosts=[196.12.7.156:27017, 196.12.7.157:27017, 196.12.7.158:27017], mode=MULTIPLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
2020-04-06 19:40:06.263  INFO 1 --- [           main] org.mongodb.driver.cluster               : Adding discovered server 196.12.7.156:27017 to client view of cluster
2020-04-06 19:40:06.301  INFO 1 --- [           main] org.mongodb.driver.cluster               : Adding discovered server 196.12.7.157:27017 to client view of cluster
2020-04-06 19:40:06.304  INFO 1 --- [           main] org.mongodb.driver.cluster               : Adding discovered server 196.12.7.158:27017 to client view of cluster
2020-04-06 19:40:06.424  INFO 1 --- [.16.8.179:27017] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:3, serverValue:33289}] to 196.12.7.158:27017
2020-04-06 19:40:06.427  INFO 1 --- [.16.8.179:27017] org.mongodb.driver.cluster               : Monitor thread successfully connected to server with description ServerDescription{address=196.12.7.158:27017, type=REPLICA_SET_SECONDARY, state=CONNECTED, ok=true, version=ServerVersion{versionList=[3, 2, 11]}, minWireVersion=0, maxWireVersion=4, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=null, roundTripTimeNanos=1686431, setName='rs0', canonicalAddress=seabatch3:27017, hosts=[seabatch3:27017, seabatch1:27017, seabatch2:27017], passives=[], arbiters=[], primary='seabatch1:27017', tagSet=TagSet{[]}, electionId=null, setVersion=6, lastWriteDate=null, lastUpdateTimeNanos=2764696590071705}
2020-04-06 19:40:06.433  INFO 1 --- [.16.8.177:27017] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:1, serverValue:75063}] to 196.12.7.156:27017
2020-04-06 19:40:06.434  INFO 1 --- [.16.8.178:27017] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:2, serverValue:24932}] to 196.12.7.157:27017
2020-04-06 19:40:06.435  INFO 1 --- [.16.8.179:27017] org.mongodb.driver.cluster               : Discovered cluster type of REPLICA_SET
2020-04-06 19:40:06.438  INFO 1 --- [.16.8.177:27017] org.mongodb.driver.cluster               : Monitor thread successfully connected to server with description ServerDescription{address=196.12.7.156:27017, type=REPLICA_SET_PRIMARY, state=CONNECTED, ok=true, version=ServerVersion{versionList=[3, 2, 11]}, minWireVersion=0, maxWireVersion=4, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=null, roundTripTimeNanos=4744734, setName='rs0', canonicalAddress=seabatch1:27017, hosts=[seabatch3:27017, seabatch1:27017, seabatch2:27017], passives=[], arbiters=[], primary='seabatch1:27017', tagSet=TagSet{[]}, electionId=7fffffff0000000000000061, setVersion=6, lastWriteDate=null, lastUpdateTimeNanos=2764696601428299}
2020-04-06 19:40:06.438  INFO 1 --- [.16.8.178:27017] org.mongodb.driver.cluster               : Monitor thread successfully connected to server with description ServerDescription{address=196.12.7.157:27017, type=REPLICA_SET_SECONDARY, state=CONNECTED, ok=true, version=ServerVersion{versionList=[3, 2, 11]}, minWireVersion=0, maxWireVersion=4, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=null, roundTripTimeNanos=3873250, setName='rs0', canonicalAddress=seabatch2:27017, hosts=[seabatch3:27017, seabatch1:27017, seabatch2:27017], passives=[], arbiters=[], primary='seabatch1:27017', tagSet=TagSet{[]}, electionId=null, setVersion=6, lastWriteDate=null, lastUpdateTimeNanos=2764696602199597}
2020-04-06 19:40:06.441  INFO 1 --- [.16.8.179:27017] org.mongodb.driver.cluster               : Adding discovered server seabatch3:27017 to client view of cluster
2020-04-06 19:40:06.447  INFO 1 --- [.16.8.179:27017] org.mongodb.driver.cluster               : Adding discovered server seabatch1:27017 to client view of cluster
2020-04-06 19:40:06.455  INFO 1 --- [.16.8.179:27017] org.mongodb.driver.cluster               : Adding discovered server seabatch2:27017 to client view of cluster
2020-04-06 19:40:06.461  INFO 1 --- ['}-seabatch3:27017] org.mongodb.driver.cluster               : Exception in monitor thread while connecting to server seabatch3:27017

com.mongodb.MongoSocketException: seabatch3: Name does not resolve
    at com.mongodb.ServerAddress.getSocketAddresses(ServerAddress.java:211) ~[mongodb-driver-core-3.11.2.jar!/:na]
    at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:75) ~[mongodb-driver-core-3.11.2.jar!/:na]
    at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ~[mongodb-driver-core-3.11.2.jar!/:na]
    at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:128) ~[mongodb-driver-core-3.11.2.jar!/:na]
    at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) ~[mongodb-driver-core-3.11.2.jar!/:na]
    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_212]
Caused by: java.net.UnknownHostException: seabatch3: Name does not resolve
    at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method) ~[na:1.8.0_212]
    at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:929) ~[na:1.8.0_212]
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1324) ~[na:1.8.0_212]
    at java.net.InetAddress.getAllByName0(InetAddress.java:1277) ~[na:1.8.0_212]
    at java.net.InetAddress.getAllByName(InetAddress.java:1193) ~[na:1.8.0_212]
    at java.net.InetAddress.getAllByName(InetAddress.java:1127) ~[na:1.8.0_212]
    at com.mongodb.ServerAddress.getSocketAddresses(ServerAddress.java:203) ~[mongodb-driver-core-3.11.2.jar!/:na]
    ... 5 common frames omitted

2020-04-06 19:40:06.466  INFO 1 --- ['}-seabatch1:27017] org.mongodb.driver.cluster               : Exception in monitor thread while connecting to server seabatch1:27017

com.mongodb.MongoSocketException: seabatch1: Name does not resolve
    at com.mongodb.ServerAddress.getSocketAddresses(ServerAddress.java:211) ~[mongodb-driver-core-3.11.2.jar!/:na]
    at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:75) ~[mongodb-driver-core-3.11.2.jar!/:na]
    at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ~[mongodb-driver-core-3.11.2.jar!/:na]
    at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:128) ~[mongodb-driver-core-3.11.2.jar!/:na]
    at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) ~[mongodb-driver-core-3.11.2.jar!/:na]
    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_212]
Caused by: java.net.UnknownHostException: seabatch1: Name does not resolve
    at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method) ~[na:1.8.0_212]
    at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:929) ~[na:1.8.0_212]
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1324) ~[na:1.8.0_212]
    at java.net.InetAddress.getAllByName0(InetAddress.java:1277) ~[na:1.8.0_212]
    at java.net.InetAddress.getAllByName(InetAddress.java:1193) ~[na:1.8.0_212]
    at java.net.InetAddress.getAllByName(InetAddress.java:1127) ~[na:1.8.0_212]
    at com.mongodb.ServerAddress.getSocketAddresses(ServerAddress.java:203) ~[mongodb-driver-core-3.11.2.jar!/:na]
    ... 5 common frames omitted

2020-04-06 19:40:06.466  INFO 1 --- [.16.8.179:27017] org.mongodb.driver.cluster               : Canonical address seabatch3:27017 does not match server address.  Removing 196.12.7.158:27017 from client view of cluster
2020-04-06 19:40:06.474  INFO 1 --- [.16.8.178:27017] org.mongodb.driver.cluster               : Canonical address seabatch2:27017 does not match server address.  Removing 196.12.7.157:27017 from client view of cluster
2020-04-06 19:40:06.474  INFO 1 --- ['}-seabatch2:27017] org.mongodb.driver.cluster               : Exception in monitor thread while connecting to server seabatch2:27017

com.mongodb.MongoSocketException: seabatch2: Name does not resolve
    at com.mongodb.ServerAddress.getSocketAddresses(ServerAddress.java:211) ~[mongodb-driver-core-3.11.2.jar!/:na]
    at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:75) ~[mongodb-driver-core-3.11.2.jar!/:na]
    at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ~[mongodb-driver-core-3.11.2.jar!/:na]
    at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:128) ~[mongodb-driver-core-3.11.2.jar!/:na]
    at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) ~[mongodb-driver-core-3.11.2.jar!/:na]
    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_212]
Caused by: java.net.UnknownHostException: seabatch2: Name does not resolve
    at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method) ~[na:1.8.0_212]
    at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:929) ~[na:1.8.0_212]
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1324) ~[na:1.8.0_212]
    at java.net.InetAddress.getAllByName0(InetAddress.java:1277) ~[na:1.8.0_212]
    at java.net.InetAddress.getAllByName(InetAddress.java:1193) ~[na:1.8.0_212]
    at java.net.InetAddress.getAllByName(InetAddress.java:1127) ~[na:1.8.0_212]
    at com.mongodb.ServerAddress.getSocketAddresses(ServerAddress.java:203) ~[mongodb-driver-core-3.11.2.jar!/:na]
    ... 5 common frames omitted

最初,它连接到mongodb群集并获取主机名,然后应用程序无法启动。

我的猜测是,由于应用程序已部署在Docker容器中,因此docker假定mongodb也已部署在另一个容器中,并尝试通过容器名称查找它。

关于如何解决此问题的任何建议都会很有帮助。

谢谢!

mongodb spring-boot docker spring-data-mongodb unknown-host
1个回答
0
投票

在副本集配置中,每个节点都由某个主机名引用。这些主机名必须是可解析的,并且可以从您的应用程序访问。

听起来您正在使用对主机有意义但在容器中不可解析的名称。在您的容器中,您还可以在连接字符串中使用其他主机名。然后,初始连接成功,但是驱动程序随后使用RS配置中定义的名称重新连接到每个RS成员,并且失败。

[您需要更改RS配置以使用可从主机和容器中解析的名称,或使现有名称可解析并可从容器访问。

“可访问”是指如果名称在不同环境中解析为不同的IP地址,则这些IP必须路由到有问题的节点。

© www.soinside.com 2019 - 2024. All rights reserved.