在AWS ECS上进行蓝/绿部署期间获得不健康的响应

时间:2019-11-04 03:33:43

标签: amazon-web-services amazon-ecs

基于AWS文档,blue/green部署应在应用程序部署期间提供零停机时间。我在ECS Fargate上运行了一些服务。并且load balancer检查这些容器的运行状况。有时我会在部署期间看到有关ECS服务事件的错误消息:

service my-api deregistered 1 targets in target-group my-api
f8c332f7-ac61-4791-9b08-6fe2ee4de792
2019-10-31 17:05:00 +1100
service my-api (port 443) is unhealthy in target-group my-api due to (reason Request timed out).
a306dabc-3961-42ba-8a08-814934409c9d
2019-10-31 17:03:32 +1100
service my-api registered 1 targets in target-group my-api
4333368f-682b-461f-9a3b-f38609b32589

上面写着service my-api (port 443) is unhealthy。几秒钟后恢复。我想知道为什么它报告unhealthy。我了解的是,部署必须等到健康之后再进行。

1 个答案:

答案 0 :(得分:0)

根据AWS的this article,您可以在停机时间几乎为零的情况下更新和回滚功能,也就是说在某些情况下可以预期停机时间最少。

但更具体地说,是回答您的问题,如果我正确理解您的日志,则似乎您的目标正在从目标组中注销,这对应于目标组直到下一个目标被注册后才通过运行状况检查。 (您的目标组配置当前是否包含1个目标?)

我建议按照以下步骤配置蓝绿色部署。 使用ALB / NLB有两个单独的目标组,每个目标组都服务于蓝色或绿色环境。

一旦您想更新服务,请确保ALB / NLB将适当的“生产”流量路由到蓝色和绿色目标组。

最后,调整您的ALB / NLB,将流量仅路由到绿色目标组,并在蓝色目标组作为后备回滚的情况下作为备份。

我建议您从AWS咨询sample guidance blog,这利用了Amazon Code *服务和AWS Lambda来使大部分流程自动化。

或者,look into this blog介绍如何使用Spotinst Ocean部署蓝绿色部署。