Estou tentando me conectar ao meu MongoDB que está na minha instância do EC2. Eu sou capaz de me conectar usando o DNS público com esta declaração:
mongoClient = new MongoClient("ec2-3-92-197-163.compute-1.amazonaws.com", 27021);
mas se eu tentasse substituir o "ec2-3-92...." pelo endereço IP privado, assim:
mongoClient = new MongoClient("172.31.90.193", 27021);
Dá-me o erro:
INFO: Exceção no thread do monitor durante a conexão com o servidor 172.31.90.193:27021 com.mongodb.MongoSocketOpenException: Exceção abrindo soquete em com.mongodb.internal.connection.SocketStream.open(SocketStream.java:70) em com.mongodb.internal. connection.InternalStreamConnection.open(InternalStreamConnection.java:126) em com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) em java.base/java.lang.Thread.run(Thread.java: 844) Causado por: java.net.SocketTimeoutException: a conexão expirou em java.base/java.net.PlainSocketImpl.socketConnect(Native Method) em java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:400) em java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:243) em java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:225) em java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:402) em java.base/java.net.Socket.connect(Socket. java:591) em com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:64) em com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:79) em com.mongodb.internal.connection .SocketStream.open(SocketStream.java:65) ... mais 3SocketStream.initializeSocket(SocketStream.java:79) em com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ... 3 maisSocketStream.initializeSocket(SocketStream.java:79) em com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ... 3 mais
Exceção no encadeamento "main" com.mongodb.MongoTimeoutException: Expirado após 30.000 ms enquanto aguardava a conexão. A visualização do cliente do estado do cluster é {type=UNKNOWN, servers=[{address=172.31.90.193:27021, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, causada por {java. net.SocketTimeoutException: connect timed out}}] em com.mongodb.internal.connection.BaseCluster.getDescription(BaseCluster.java:182) em com.mongodb.internal.connection.SingleServerCluster.getDescription(SingleServerCluster.java:41) em com .mongodb.client.internal.MongoClientDelegate.getConnectedClusterDescription(MongoClientDelegate.java:136) em com.mongodb.client.internal.MongoClientDelegate.createClientSession(MongoClientDelegate.java:94) em com.mongodb.client.internal.
Está faltando algo que está me impedindo de me conectar ao mongo usando o endereço IP privado?
Eu configurei as regras de entrada como tal:
e é assim que meu arquivo mongod.conf se parece:
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data. systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log
# Where and how to store data. storage: dbPath: /var/lib/mongo journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs processManagement: fork: true # fork and run in background pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile timeZoneInfo: /usr/share/zoneinfo
# network interfaces net: port: 27017
# bindIp: 172.31.90.193 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
#security:
#operationProfiling:
replication: replSetName: Midterm sharding: clusterRole: configsvr
## Enterprise-Only Options
#auditLog:
#snmp:
Observação: não defini nenhuma permissão ou adicionei credenciais na coleção do meu banco de dados de administrador.