红/黑部署和蓝/绿部署之间有什么区别?

问题描述 投票:29回答:2

我听说过这两个用于描述在新机器上部署更新同时保持旧机器处于活动状态的想法,如果出现问题就准备回滚。我还听说它曾用于描述更新服务和旧服务之间的共享负载,再次是为了回滚 - 有时会终止不活动的旧补丁,有时则不会。

我的理解是它严格来说是云服务。

有人可以帮助揭开这些条款的神秘面纱吗?

design-patterns deployment cloud
2个回答
28
投票

蓝色/绿色和红色/黑色部署都代表相同的概念。

虽然第一个是最常用的术语,但后者似乎主要用于Netflix及其工具(如Spinnaker)。

它们仅适用于云,虚拟化或集装箱化服务,因为您的基础架构必须是可自动化的,才能理解这种方法。


36
投票

蓝绿色部署

由Jezz Humble和David Farley撰写的持续交付书中描述的经典部署技术:

我们的想法是拥有两个相同版本的生产环境,我们将其称为蓝色和绿色......系统用户将路由到绿色环境,这是当前指定的生产环境。我们想发布一个新版本的应用程序。所以我们将它部署到蓝色环境......这不会以任何方式影响绿色环境的运行。我们可以对蓝色环境进行烟雾测试,以检查它是否正常工作。当我们准备好之后,转移到新版本就像更改路由器配置以指向蓝色环境而不是绿色环境一样简单。因此蓝色环境变成了生产。这种切换通常可以在不到一秒的时间内完成。如果出现问题,我们只需将路由器切换回绿色环境即可。

然后,Humble和Farley继续提到主要挑战:处理绿色和蓝色版本之间的数据库架构更改。

在发布新版本时,蓝绿部署的主要好处是零停机或接近零停机。蓝绿色部署使金丝雀释放。

红黑部署

Red版本正在制作中。您将Black版本部署到一个或多个服务器。当黑色版本完全正常运行时,您可以切换路由器以指示所有流量(或者将红色缩放为0个实例,将黑色缩放为N)。如果出现任何问题,请恢复操作。因此,它类似于蓝绿色部署,但有一点点差异:在蓝绿色部署中,两个版本可能会暂时同时获取请求,而在红黑中只有一个版本在任何时候获得流量及时。这是一些corroboration

在任何时候,只有一个环境是实时的,实时环境为所有生产流量提供服务。对于这个例子,Red目前正在运行而Black处于闲置状态(在这种情况下,我们将Black缩小为零服务器)...

因此,红黑是蓝绿色的专业化。但红黑部署是Netflix,Istio和其他支持容器编排的框架/平台使用的新术语。实际意义可能会有所不同,许多人使用“红黑”作为“蓝绿色”的另一个术语,可能只是因为他们的团队颜色是红色和黑色。 :^)

© www.soinside.com 2019 - 2024. All rights reserved.