我在ECS中部署时遇到问题。
我尝试在2个EC2实例上部署4个2个docker镜像实例,前面有一个ALB。
所以在我的任务定义中,我使用动态端口映射(容器端口80上的2个Nginx)。
这会在我的目标群组的运行状况检查中造成问题。 事实上,对于每个实例,我都对动态端口(即可以)和容器端口(80)进行了健康检查。
所以动态端口说,没关系。和容器端口,逻辑上说不健康...... (就像在我的截图中) 'safe' cast operator
那你可以帮我解决为什么我有这种类型的错误(这个错误使我的服务器每5分钟终止一次......)
先谢谢你的帮助:D
答案 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支持的解决方案。
所以这里有两个问题:
要禁用杀死EC2实例的运行状况,请转到自动缩放组并将运行状况检查切换为" EC2"型
要删除端口80上的运行状况检查,请转到自动缩放组,然后在"目标组"部分,删除由ECS管理的目标组