2

我正在尝试实现此博客中描述的以下架构

在此处输入图像描述

我有一个使用 ENI(私有 IP 为 10.0.241.85)在私有子网(我们称之为“ subnet-1)中运行的 Fargate 服务。ENI 也有一个弹性 IP,因为如果没有,它就无法从 ECR 中提取图像。我不认为这会很重要吗?我服务中的容器暴露了 3000/4000 端口。然后我将我的 ALB 和 NAT 网关放在公共子网中(我们称之为“子网 2)。ALB 将端口 80/443 上的流量转发到必要的目标组。目标组有2 个针对 ENI 上的私有 IP 的已注册任务(1 个在端口 3000 上,另一个在 4000 上)。据我所知,这应该允许流量,对吗?

对于流出的流量,subnet-1有一条默认路由 ( 0.0.0.0/0 ) 到subnet-2中的 NAT 网关,这应该允许流出,对吗?

所有服务都在同一个VPC 和同一个可用区(如果适用

这些服务使用了2 个安全组:

  1. 测试
  2. api

测试(入站) 在此处输入图像描述

测试(出站) 在此处输入图像描述

api(入站) 在此处输入图像描述

api(出站) 在此处输入图像描述

我们利用临时端口在 2 个安全组之间进行通信

注意:我在这里删除了目的地,但是,是的,目的地是测试安全组

| Service | Security Groups |
|---------|-----------------|
| ENI     | test            |
|         | api             |
|---------|-----------------|
| ALB     | api             |
|---------|-----------------|

子网 1 路由表 在此处输入图像描述

子网 2 路由表 在此处输入图像描述

注意:覆盖的路由只是一个对等连接,因此与此无关

据我所知,这两个子网应该能够使用其中服务的私有 IP 进行通信,这就是我在这里所做的。

运行状况检查失败并显示以下通用消息:

任务未通过 ELB 健康检查

我还查看了这个博客以获得更多帮助,但无济于事。

任何帮助将不胜感激 :)

4

1 回答 1

2

如果您的任务正在侦听端口 3000 和 4000,那么您的安全组(test我猜,根据您的评论)将需要允许这些端口。按照现在的配置,我看不到端口 3000 和 4000 是允许的。

其他几点注意事项 - 私有子网中的 ENI 上的弹性 IP 不会做任何事情,因为私有子网不能直接访问 Internet。如果您在没有它的情况下连接到 ECR 时遇到问题,那么肯定是其他问题。

此外,您的 SG 规则允许非常大的 CIDR 块,例如0.0.0.0/0. 更安全的配置将只允许需要访问的特定安全组。在这种情况下,您需要来自负载均衡器的 SG ID 的应用程序端口(听起来像 3000 和 4000)。

于 2019-07-31T14:37:20.127 回答