Node.js 中的蓝绿部署 (Blue-Green deployment)

2025年3月17日 | 阅读 3 分钟

蓝绿部署 是一种应用于应用程序更新的技术,旨在尽可能地使过程更安全、更短,而不会长时间停机。它涉及两个相同的环境:一个是活动的(蓝色),另一个是不活动的(绿色)。当需要更新时,新版本会在空闲环境(绿色)上完成。这是在测试和改进后的实际环境,然后将流量从蓝色环境切换到绿色环境。它确保了更新的平滑进行,并且如果出于任何原因需要回滚,都可以在最短的时间内完成。

没有蓝绿部署的特定语法,但它可以通过蓝绿工具实现,例如 AWS Elastic Beanstalk、Kubernetes 以及使用蓝绿策略的部署工具。例如,使用 AWS Elastic Beanstalk 进行 Node.js 的部署,通过 AWS 界面或命令行切换环境一样简单。

Elastic Beanstalk 的 CLI 示例

Kubernetes 中, 蓝绿部署是通过指向不同 Pod 的服务来实现的。

参数

蓝绿部署涉及的关键参数

  • 绿色环境: 为了确保新版本符合用户期望,测试和部署新版本的环境同样至关重要。
  • 负载均衡器: 由于其活跃度和受欢迎程度,它控制着蓝色和绿色环境之间的流量。
  • CI/CD 流水线: 具备在两个环境之间自动部署、测试和切换的功能。
  • 监控工具: 在将流量切换到新版本之前,请确保新版本(绿色)的性能令人满意。

示例及输出

示例 1:蓝绿部署

将新版本部署到绿色环境

  • 检查更新后的版本在绿色环境中是否正常工作。
  • 通过切换环境,将实时流量转移到绿色环境。

输出

这意味着在指定的切换完成后,绿色环境将处于活动状态,用户可以访问更新后的版本。

示例 2:Kubernetes 对 Node.js 应用进行蓝绿部署。

  • 启动一批带有绿色版本标识的新 Pod。
  • 所有发往蓝色 Pod 的流量必须不折不扣地发送到绿色 Pod。

输出

在此期间,负载均衡器通过转发流量到新 Pod 来协助,不会有任何人受到停机影响。

优点

Node.js 中蓝绿部署的几个优点如下:

  • 零停机: 与用户集成的一个出色功能是,用户在部署过程中不会感受到任何服务中断。
  • 快速回滚: 万一发生故障,您可以轻松回滚到之前的版本(蓝色)环境。
  • 降低风险: 在类生产环境(绿色)中应用后,可以在实时环境中稳定使用。
  • 无缝更新: 可以在部署过程中进行此类更改,而不会给用户带来不便。

用例

Node.js 中蓝绿部署的几个用例如下:

  • 频繁更新: 在线程序或软件即服务(SaaS)程序会频繁更新,而不会干扰运行。
  • 高可用性系统: 任何不能容忍停机的应用程序,例如金融服务、医院等领域的应用程序。
  • 生产环境测试: 使用克隆环境在最终版本发布前进行测试,可以识别实际问题。
  • 快速回滚: 在高风险情况下,如果出现问题,必须立即回滚。

结论

总而言之,蓝绿部署对于避免用户因软件更新而经历静默期和负面体验非常有益。对于 Node.js 应用程序,维护相同的媒体环境可以风险较低地进行更新,并在发生故障时快速恢复到先前可用的状态。由于它是一种处理生产发布的安全有效的方法,因此主要应用于高可用性和频繁更新的应用程序。