4

我已经构建了以下基础设施以用于 AWS Fargate。

ECS 管理私有子网中的容器,流量通过公有子网通过面向 Internet 的 ALB 路由到它们。

通过 NAT 网关控制对私有子网中容器的 Internet 访问。

我创建了一个 git repo 来演示手头的问题
https://github.com/GreenyMcDuff/aws-fargate-public

警告:运行它会花钱

需要 Terraform v0.11.7 或更高版本

在此处输入图像描述

以下是安全组规则:

alb-sg

+----------------+----------+------+------------+
| Ingress/Egress | Protocol | Port |   Source   |
+----------------+----------+------+------------+
| Ingress        | TCP      | 80   | 0.0.0.0/0  |
| Egress         | All      | All  | 0.0.0.0/0  |
+----------------+----------+------+------------+

ecs-tasks-sg

+----------------+----------+---------+-----------+
| Ingress/Egress | Protocol |  Port   |  Source   |
+----------------+----------+---------+-----------+
| Ingress        | TCP      | 80      | 0.0.0.0/0 |
| Ingress        | TCP      | 1-65535 | alb-sg-id |
| Egress         | All      | All     | 0.0.0.0/0 |
+----------------+----------+---------+-----------+

这是路由表

公共路由表

+-------------+--------+
| Destination | Target |
+-------------+--------+
| 10.0.0.0/16 | local  |
| 0.0.0.0/0   | igw-id |
+-------------+--------+

私有路由表

+-------------+--------+
| Destination | Target |
+-------------+--------+
| 10.0.0.0/16 | local  |
| 0.0.0.0/0   | nat-id |
+-------------+--------+

所以几乎一切似乎都在工作。我要启动的容器是 httpd:2.4来自 docker hub 的图像。

  • 图片下载成功
  • 容器启动并进入RUNNING正常状态。
  • elb 健康检查通过
  • 我在我的公共子网中启动了一个 Windows EC2 实例,对其进行 RDP,并在 Internet Explorer 中浏览了容器 ip,我得到了预期的页面

由于上述几点,我假设这是一个路由或安全组问题。

问题是,当我尝试浏览在容器上运行的站点时,通过点击 Application Load Balancers DNS 名称 ( xxxx.AWS_REGION.elb.amazonaws.com),我收到“无法访问此站点”错误。

任何关于为什么会发生这种情况的解释都会受到极大的欢迎。

请让我知道是否有更多信息会有所帮助,我会尽力提供。

4

0 回答 0