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


在部署集中式应用程序(如Web服务)的新版本时,只有在成功部署和可选地测试之后,才能使用策略将生产流量定向到新版本。此策略名称为蓝色/绿色或红色/黑色,每种颜色代表目标环境的副本。流量被路由到一种颜色或另一种颜色。让两个环境并行运行托管不同版本的应用程序意味着可以切换流量,如果发现问题则再次返回,几乎没有停机时间。
那么为什么这种策略被称为蓝绿和红黑?这些颜色是否意味着技术差异?

StackOverflow说......
我们的第一站是StackOverflow,在那里我们发现了一个问题,“ 红/黑部署和蓝/绿部署有什么区别? ”
得出的最高答案表明这两个词之间确实存在差异:

在蓝绿色部署中,两个版本可能暂时同时获取请求,而在红黑中,只有一个版本在任何时间点获得流量。

然后有答案:
但红黑部署是Netflix,Istio和其他支持容器编排的框架/平台使用的新术语。

我经常看到红/黑一词归功于Netflix和容器平台一般创建的工具,所以让我们去他们的文档看看他们如何定义这些策略。

Netflix,Kubernetes和Istio 说
Spinnaker是Netflix编写的部署工具,它是开源的,任何人都可以使用。该工具包括一些有关其实现的概念的文档,包括有关部署策略的部分:

Spinnaker支持红/黑(又名蓝/绿)策略,在积极开发中采用滚动的红/黑和金丝雀策略。

因此,与StackOverflow上的答案相反,Netflix将蓝/绿和黑/红视为同样的事情。

由Cloud Native Computing Foundation制作的题为“Kubernete上的部署策略 ”的Kubernetes演示文稿中的幻灯片也记录了蓝色/绿色和红色/黑色作为同义词。

同样,Istio博客指的是蓝/绿和黑/红是同样的东西。

结论
多年来,我听过很多关于蓝/绿和红/黑之间差异的不同描述。一些与流量如何定向有关(DNS与负载均衡器),一些针对物理服务器与容器化应用程序的参考解决方案,一些区分所有流量的硬切换与会话耗尽。但是,我从来没有看到这些区别用于任何一致性,实际上当你深入研究如何使用蓝色/绿色和红色/黑色这样的术语时,它们通常可互换使用或明确地称为可互换。

可以肯定地说,您无法可靠地确定部署策略的特定技术方面,因为它被称为实施蓝/绿或红/黑策略。在高级别(并且在Spinnaker,Kubernetes和Istio等工具的产品文档中明确提到),这两个术语都指的是相同的东西,并且两者之间的任何技术差异可能仅在特定团队或公司内有意义。 。