com.mongodb.MongoSocketOpenException Разъем открытия исключений - PullRequest
0 голосов
/ 06 января 2019

Постановка задачи: У меня есть два экземпляра Amazon EC2, работающих на одном VPC. На одном ec2 запущено веб-приложение (веб-сайт Java Spring mvc), а на втором - mongodb.

Я могу сделать SSH с моего локального компьютера для обоих экземпляров, а также для двух экземпляров друг от друга. Также telnet отлично работает друг от друга, используя частный IP.

Я также могу подключиться к экземпляру ec2 mongodb из моего личного (локального) рабочего пространства, так как создаются необходимые правила для приема соединений от локального экземпляра и экземпляра ec2 веб-приложения.

Однако мой экземпляр веб-приложения не может подключиться к этому экземпляру mongodb и выдает следующее исключение при попытке загрузить страницу индекса.

Исключение:

com.mongodb.diagnostics.logging.JULLogger log
INFO: Cluster created with settings {hosts=[xxx.xx.xx.xxx:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
com.mongodb.diagnostics.logging.JULLogger log
INFO: Exception in monitor thread while connecting to server xxx.xx.xx.xxx:27017
com.mongodb.MongoSocketOpenException: Exception opening socket
    at com.mongodb.connection.SocketStream.open(SocketStream.java:63)
    at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115)
    at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:113)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.ConnectException: Permission denied (connect failed)
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:57)
    at com.mongodb.connection.SocketStream.open(SocketStream.java:58)
    ... 3 more

com.mongodb.diagnostics.logging.JULLogger log
INFO: No server chosen by ReadPreferenceServerSelector{readPreference=primary} from cluster description ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, serverDescriptions=[ServerDescription{address=xxx.xx.xx.xxx:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: Permission denied (connect failed)}}]}. Waiting for 30000 ms before timing out

Другие детали: - Были созданы две группы безопасности. 1 для веб-приложения 2 Mongodb - Веб-приложение EC2 работает на RHEL + Java 1.8 + Tomcat - Экземпляр EC2 Mongo работает на RHEL (следуя инструкциям https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/) - Драйвер Java используется для подключения к MongoDB: {driver: {name: "mongo-java-driver", версия: "3.4.1"} - bind_ip настроен на 0.0.0.0 и в настоящее время не имеет административной защиты.

Предположение: Я уверен, что экземпляр mongodb ec2 принимает соединение, поскольку я могу подключиться из локальной рабочей области.

Любая подсказка или направление в этом отношении будет действительно полезным. Спасибо.

bind_ip установлен в 0.0.0.0

Группы безопасности принимают соединения практически везде и на входящие и исходящие 0.0.0.0/0

.

Правила iptables, установленные для INPUT и OUTPUT в обоих экземплярах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...