AWS CodeDeploy蓝色/绿色部署卡住了吗?

时间:2020-04-10 09:38:21

标签: amazon-web-services amazon-ec2 amazon-elb aws-code-deploy blue-green-deployment

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

  1. 使用两个实例创建了名为orginalautoscalinggroup的自动缩放组。
  2. 创建了两个目标组,一个用于原始环境,第二个用于替换环境,即originaltargetgroupreplacementtargetgroup
  3. 已附加originaltargetgroup成为originalautoscalinggroup的一部分。
  4. 创建了一个名为apploadbalancer的应用程序负载平衡器,并附加了originaltargetgroup
  5. 现在apploadbalancer附加了originaltargetgrouporiginalautoscalinggroup附加了originalautoscalinggroup

我的Codedeploy B / G配置看起来像这样。

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

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

Image1

Image2

1 个答案:

答案 0 :(得分:0)

根据评论添加答案。

由于流量重新路由期间B / G部署失败,尤其是在“允许流量”上,因此实例处于“不正常”状态。

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

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

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

这样,每当ASG启动新的EC2时,它将根据启动过程所需的时间进入正常状态。一旦运行状况良好,就可以准备处理流量并发布,旧实例将被注销。

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