Mongodb

使用私有 IP 地址連接到 ec2 實例上的 mongodb

  • April 8, 2019

我試圖連接到我的 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。

引用自:https://dba.stackexchange.com/questions/234155