var*_*en_ 15 amazon-web-services amazon-ecs http-status-code-503 amazon-elb
我正在为我的应用程序使用带有应用程序负载均衡器的Amazon Web Services EC2容器服务.当我部署新版本时,我得到503服务暂时不可用大约2分钟.它比我的应用程序的启动时间多一点.这意味着我现在无法进行零停机部署.
是否有设置在启动时不使用新任务?或者我在这里缺少什么?
更新:
ALB的目标组的运行状况检查编号如下:
Healthy threshold: 5
Unhealthy threshold: 2
Timeout: 5 seconds
Interval: 30 seconds
Success codes: 200 OK
Run Code Online (Sandbox Code Playgroud)
健康阈值是'在考虑不健康目标健康之前所需的连续健康检查成功次数'
不健康阈值是'在考虑目标不健康之前所需的连续健康检查失败次数'.
超时是'没有响应意味着健康检查失败的时间量,以秒为单位.'
间隔是'单个目标的健康检查之间的大致时间'
更新2:所以,我的集群由两个EC2实例组成,但如果需要可以扩展.所需和最小计数为2.我为每个实例运行一个任务,因为我的应用程序需要特定的端口号.在我部署之前(jenkins运行aws cli脚本)我将实例数设置为4.如果没有这个,AWS就无法部署我的新任务(这是另一个需要解决的问题).网络模式是桥梁.
var*_*en_ 10
因此,问题似乎在于任务定义中容器设置的端口映射.在我使用80作为主机和8080作为容器端口之前.我以为我需要使用这些,但主机端口实际上可以是任何值.如果将其设置为0,则ECS将分配32768-61000范围内的端口,因此可以将多个任务添加到一个实例.为了实现这一点,我还需要更改我的安全组,让流量从ALB流向这些端口上的实例.
因此,当ECS可以在同一个实例上运行多个任务时,50/200最小/最大健康百分比是有意义的,并且可以在不需要添加新实例的情况下部署新任务修订.这也确保了零停机时间的部署.
感谢所有提出要求或评论的人!
由于您使用的是 AWS ECS,请问该服务的“最小健康百分比”和“最大健康百分比”是多少
确保您的“最大健康百分比”为 200,“最小健康百分比”为 50,以便在部署期间不会出现所有服务停机。
请找到这两个术语的文档定义:
最大百分比提供部署期间运行任务数量的上限,使您能够定义部署批处理大小。
最低健康百分比为部署期间运行的任务数量提供了下限,使您能够在不使用额外集群容量的情况下进行部署。
“最低健康百分比”的限制为 50 将确保在部署新版本的容器之前,只有一半的服务容器被杀死,即如果服务的期望任务值是“2”而不是部署时只有具有旧版本的“1”个容器将首先被杀死,一旦部署了新版本,第二个旧容器将被杀死并部署一个新版本容器。这将确保在任何给定时间都有处理请求的服务。
类似地,“最大健康百分比”的限制为 200 告诉 ecs-agent 在部署期间的给定时间,服务的容器最多可以达到所需任务的两倍。
如果有任何进一步的问题,请告诉我。
| 归档时间: |
|
| 查看次数: |
9232 次 |
| 最近记录: |