ECS + ALB 中容器端口和主机端口的健康检查

Health check on container port and host port in ECS + ALB

我在 ECS 中的部署有问题。

我尝试在前面有一个 ALB 的 2 个 EC2 实例上部署 2 个 docker 映像的 4 个实例。

所以在我的任务定义中,我使用了动态端口映射(容器端口 80 上有 2 个 Nginx)。

这在我的目标群体的健康检查中造成了麻烦。 事实上,对于每个实例,我都对动态端口(没问题)和容器端口 (80) 进行了健康检查。

所以动态端口说,没关系。而集装箱港口,逻辑上说不健康...... (就像我的截图一样)

所以你能帮我找出为什么我有这种类型的错误吗(这个错误让我的服务器每 5 分钟终止一次....)

提前感谢您的帮助:D

所以在我看来,您似乎没有完全使用动态端口映射。对于动态端口映射,您有

客户端->ALB(80端口)->EC2主机(动态端口)->容器(动态端口)->nginx(80端口)

None 你的健康检查应该命中端口 80,因为唯一使用端口 80 的是到你的应用程序和 nginx 的外部连接(但它映射到不同的端口)。对于 ALB 健康检查,您真正需要的只是一条命中路径,端口将默认为其连接的端口。

查看本文档中的主机端口映射:http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PortMapping.html

ALB 健康检查文档:http://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html

我通过 AWS 支持找到了解决方案。

所以这里有两个问题:

  1. 要禁用杀死 EC2 实例的运行状况,请转到自动缩放组并将运行状况检查切换为 "EC2" 类型

  2. 要删除端口 80 上的健康检查,请转到自动缩放组,然后在 "Target groups" 部分下,删除由 ECS

    [=21 管理的目标组=]