如何允许连接到不同 elb 的两个私有实例之间的网络流?
How to allow network flow between two private instances which are attached to different elb's?
我创建了一个带有 public 和私有子网的 VPC。对于 public 子网,我为私有子网 nat 网关附加了互联网网关,从这里我的计划是在私有子网中启动我的所有实例,并使用 elb 将它们与外界连接,为此我启动了我的 tomcat 服务器在私有子网中并附加到 public 子网中的 elb,我在私有子网中启动了 mongodb,public 子网 elb 附加到它。现在,当我从 tomcat 服务器调用 API 时,它应该从数据库中获取数据,当我在 elb sg 的任何地方允许 27017(mongodb 的端口)时,就会发生这种情况,这是我的位置我面临的问题是我不想允许来自每个地方的端口只有 tomcat 服务器应该通过 elb 与 mongodb 通信如何配置 elb 的安全组以仅允许来自 tomcat 的流量] 服务器。
解法:
由于您的 tomcat 服务器位于私有子网中,并且它正试图到达 public 子网中的 mongodb ELB,因此 tomcast 服务器的出站流量必须通过NAT 网关(不是 ELB)。
因此,与其将安全组设置为允许来自 0.0.0.0/0 的 27017 端口,不如允许来自 NAT 网关 IP 的 27017 端口。
您首先需要检查您使用的是旧式NAT网关实例还是新的VPC NAT网关解决方案,以获得所需的IP地址。
建议:
首先,您不想将实例和数据库之间的流量暴露给 public 互联网。请改用私有负载平衡器。
其次,mongodb 集群不需要 ELB(我假设您有一个集群)。 Mongodb 集群的目的是为了高可用性。 Write always go to the primary, and it is a bad practice to use secondaries to increase performance for read requests.
您应该设置 mongos 以接受连接并让它为您处理路由。在这种情况下,您的 tomcast 服务器可以直接连接到私有 mongos 端点,而无需将流量暴露到互联网。
如果你没有使用 mongodb 集群(在这种情况下我不明白你为什么首先使用负载均衡器)那么它更简单,只需使用 mongodb 服务器私有IP。
您可以创建一个专用于您的服务器和数据库之间的通信的安全组,并将该安全组附加到它们两者。
我不建议 public 应用程序使用 NAT,因为此 NAT 实例可能无法支持负载峰值。
我创建了一个带有 public 和私有子网的 VPC。对于 public 子网,我为私有子网 nat 网关附加了互联网网关,从这里我的计划是在私有子网中启动我的所有实例,并使用 elb 将它们与外界连接,为此我启动了我的 tomcat 服务器在私有子网中并附加到 public 子网中的 elb,我在私有子网中启动了 mongodb,public 子网 elb 附加到它。现在,当我从 tomcat 服务器调用 API 时,它应该从数据库中获取数据,当我在 elb sg 的任何地方允许 27017(mongodb 的端口)时,就会发生这种情况,这是我的位置我面临的问题是我不想允许来自每个地方的端口只有 tomcat 服务器应该通过 elb 与 mongodb 通信如何配置 elb 的安全组以仅允许来自 tomcat 的流量] 服务器。
解法:
由于您的 tomcat 服务器位于私有子网中,并且它正试图到达 public 子网中的 mongodb ELB,因此 tomcast 服务器的出站流量必须通过NAT 网关(不是 ELB)。
因此,与其将安全组设置为允许来自 0.0.0.0/0 的 27017 端口,不如允许来自 NAT 网关 IP 的 27017 端口。
您首先需要检查您使用的是旧式NAT网关实例还是新的VPC NAT网关解决方案,以获得所需的IP地址。
建议:
首先,您不想将实例和数据库之间的流量暴露给 public 互联网。请改用私有负载平衡器。
其次,mongodb 集群不需要 ELB(我假设您有一个集群)。 Mongodb 集群的目的是为了高可用性。 Write always go to the primary, and it is a bad practice to use secondaries to increase performance for read requests.
您应该设置 mongos 以接受连接并让它为您处理路由。在这种情况下,您的 tomcast 服务器可以直接连接到私有 mongos 端点,而无需将流量暴露到互联网。
如果你没有使用 mongodb 集群(在这种情况下我不明白你为什么首先使用负载均衡器)那么它更简单,只需使用 mongodb 服务器私有IP。
您可以创建一个专用于您的服务器和数据库之间的通信的安全组,并将该安全组附加到它们两者。
我不建议 public 应用程序使用 NAT,因为此 NAT 实例可能无法支持负载峰值。