0

我正在执行 AWS Blue/Green 部署以测试基本的 apache 服务器,并且由于 CodeDeploy 经历了 B/G 部署的 4 个步骤,它停留在第 3 步,即将流量路由到替换实例大约半小时。即使花费了很长时间并重试了几次,我也无法弄清楚出了什么问题。我不知道我的设置是否正确。这是我的 B/G 部署设置。

  1. 创建了一个orginalautoscalinggroup以两个实例命名的自动缩放组。
  2. 创建了两个目标组,一个用于原始环境,第二个用于替换环境,即originaltargetgroup& replacementtargetgroup
  3. 附加originaltargetgroup成为 的一部分originalautoscalinggroup
  4. 即创建了一个应用程序负载均衡器apploadbalancer并将其附加到originaltargetgroup
  5. 现在apploadbalancer附有originaltargetgroup哪个附有originalautoscalinggroup

我的 Codedeploy B/G 配置如下所示。

  1. 部署类型:B/G
  2. 环境配置:自动复制 Amazon EC2 Auto Scaling 组
  3. Amazon EC2 自动扩展组:originalautoscalinggroup
  4. 流量重新路由:立即重新路由流量
  5. 终止策略:终止部署组中的原始实例
  6. 部署配置:CodeDeployDefault.AllAtOnce
  7. 应用程序负载均衡器。
  8. 目标组:originaltargetgroup

我认为我无法附加正确的负载均衡器或目标组。请帮忙。

图片1

图片2

4

1 回答 1

0

根据评论添加答案。

由于 B/G 部署在流量重新路由期间失败,特别是在“允许流量”时,实例处于“不健康”状态。

如果所需的服务没有在 EC2 上运行并且无法访问,它们将保持不健康状态并且无法将流量重定向到它们,因此部署将失败。

为了确保所需的服务/进程正在由 AutoScaling 组启动的 EC2 服务器上运行,您

  1. 使用“用户数据”更新启动配置/模板以在 EC2 启动时执行脚本,该脚本将安装、配置和启动所需的服务,例如端口 80 上的 Nginx。
  2. 您可以创建一个自定义 AMI,其中已经安装了所需的应用程序,并且在 EC2 启动时,所需的服务/进程将启动。

这样,每当 ASG 启动新的 EC2 时,它将根据启动进程所需的时间进入健康状态。一旦它是健康的,它将准备好为流量提供服务并发布,旧实例将被取消注册。

取消注册旧实例后,它们可能会根据 CodeDeploy 中的配置终止。

于 2020-04-13T13:46:24.037 回答