我已经看到了这个问题: 来自AWS autoscaling组的输出stream量的静态IP地址,但它似乎不适合什么即时通讯尝试做。
这是一个场景:
我有一个自动缩放的Web服务器组接收来自ELB的stream量。 这对传入的networkingstream量正常工作。
问题是我有一些这些Web服务器需要连接到的外部服务。 这些服务要求我为供应商提供一个IP地址,以便他们可以将我的服务器列入白名单。 我试图创build一个NAT实例,所以来自这些Web服务器的出站请求将全部来自一个IP(因为扩展组可能有自动分配的任何IP)。
AWS的所有场景都是通过一个NAT给私人子网访问互联网。 在这种情况下,我只需要通过NAT路由来自这些框的请求。 传入的networkingstream量应该仍然正常工作,直接通过互联网网关的响应。
当我尝试设置这个,通过修改主要路由表通过NAT发送出站stream量,一切都停止工作(我假设,因为没有规则通过互联网网关路由stream量,因为我只是将其更改为NAT)
希望这是有道理的。 任何build议将不胜感激。
NAT实例正确地解决了你所处的情况,但是我怀疑你做了一个通用的configuration错误 – 你的web服务器实例和你的ELB在同一个子网上。
这样做很直观,但这是不正确的,除非您的Web服务器也有自己的公共IP地址。
我假设这一点,因为否则没有理由让你的networking服务器无法在更改默认路由时回复请求 – Web服务器不会与浏览器交谈,只会与ELB交谈 – 那么,什么是在更改默认路由时,技术上的突破是ELB不能再路由回浏览器。
正确的configuration是将ELB放置在使用Internet网关作为默认路由的公共子网上,以及使用NAT实例作为其默认路由的专用子网上的Web服务器。 当然,NAT实例本身也在公共子网上。
参见VPC公共子网与ELB连接的互联网接入 。
虽然这个AWS文档是关于Elastic Beanstalk的,但是插图仍然是相关的。 ELB显示在一个公共子网中,还有一个NAT实例,Web服务器位于一个私有子网中。
另请参见为什么我们需要VPC中的私有子网?