首页 文章

如何允许两个私有实例之间的网络流量连接到不同的elb?

提问于
浏览
0

我创建了一个包含公共和私有子网的VPC . 对于公共子网,我为私有子网nat网关连接了互联网网关,从这里我的计划是在私有子网中启动我的所有实例并使用elb将它们与外部世界连接,因为我在私有子网中启动了我的tomcat服务器并连接到elb在公共子网中,我在私有子网中启动了mongodb,并将公共子网elb连接到它 . 现在,当我从tomcat服务器调用API时,它应该从db中获取数据,当我从elb sg中的任何地方允许27017(mongodb端口)时发生这种情况,这是我面临的问题我不想让从每个只有tomcat服务器应该与mongodb通过elb通信的端口如何配置elb的安全组以允许来自tomcat服务器的流量 .

2 回答

  • 0

    Solution:

    由于您的tomcat服务器位于私有子网中并且它正在尝试访问公共子网中的mongodb ELB,因此必须通过NAT网关( Not the ELB )路由tomcast服务器的出站流量 .

    因此,不是将安全组设置为允许从0.0.0.0/0允许27017端口,而是可以从NAT网关IP允许27017端口 .

    您首先需要检查是否使用旧式NAT网关实例或新的VPC NAT网关解决方案,以获取所需的IP地址 .

    Suggestions:

    首先,您不希望将实例和数据库之间的流量公开给公共Internet . 请改用专用负载均衡器 .

    其次,mongodb集群不需要ELB(我假设你有一个集群) . Mongodb集群的目的是实现高可用性 . Write always go to the primary,和it is a bad practice to use secondaries to increase performance for read requests .

    你应该设置mongos来接受连接并让它为你处理路由 . 在这种情况下,您的tomcast服务器可以直接连接到私有mongos endpoints ,而不会将流量暴露给互联网 .

    如果你没有使用mongodb集群(在这种情况下我不明白为什么你首先使用了负载均衡器)那么它甚至更简单,只需使用mongodb服务器私有IP连接 .

  • 2

    您可以在服务器和数据库之间创建专用于此通信的安全组,并将此安全组附加到它们 .

    我不建议将NAT用于公共应用程序,因为此NAT实例可能无法支持加载峰值 .

相关问题