如果您无法更改 AWS Beanstalk 实例的 RDS 端点,如何进行蓝/绿部署?

如果您无法更改 AWS Beanstalk 实例的 RDS 端点,如何进行蓝/绿部署?

据我所知,无法更改现有 Elastic Beanstalk (EB) 实例的 Amazon RDS (RDS) 端点?

如果是这样的话,那么您就不能将您的代码部署到阶段服务器、阶段数据库、进行测试,然后提升为使用生产数据库吗?

那么,如何部署阶段而不需要针对产品数据库进行测试呢?

考虑到产品和阶段,我认为策略应该是这样的:

  • 快照产品 RDS
  • 使用新代码创建阶段并将其指向快照
  • 质量保证阶段
  • 将阶段指向生产 RDS
  • 更改负载均衡器以将流量发送到阶段

答案1

我对 Beanstalk 不太熟悉,因此对此持怀疑态度。

据我了解,A/B 部署策略的工作原理如下:

  1. A 正在生产中。
  2. B 正在准备中。
  3. 部署到 B 直到您喜欢它。
  4. 制作 B 产品,将 A 转入阶段。
  5. 转到 1

数据库的状态非常复杂,不适合进行这样的交换。据我所知,上面的第 3 步的完成方式有点像...

  1. 将 A 点快照放入 B 点。
  2. 在 B 上运行迁移。
  3. 运行测试系列来验证其是否有效。
  4. 如果测试失败,则转到 1 并重复。否则,继续。
  5. 在 B 集群提升期间,将已知良好的迁移步骤应用到生产数据库。

这里比较棘手的部分是数据库间接访问。为此,我建议使用 Route53。在部署过程中:

  1. 停止所有测试活动,并对 B 集群进行代码更新。
  2. 更新 B-Database 记录以指向 prod-database。
  3. 在部署期间,运行迁移。
  4. 将 B 集群带入生产环境,它将使用现已更新的集群。
  5. 停止A集群。
  6. 更新 A 数据库记录以指向 Staging。
  7. 将产品快照放到测试数据库上。

你明白了。

答案2

在我看来,您的想法是 CI/CD 工作流。使用 AWS Beanstalk,您可以使用 来实现该功能(您的想法)env.yml。以下是关于env.yml进一步阅读的内容https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environment-cfg-manifest.html

我希望这对你有帮助。

相关内容