我正在使用交换自动缩放组方法执行AWS CodeDeploy B/G部署。为此,我创建了一个具有两个实例的自动缩放组。接下来,我对两个目标组originaltargetgroup
和replacementtargetgroup
进行了分类。然后,我创建了一个应用程序负载均衡器,其中侦听器为originaltargetgroup
(100%流量(和replacementtargetgroup
(0%流量(。当我在目标组为replacementtargetgroup
的codedeploy中启动B/G部署时,它创建了一个带有两个新替换实例的原始自动缩放组的副本。
我的问题是,我无法使用ELBDNS访问两个新的绿色实例。我发现这是因为绿色实例被放置在为0%流量提供服务的replacementtargetgroup
中。
为什么ELB没有将所有流量切换到replacementtargetgroup
,或者可能我做错了什么。
基本上,我对以上架构的工作原理感到困惑。我必须为B/G部署只创建一个目标组还是两个目标组。我完全弄不明白。
CodeDeploy的蓝色/绿色部署不需要有2个ASG和2个Targets组。您只需要提供现有AutoScalingGroup和现有ElasticLoadBalancer的输入即可。
当您触发B/G部署时,会触发以下序列:
- CodeDeploy创建了一个新的AutoScalingGroup,它是现有ASG的精确副本
- 完成上述步骤后,将为您提供新的EC2实例。如果现有的ASG有2台EC2服务器,那么新的ASG也将有2台正在运行的EC2服务器
- 当提供新的EC2服务器时,将在这些服务器上执行部署,以便将其上的应用程序更新到新版本
- 部署完成后,新服务器将注册到现有的TargetGroup
- 在注册了新实例并且它们是健康的之后,流量会从旧服务器重新路由到新服务器
- 发布此消息后,旧服务器将被注销
- 当旧服务器被注销时,CodeDeploy可以根据configu终止它们