对 Amazon ECS 中的服务负载均衡器进行故障排除
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 路径
-
这是负载均衡器运行状况检查的一部分。它是应用程序上的一个端点,可在应用程序运行正常时返回成功状态代码(例如 200)。此值通常设置为
index.html
,但如果您的服务未响应该请求,则无法通过运行状况检查。如果您的容器没有index.html
文件,您可以将此值设置为/
,以将容器实例的基本 URL 作为目标。 - 响应超时
-
这是您的容器必须响应运行状况检查 ping 的时间量。如果此值小于响应所需的时间量,则无法通过运行状况检查。
- 运行状况检查间隔
-
这是运行状况检查 ping 之间的时间量。您的运行状况检查间隔越短,您的容器实例就越快达到 Unhealthy Threshold。
- 不正常阈值
-
这是您的容器实例被视为不正常之前,允许未通过运行状况检查的次数。如果您的不正常阈值为 2,并且运行状况检查间隔为 30 秒,则您的任务在被视为不正常之前有 60 秒的时间响应运行状况检查 ping。您可以增大不正常阈值或运行状况检查间隔,以便为您的任务提供更多响应时间。
- 无法更新服务
servicename
:任务定义中的负载均衡器容器名称或端口已更改 -
如果您的服务使用负载均衡器,则您可以使用 AWS CLI 或开发工具包来修改负载均衡器配置。有关如何修改配置的信息,请参阅 Amazon Elastic Container Service API 参考中的 UpdateService。如果您更新服务的任务定义,则在负载均衡器中指定的容器名称和容器端口必须保留在任务定义中。
- 您已达到可同时运行的任务数量的上限。
-
对于新账户,您的配额可能低于服务配额。可以在 Service Quotas 控制台中查看您的账户服务配额。要请求提高限额,请参阅《服务限额用户指南》中的请求提高限额。