使用私有 IP 地址連接到 ec2 實例上的 mongodb
我試圖連接到我的 EC2 實例上的 MongoDB。我可以通過以下語句連接到使用公共 dns:
mongoClient = new MongoClient(“ec2-3-92-197-163.compute-1.amazonaws.com”, 27021);
但如果我嘗試用私有 IP 地址替換“ec2-3-92 ….”,如下所示:
mongoClient = new MongoClient(“172.31.90.193”, 27021);
它給了我錯誤:
資訊:連接到伺服器 172.31.90.193:27021 com.mongodb.MongoSocketOpenException 時,監視器執行緒出現異常:com.mongodb.internal 的 com.mongodb.internal.connection.SocketStream.open(SocketStream.java:70) 處的異常打開套接字。 connection.InternalStreamConnection.open(InternalStreamConnection.java:126) at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) at java.base/java.lang.Thread.run(Thread.java: 844)由:java.net.SocketTimeoutException:在 java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:400) 處的 java.base/java.net.PlainSocketImpl.socketConnect(Native Method) 處連接超時java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:243) 在 java。base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:225) at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:402) at java.base/java.net.Socket.connect(Socket. java:591) 在 com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:64) 在 com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:79) 在 com.mongodb.internal.connection .SocketStream.open(SocketStream.java:65) … 還有 3 個com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) 上的 SocketStream.initializeSocket(SocketStream.java:79) … 還有 3 個com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) 上的 SocketStream.initializeSocket(SocketStream.java:79) … 還有 3 個
執行緒“main”com.mongodb.MongoTimeoutException 中的異常:等待連接時在 30000 毫秒後超時。集群狀態的客戶端視圖是 {type=UNKNOWN, servers=
$$ {address=172.31.90.193:27021, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.SocketTimeoutException: connect timed out}} $$ 在 com.mongodb.internal.connection.BaseCluster.getDescription(BaseCluster.java:182) 在 com.mongodb.internal.connection.SingleServerCluster.getDescription(SingleServerCluster.java:41) 在 com.mongodb.client.internal.MongoClientDelegate.getConnectedClusterDescription (MongoClientDelegate.java:136) 在 com.mongodb.client.internal.MongoClientDelegate.createClientSession(MongoClientDelegate.java:94) 在 com.mongodb.client.internal.MongoClientDelegate $ DelegateOperationExecutor.getClientSession(MongoClientDelegate.java:249) at com.mongodb.client.internal.MongoClientDelegate $ DelegateOperationExecutor.execute(MongoClientDelegate.java:172) 在 com.mongodb.client.internal.MongoIterableImpl.execute(MongoIterableImpl.java:132) 在 com.mongodb.client.internal.MongoIterableImpl.iterator(MongoIterableImpl.java:86) 在 com .mongodb.client.internal.MongoIterableImpl.forEach(MongoIterableImpl.java:110) 在 App.main(App.java:46)
我是否缺少某些東西阻止我使用私有 IP 地址連接到 mongo?
我已經設置了入站規則,如下所示:
這就是我的 mongod.conf 文件的樣子:
# 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:
注意:我沒有在我的管理員數據庫集合中設置任何權限或添加憑據。
由於您嘗試從本地電腦連接到 EC2 實例中的 MongoDB,因此應通過公共網路(Internet)進行連接。
如果它是公共網路,您應該使用公共 IP或彈性 IP進行連接。
您不能使用私有 IP通過公共網路連接到在 AWS EC2 中執行的 MongoDB。