amazon-web-services - AWS ECS 503 服务在部署时暂时不可用

标签 amazon-web-services amazon-elb amazon-ecs http-status-code-503

我正在为我的应用程序使用 Amazon Web Services EC2 容器服务和应用程序负载均衡器。当我部署新版本时,我收到 503 服务暂时不可用大约 2 分钟。这比我的应用程序的启动时间要长一点。 这意味着我现在无法进行零停机部署。

是否有设置可以在新任务启动时不使用它们?或者我在这里缺少什么?

更新:

ALB目标组的健康检查编号如下:

Healthy threshold:     5
Unhealthy threshold:   2
Timeout:               5 seconds
Interval:              30 seconds
Success codes:         200 OK

健康阈值是“在考虑不健康目标健康之前所需的连续健康检查成功次数”
不健康阈值是“在考虑目标不健康之前所需的连续健康检查失败次数。”
超时是“以秒为单位的时间量,在此期间没有响应意味着运行状况检查失败。”
间隔是“单个目标的健康检查之间的大致时间量”

更新2: 因此,我的集群由两个 EC2 实例组成,但可以根据需要进行扩展。所需的最小计数为 2。我每个实例运行一个任务,因为我的应用程序需要特定的端口号。在部署之前(jenkins 运行 aws cli 脚本),我将实例数量设置为 4。如果没有这个,AWS 就无法部署我的新任务(这是另一个需要解决的问题)。组网方式为bridge。

最佳答案

因此,问题似乎在于任务定义中容器设置的端口映射。 之前我使用80作为主机,8080作为容器端口。我认为我需要使用这些,但主机端口实际上可以是任何值。如果将其设置为 0,则 ECS 将分配 32768-61000 范围内的端口,因此可以向一个实例添加多个任务。为了使其正常工作,我还需要更改我的安全组,让流量从 ALB 流向这些端口上的实例。
因此,当 ECS 可以在同一实例上运行多个任务时,50/200 最小/最大健康百分比是有意义的,并且可以部署新任务修订版,而无需添加新实例。这也保证了零停机部署。

感谢所有提问或评论的人!

关于amazon-web-services - AWS ECS 503 服务在部署时暂时不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44930719/

相关文章:

php - pg_query() - “无法将连接设置为阻塞模式(错误号 8)

amazon-web-services - 如何指示 AWS ELB 将返回 403 代码的健康检查视为成功?

amazon-web-services - 如何使用 Ansible 创建 AWS EC2 实例并将其分配给 ELB?

amazon-web-services - 将POST请求从一项服务发送到Amazon ECS中的另一项服务

amazon-web-services - 将弹性文件系统挂载到 AWS Batch 计算环境

ruby - aws-sdk ruby​​ 在删除对象时返回 nil

amazon-web-services - 如何使用 ansible 脚本创建带有序列号的计数标签名称

node.js - 当我的 Lambda 有权访问 S3 存储桶时,为什么我的 GetObjectRequest 返回 403 访问被拒绝错误?

amazon-web-services - Docker compose ECS集成: load balancer is of type application,项目需要网络

amazon-web-services - 通过 CloudFormation 使用 AWS ECS 将 Docker 容器与多个其他容器链接