基于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
。我了解的是,部署必须等到健康之后再进行。
答案 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部署蓝绿色部署。