如何在AWS ec2实例之间连接到mongodb时配置安全组?

时间:2016-02-19 18:42:29

标签: mongodb security amazon-web-services amazon-ec2

我有一个带有mongodb的ec2实例(称为ec2-mongo)和安全组sg-mongodb-server。我试图通过另一个ec2实例(称为ec2-connect)与安全组sg-connect连接到mongodb。我想设置规则以允许两个安全组之间的流量,而无需引用特定的IP地址。我怎么能这样做?

当我的安全组设置如下时,我可以连接到mongo(因此据我所知,服务器没有任何问题)。出站设置为全部:

SG-mongodb的服务器

Inbound:
Port    Source
22      my_ip
27017   ip_of_ec2-connect

SG-连接

Inbound:
Port    Source
22      my_ip
27017   ip_of_ec2-mongo

但是当我尝试使用安全组而不是IP地址时,我无法连接到mongodb。

SG-mongodb的服务器

Inbound:
Port    Source
22      my_ip
27017   sg-connect

SG-连接

Inbound:
Port    Source
22      my_ip
27017   sg-mongodb-server

尝试连接时出现错误消息:

MongoDB shell version: 3.2.3
connecting to: XXX.XXX.XXX.XXX/test
2016-02-19T18:24:09.245+0000 W NETWORK  [thread1] Failed to connect to XXX.XXX.XXX.XXX:27017 after 5000 milliseconds, giving up.
2016-02-19T18:24:09.245+0000 E QUERY    [thread1] Error: couldn't connect to server XXX.XXX.XXX.XXX:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:226:14
@(connect):1:6

exception: connect failed

1 个答案:

答案 0 :(得分:4)

为了使安全组引用有效,您需要通过MongoDB服务器的私有 IP地址从EC2实例连接到MongoDB,而不是它的公共IP地址。

如果您正在使用公共IP地址(或DNS名称正在解析为公共IP地址),则连接将离开您的VPC并重新进入,从而看起来来自外部世界。

通过使用私有IP地址,它可以告诉它来自您的安全组。