0

我需要帮助才能实现蓝绿部署。

我的桶里有什么——

  1. 一个托管在 ElasticBeanStalk 上的蓝色环境。
  2. 在 ElasticBeanStalk 上托管的一个绿色环境。
  3. 两个环境都是由 CF-Template 创建的。两者都有自己的 ELB。

我在找什么——

  1. 我需要将流量从蓝色切换到绿色。
  2. 首先,我需要知道哪个环境当前处于活动状态,以便我可以将我的应用程序部署计划到下一个环境。
  3. 一旦我知道我当前的环境(在这种情况下为蓝色),我将我的应用程序部署到绿色环境,现在这个环境已准备好接受流量。
  4. 我需要将 25% 的流量迁移到 Green 并进行健康检查,如果健康检查没问题,我将再添加 25% 的流量并进行健康检查等等。
  5. 在任何时候,如果健康检查失败,我应该能够将整个流量路由回蓝色环境。

我需要在我的 CI-CD 作业中实施此解决方案。我的 CI 工作是创建我的包并将其部署到 S3。我的 CD 工作是配置基础架构 (ElasticBeanStalk) 并将包上传到新创建的环境。

4

1 回答 1

0

您无法像那样控制 AWS Elastic Beanstalk 上的部署,因为它涉及拥有两个实时环境并进行 cname 交换。不完全是您想要实现的目标,但接近它的东西称为不可变部署,开箱即用

从文档中:

为了执行不可变的环境更新,Elastic Beanstalk 在您环境的负载均衡器后面创建第二个临时 Auto Scaling 组以包含新实例。首先,Elastic Beanstalk 使用新组中的新配置启动单个实例。此实例与原始 Auto Scaling 组中运行先前配置的所有实例一起提供流量。

当第一个实例通过运行状况检查时,Elastic Beanstalk 会使用新配置启动其他实例,与原始 Auto Scaling 组中运行的实例数量相匹配。当所有新实例都通过运行状况检查时,Elastic Beanstalk 会将它们转移到原始 Auto Scaling 组,并终止临时 Auto Scaling 组和旧实例。

于 2020-04-18T02:47:07.830 回答