使用 Elastic Beanstalk 进行蓝/绿部署 - AWS Elastic Beanstalk

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Elastic Beanstalk 进行蓝/绿部署

因为 AWS Elastic Beanstalk 在您更新应用程序版本时执行就地更新,所以应用程序可能会对用户短时间不可用。为避免这种情况,请执行蓝/绿部署。如要执行此操作,将新版本部署到独立的环境,然后交换两个环境的别名记录,从而将流量立即重新导向到新版本。

如果您希望将环境更新为不兼容的平台版本时,还需要蓝/绿部署。有关更多信息,请参阅 更新 Elastic Beanstalk 环境的平台版本

当应用程序使用生产数据库时,蓝/绿部署要求您的环境独立于生产数据库运行。如果您的环境中包含 Elastic Beanstalk 代表您创建的数据库,除非您执行特定操作,否则系统不会保留该环境的数据库和连接。如果您有想要保留的数据库,请使用以下 Elastic Beanstalk 数据库生命周期选项之一。在解耦数据库后,可以选择 Retain(保留)选项以保持数据库和环境的运行状态。有关更多信息,请参阅本指南配置环境章节中的数据库生命周期

有关如何将您的应用程序配置为连接到 Amazon RDS 实例(非 Elastic Beanstalk 托管)的说明,请参阅将 Elastic Beanstalk 和 Amazon RDS 结合使用

执行蓝/绿部署
  1. 打开 Elastic Beanstalk 控制台,然后在 Regions(区域)列表中选择您的 AWS 区域。

  2. 克隆当前环境,或启动运行所需平台版本的新环境。

  3. 向新环境部署新应用程序版本

  4. 在新环境上测试新版本。

  5. 在环境概述页面上,选择 Actions(操作),然后选择 Swap environment URLs(交换环境 URL)。

  6. 对于 Environment name(环境名称),请选择当前环境。

    Swap environment URL(交换环境 URL)页面
  7. 选择 Swap(交换)。

Elastic Beanstalk 交换旧环境和新环境的别名记录,以将流量从旧版本重定向到新版本。

Elastic Beanstalk 完成交换操作之后,验证在您尝试连接到旧环境 URL 时新环境是否响应。但是,在传播 DNS 更改并且您的旧 DNS 记录过期之前,请勿终止旧环境。DNS 服务器不总是会基于您在 DNS 记录中设置的存活时间(TTL)来清除其缓存中的旧记录。