【问题标题】:What's the difference between Red/Black deployment and Blue/Green Deployment?红/黑部署和蓝/绿部署有什么区别?
【发布时间】:2017-12-28 19:11:52
【问题描述】:

我听说这两种方法都用来描述在新机器上部署更新同时保持旧机器处于活动状态,以便在出现问题时准备好回滚的想法。我还听说它用于描述更新服务和旧服务之间的共享负载,同样是为了回滚——有时会终止不活动的旧补丁,有时不会。

我的理解也是,它仅限于云服务。

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

【问题讨论】:

  • 虽然我提到了云服务,但这也适用于裸机或任何足够大的服务。 YMMV。

标签: design-patterns deployment cloud spinnaker


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    蓝绿部署

    Jez Humble 和 David Farley 在 Continuous Delivery 书中描述的经典部署技术:

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

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

    蓝绿部署的主要好处是在发布新版本时停机时间为零或接近零。蓝绿部署支持金丝雀发布

    红黑部署

    Red 版本已投入生产。您将黑色版本部署到一台或多台服务器。当黑色版本完全运行时,您切换路由器以将所有流量定向到它(或者您将红色扩展到 0 个实例,将黑色扩展到 N)。如果出现任何问题,您将恢复操作。因此,它类似于蓝绿部署,但有一点不同:在蓝绿部署中,两个版本可能会暂时同时获取请求,而在红黑部署中,只有一个版本正在获取流量随时。这里有一些corroboration

    在任何时候,只有一个环境是实时的,实时环境服务于所有生产流量。对于此示例,Red 当前处于活动状态,Black 处于空闲状态(在这种情况下,我们将 Black 缩小到零服务器)...

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

    【讨论】:

    • 引用好吗?我很高兴如果有一个确切的共同商定的定义来澄清彼此之间的任何一种组合,但是我们是否有参考文献可以指向人们?这对于基于预先存在的定义进行技术讨论非常重要!
    • 让我对我自己的评论进行跟进:* blue/greenContinuous Delivery 由 Jezz Humble David Farley 所著(如您引用)作为一个坚实的定义基础 * red/black:如果这里的文字 spinnaker.io/concepts 没有这样提及 red/black(aka 蓝色/绿色);让我提醒一下,spinnaker 来自 netflix 本身!
    • @fgeorgatos 我完全同意你的观点,我们应该有一个商定的定义来进行技术讨论。也许 Humble 和 Farley 会在第二版中写关于红黑与蓝绿的文章。.. :^) 无论如何,我添加了一个引用来证实我提到的细微差别。
    • @PauloMerson 那么这与红黑有何不同?你是说如果黑色空闲,有什么东西会阻止你绕过路由器直接访问那些主机吗?如果是这样,请提供一个引文,说明它是什么以及被定义为红黑的一部分。如果不是,那和你对蓝绿色的描述一模一样。
    • 对我来说是一样的。 Netflix 最常用的是“红黑”而不是“蓝绿”,这可能是因为他们的标志颜色是红色和黑色。没必要再看了……
    猜你喜欢
    • 2019-04-15
    • 2017-07-10
    • 2019-01-01
    • 2021-07-18
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    相关资源
    最近更新 更多