【问题标题】:Workflow with 2 databases and Blue-Green Deployment具有 2 个数据库和蓝绿部署的工作流
【发布时间】:2019-03-12 03:21:39
【问题描述】:

假设我有一个简单的工作流程,例如:

开发、登台和生产分支。

暂存分支具有暂存环境 (AWS Elastic Beanstalk)。

生产分支有一个生产环境(AWS Elastic Beanstalk)。

需要一个用于暂存环境的数据库和一个用于生产环境的数据库(使用 DynamoDB)。

你是怎么做的? 2 个单独的 AWS 账户(1 个用于暂存环境,1 个用于生产环境)?

如何通过此设置使用 AWS 上的蓝绿部署?

欢迎提出其他建议。

【问题讨论】:

    标签: amazon-web-services


    【解决方案1】:

    对于我的 ElasticBeanstalk 解决方案,我有以下设置:

    1. 开发者 AWS 账户中有开发者数据库的开发者环境
    2. 测试 AWS 账户中带有测试数据库的测试环境
    3. ProdGreen 环境和 Prod AWS 账户中的 Prod 数据库
    4. ProdBlue 环境和 Prod AWS 账户中的 Prod 数据库

    ProdGreen 和 ProdBlue 共享同一个数据库,并且彼此完全相同(除了每个都知道其在环境变量中的指定以用于报告目的)。

    当我最初创建环境时,我将它们命名为 ProdBlue 和 ProdGreen,但 dns 名称是 prod 和 beta。

    在 Route53 中,我有两条 DNS 记录(prod 和 beta),其中包含指向 elasticbeanstalk url 的 CNAME:

    myapp.mydomain.com        CNAME    myapp-prod.eu-west-1.elasticbeanstalk.com
    myapp-beta.mydomain.com   CNAME    myapp-beta.eu-west-1.elasticbeanstalk.com
    

    然后我按照以下步骤操作:

    1. 在测试环境中运行完整的回归测试
    2. 将应用部署到使用 beta dns 名称的环境(目前为 beta env)
    3. 将 Beta 环境扩展到生产能力和扩展计划
    4. 对 beta 部署运行健全性测试,以确保它按预期运行
    5. 在 EB 中,交换 myapp-prod 和 myapp-beta DNS 名称
    6. 服务立即将 beta 环境切换到 prod
    7. 如果您愿意,可以将新的 beta 环境按比例缩小到零,并且它始终存在,以防您需要回滚

    为此,您需要确保:

    • 您的应用程序是无状态的或正在使用 Elasticache 或 DynamoDB 共享状态
    • 负载平衡器上的会话没有粘性
    • 您无需对数据库结构进行重大更改,因此两个 prod 环境可以针对同一个数据源运行

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-01-28
      • 2019-01-01
      • 2021-07-18
      • 1970-01-01
      • 2018-09-14
      • 2018-10-21
      • 2018-01-14
      • 2017-03-16
      • 2017-12-28
      相关资源
      最近更新 更多