AWS,NodeJS – 将应用程序连接到另一个EC2实例上的Mongodb

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

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

运行Mongo的EC2实例能够在该实例的安全组接受来自任何地方的所有入站通信的情况下进行连接。 我试过的任何其他configuration都会导致应用程序说它无法与远程地址build立连接。 我已经设置了规则来接受来自我拥有的所有安全组的入站stream量,但只有当我允许来自任何地方的所有stream量时,它似乎才起作用。

此外,我的数据库实例设置了一个弹性ip。 我应该在ELB背后有这个实例吗?

所以我的问题是这样的:

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

2)在体系结构方面,以这种方式运行我的数据库是否有意义,还是应该在负载平衡器后面加上这一点?

这个问题比我想象的要多得多,所以任何帮助,将不胜感激。

注意

我还在bind_ip=0.0.0.0设置了bind_ip=0.0.0.0

你的问题是,你正在使用公共弹性IP从你的其他服务器连接到你的数据库服务器。 这意味着连接将连接到互联网并返回到您的VPC中,这会出现以下问题:

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

摆脱MongoDB服务器上的弹性IP,除非您计划从VPC外部连接它,否则不需要它。 修改您的服务器以创build连接时使用分配给您的数据库服务器的私有内部IP地址。 最后,将您的安全组locking为只允许您的其他安全组访问数据库。

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