本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
服务负载均衡器问题排查
Amazon ECS 服务可向 Elastic Load Balancing 负载均衡器注册任务。负载均衡器配置错误是导致任务停止的常见原因。如果您的已停止任务是由使用负载均衡器的服务启动的,请考虑以下可能原因。
- Amazon ECS 服务相关角色不存在
-
Amazon ECS 服务链接角色允许 Amazon ECS 服务使用 Elastic Load Balancing 器注册容器实例。将在您的账户中创建该服务相关角色。有关更多信息,请参阅对 Amazon ECS 使用服务相关角色:
- 容器实例安全组
-
如果您的容器已映射到容器实例上的端口 80,则您的容器实例安全组必须允许端口 80 上的入站流量才能通过负载均衡器运行状况检查。
- 未为所有可用区配置 Elastic Load Balancing 负载均衡器
-
您的负载均衡器应配置为使用一个区域中的所有可用区,或至少使用您的容器实例所在的所有可用区。如果服务使用一个负载均衡器,并在驻留在可用区(尚未为该可用区配置使用负载均衡器)中的容器实例上启动一个任务,则该任务永不会通过运行状况检查并且将被终止。
- Elastic Load Balancing 负载均衡器运行状况检查配置错
-
负载均衡器运行状况检查参数可能过于严格或指向不存在的资源。如果确定容器实例运行状况不佳,则系统会从负载均衡器中删除容器实例。确保验证是否已为服务负载均衡器正确配置以下参数。
- Ping 端口
-
负载均衡器运行状况检查的 Ping Port 值是该检查要确定其运行状况是否正常的容器实例上的端口。如果此端口配置错误,负载均衡器可能会从自身注销容器实例。此端口应配置为使用服务的任务定义中用于运行状况检查的容器的
hostPort
值。 - Ping 路径
-
此值通常设置为
index.html
,但如果您的服务未响应该请求,则无法通过运行状况检查。如果您的容器没有index.html
文件,您可以将此值设置为/
,以将容器实例的基本 URL 作为目标。 - 响应超时
-
这是您的容器必须响应运行状况检查 ping 的时间量。如果此值小于响应所需的时间量,则无法通过运行状况检查。
- 运行状况检查间隔
-
这是运行状况检查 ping 之间的时间量。您的运行状况检查间隔越短,您的容器实例就越快达到 Unhealthy Threshold。
- 不正常阈值
-
这是您的容器实例被视为不正常之前,允许未通过运行状况检查的次数。如果您的不正常阈值为 2,并且运行状况检查间隔为 30 秒,则您的任务在被视为不正常之前有 60 秒的时间响应运行状况检查 ping。您可以增大不正常阈值或运行状况检查间隔,以便为您的任务提供更多响应时间。
- 无法更新服务
servicename
:任务定义中的负载均衡器容器名称或端口已更改 -
如果您的服务使用负载均衡器,则可以使用Amazon CLI或 SDK 来修改负载均衡器配置。有关如何修改配置的信息,请参见UpdateService在亚马逊弹性容器服务 API 参考。如果您更新服务的任务定义,则在负载均衡器配置中指定的容器名称和容器端口必须保留在任务定义中。