让我们假设以下情况。
TargetGroup正在检查http端口80以验证EC2主机是否正常运行。
CodeDeploy代理执行了这样的序列
使用此序列,CodeDeploy部署标记为FAILED。目标群体在做什么?由于健康检查会成功,它会认为EC2主机健康吗?但CodeDeploy却不是。
我不清楚的是TargetGroup运行状况检查如何与每个EC2上的CodeDeploy部署状态重叠。
由于文档提到CodeDeploy与负载均衡器协作以不路由流量,因此我的问题也扩展到了负载均衡器。
任何见解都将受到赞赏。
与@tangerini进行一些讨论后:
在AppSpec 'hooks' Section中,它提及了允许/阻止Trafic挂钩可用。但同样在同一主题上,它提到有人只能使用它们 - 经典的负载均衡器 - 蓝色/绿色部署。
我正在使用ApplicationLoadBalancer和就地部署。但是从我注意到的是,在ValidateService钩子期间流量到达了ec2服务器。
答案 0 :(得分:0)
CodeDeploy的部署状态仅取决于在您的实例上执行的生命周期事件挂钩的成功或失败,并且不一定遵循TargetGroup运行状况检查。在您的示例中,ApplicationStart步骤成功完成,这将导致它开始继续TargetGroup运行状况检查,即使ValidateService步骤失败,从而导致部署失败。
理想情况下,您希望TargetGroup运行状况检查状态每次都与CodeDeploy ValidateService结果匹配。如果ValidateService步骤失败,则表示您的服务无法正常运行,并且应该未通过运行状况检查。但这取决于您在ValidateService步骤中进行的验证。