0

我们有典型的 3 层架构,包括 Web、App 和 DB。我们可以将 Web 层中的 EC2 实例设为私有吗?并只允许通过 ALB 传入流量?AFAIK 我们可以应用一个只允许来自 ALB 的 SG 的连接的 SG。但是,如果我们的私有 EC2 实例必须将响应返回给客户端怎么办?它将如何通过 ALB 路由,因为 ALB 主要用于管理传入流量。同样对于传出流量,我们可以配置私有 EC2 实例 -> ALB -> Internet 之类的东西吗?如果是,那怎么办?那么,私有 EC2 实例有没有办法在不分配公共 IP 的情况下与 Internet 通信?

4

2 回答 2

2

但是,如果我们的私有 EC2 实例必须将响应返回给客户端怎么办?它将如何通过 ALB 路由,因为 ALB 主要用于管理传入流量。

假设您的 ALB 和实例设置正确,您不必做任何特别的事情。如果实例位于没有任何 Internet 连接的私有子网中,则任何到达 ALB 的请求都将能够返回到客户端事件。

但是,您的实例将无法自行启动 Internet 连接。因此,如果实例不需要互联网即可运行,则不需要 NAT。否则,它是必需的。

于 2020-09-26T11:03:54.900 回答
1

将您的实例保存在私有子网中是最佳实践,即使对于 Web 层也是如此。

对于入站流量,您可以将负载均衡器添加到您的公共子网中,然后仅允许来自负载均衡器的 Web 安全组上的 HTTP/HTTPS 入口。您可以通过将子网范围添加到 Web 服务器安全组来执行此操作,或者改为引用负载均衡器分配给它的安全组。

对于私有子网中的出站 Internet 流量,您需要在公共子网中创建NAT 网关NAT 实例,然后0.0.0.0/0为私有子网添加路由以将流量路由到 NAT。此外,如果您想要 IPv6 流量,您将创建一个仅出口互联网网关,其路由为::/0.

于 2020-09-26T10:58:28.387 回答