让我们假设以下情况。
TargetGroup正在检查HTTP端口80以验证EC2主机是否健康。
codedeploy代理执行了这样的序列
- ApplicationStop Success(停止的Web引擎。无法服务端口80)
- 启动之前成功
- 后安装成功
- ApplicationStart成功(启动Web引擎。可以服务端口80)
- 验证服务失败(与端口80的可用性无关)
使用此序列,编码的部署被标记为失败。目标群体在做什么?由于它的健康检查将是成功的,因此将EC2宿主视为健康吗?但是编码的事物不是。
我不清楚的是,目标群健康检查如何与每个EC2上的编码部部署状态重叠。
文档提到的编码eploy与负载平衡器合作以不路由流量,因此我的问题也扩展到负载平衡器。
任何见解都将不胜感激。
在与@tangerini 进行了讨论之后:
在AppSpec的"挂钩"部分中,它提到了例如可以使用允许/块钩钩。但同一主题也提到某人只能使用它们 - 经典的加载者 - 蓝色/绿色部署。
我正在使用应用程序载荷器和就地部署。但是我注意到在验证服务挂钩期间流量到达EC2服务器。
编码eploy的部署状态仅取决于在您的实例上执行生命周期事件挂钩的成功或失败,并且不一定遵循目标群的健康检查。在您的示例中,应用程序的步骤成功完成,这将导致它开始成功进行目标组健康检查,即使验证服务步骤失败了,从而导致部署失败。
理想情况下,您希望目标群健康检查状态每次都匹配编码EPLOY验证服务。如果验证服务步骤失败,则意味着您的服务无法正常运行,并且应该使健康检查失败。但这取决于您在验证服务步骤中所做的验证。