3

我很难弄清楚如何为我的 LoadBalancer 设置正确的 SecurityGroup 规则。我做了一个图表来尝试说明这个问题,请看下图:

我们的 ECS 设置

我有一个面向 Internet 的 LoadBalancer(图中的“Service A LoadBalancer”),它是从“内部”和我们的一个 ECS 服务(图中的“Task B”)请求的。对于内部请求,我可以为“Service A LoadBalancer”配置一个 SecurityGroup 规则,该规则允许从我们的内部 IP 的 CIDR 向端口 80 上的 LoadBalancer 传入请求。那里没问题。但是对于其他 ECS 服务任务 B,我将如何添加仅允许来自任务 B 的请求的规则(对于图中的“服务 A 安全组”)?(或仅来自 ECS 集群中的任务)。由于它是面向互联网的负载均衡器,因此请求来自机器 EC2 的公共 IP,而不是私有 IP(据我所知?)。

我显然可以制定一个规则,允许来自 0.0.0.0/0 的端口 80 上的请求,这会起作用,但这还远远不够严格。并且由于它是面向 Internet 的 LoadBalancer,因此添加一条允许来自“Cluster SecurityGroup”(在图中)的请求的规则不会削减它。我认为这是因为 LB 无法推断请求来自哪个 SecurityGroup,因为它是面向互联网的 - 如果它是内部 LoadBalancer,这将起作用。但我不能使用内部 LoadBalancer,因为它也是从外部 AWS(内部)请求的。

任何帮助都将不胜感激。

谢谢弗雷德里克

4

1 回答 1

1

我们通过运行单独的面向 Internet 和内部负载均衡器来解决这个问题。同一个集群可以有多个 ELB 或 ALB (ELBv2)。假设您的 ECS 集群在 IP 范围内运行,例如10.X.X.X您可以10.X.0.0/16在内部 ELB 上打开以供内部访问。只需确保 ECS 集群 SG 也对 ELB 开放。假设您在发出请求时使用内部 ELB 地址的 DNS,任务 B 可以通过内部 ELB 地址到达任务 A。如果您点击公共 DNS 的 IP,它将始终是公共请求。

但是,您可能需要长期考虑是否真的需要公共 ELB。下一步通常不是 IP 限制,而是运行诸如 openVPN 之类的 VPN,这样您就可以连接到 VPC 并访问专用网络上的所有内容。如果我们真的想在互联网上提供一些东西,例如外部客户,我们通常只会运行面向互联网的 ELB。

于 2017-02-07T13:41:46.083 回答