【问题标题】:AWS, NodeJS - Connecting app to Mongodb on another EC2 instanceAWS,NodeJS - 将应用程序连接到另一个 EC2 实例上的 Mongodb
【发布时间】:2017-03-18 18:45:47
【问题描述】:

我正在尝试将在一个 EC2 实例上运行的应用程序连接到在另一个 EC2 实例上运行的 MongoDB。我很确定问题出在安全设置中,但我不太确定如何处理。

首先,我的应用实例位于 ELB 后面的自动缩放组中。实例和 ELB 的入站安全设置允许从任何地方访问端口 80,以及来自其自身安全组的所有流量。

如果该实例的安全组接受来自任何地方的所有入站流量,则运行 Mongo 的 EC2 实例能够建立连接。我尝试过的任何其他配置都会导致应用程序说它无法与远程地址建立连接。我已设置规则以接受来自我拥有的所有安全组的入站流量,但它似乎只有在我允许来自任何地方的所有流量时才有效。

另外,我的数据库实例设置了一个弹性 IP。我也应该在 ELB 后面有这个实例吗?

所以我的问题是:

1) 如何安全地连接到运行 mongo 的 EC2 实例?

2) 就架构而言,以这种方式运行我的数据库是否有意义,或者我也应该在负载均衡器后面使用它?

这个问题比我想象的要严重得多,因此我们将不胜感激。

注意

我还在/etc/mongo.conf中设置了bind_ip=0.0.0.0

【问题讨论】:

    标签: node.js mongodb security amazon-web-services amazon-ec2


    【解决方案1】:

    您的问题是您使用公共弹性 IP 从其他服务器连接到您的数据库服务器。这意味着连接会连接到 Internet 并返回到您的 VPC,这会带来以下问题:

    1. 由于数据传输未包含在您的 VPC 中而导致的安全问题
    2. 网络延迟问题
    3. 您的数据库服务器的安全组无法识别入站连接的安全组

    摆脱 MongoDB 服务器上的弹性 IP,除非您打算从 VPC 外部连接到它,否则不需要它。修改您的服务器以在创建与数据库服务器的连接时使用分配给您的数据库服务器的私有内部 IP 地址。最后,重新锁定您的安全组,只允许其他安全组访问数据库。

    可选:在 Route53 中创建一个私有托管区域,其中 A 记录指向您的数据库服务器的私有 IP 地址,然后使用该主机名而不是内部 IP 地址。

    【讨论】:

      猜你喜欢
      • 2018-07-22
      • 2016-09-22
      • 2015-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-01
      • 2017-12-16
      • 1970-01-01
      相关资源
      最近更新 更多