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

Eri*_*ich 41 cloud deployment design-patterns

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

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

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

Pau*_*son 46

蓝绿色部署

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

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

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

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

红黑部署

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

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

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

  • 让我对我自己的评论进行跟进: * _blue/green_:_Continuous Delivery_ 书由 Jezz Humble David Farley(如您所引用)作为坚实的定义基础 * _red/black_:如果这里的文字 https 会很棒://www.spinnaker.io/concepts/ ,没有这样提及_red/black (**aka** blue/green)_; 让我提醒一下 _spinnaker_ 来自 _netflix_ 本身! (3认同)
  • 对我来说也是一样的。Netflix 最常使用“红黑”而不是“蓝绿”,可能是因为他们的徽标颜色是红色和黑色。无需进一步查看... (3认同)
  • 请引用?我很高兴能有一个确切的共同定义来澄清彼此的组合,但是我们有参考文献来指出人们要这样做吗?这对于在现有定义基础上进行技术讨论非常重要! (2认同)
  • @PauloMerson那和红黑有什么不同?您是在说如果黑色闲置,那么有什么阻止您绕过路由器并直接访问那些主机?如果是这样,请提供引用以及定义为红黑色的一部分。如果没有,那就像您对蓝绿色的描述一样。 (2认同)

Fra*_*sas 30

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

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

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