ECS + ALB中的容器端口和主机端口的运行状况检查

时间:2017-05-29 07:43:10

标签: amazon-web-services amazon-ec2 amazon-ecs health-monitoring elastic-load-balancer

我在ECS中部署时遇到问题。

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

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

这会在我的目标群组的运行状况检查中造成问题。 事实上,对于每个实例,我都对动态端口(即可以)和容器端口(80)进行了健康检查。

所以动态端口说,没关系。和容器端口,逻辑上说不健康...... (就像在我的截图中) 'safe' cast operator

那你可以帮我解决为什么我有这种类型的错误(这个错误使我的服务器每5分钟终止一次......)

先谢谢你的帮助:D

2 个答案:

答案 0 :(得分:2)

所以对我来说,看起来你并没有完全使用动态端口映射。对于动态端口映射,您有

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

由于使用端口80的唯一内容是外部连接到您的应用程序和nginx(但它映射到不同的端口),因此您的健康检查都不应该命中端口80。对于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

答案 1 :(得分:-1)

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

所以这里有两个问题:

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

  2. 要删除端口80上的运行状况检查,请转到自动缩放组,然后在"目标组"部分,删除由ECS管理的目标组