蓝绿部署与滚动部署?

问题描述 投票:0回答:4

蓝/绿部署和滚动部署有什么区别?我一直认为蓝/绿部署是流量突然从旧版本立即切换到新版本。

有关 AWS 上的蓝/绿部署的讨论展示了实现蓝/绿部署的各种不同策略,但它们似乎也符合 滚动部署的定义。 蓝/绿部署是滚动部署的子集吗?

amazon-web-services deployment traffic blue-green-deployment rolling-deployment
4个回答
53
投票
http://blog.itaysk.com/2017/11/20/deployment-strategies-defined

在我看来,区别在于是否通过替换现有设置中的实例(在滚动升级的情况下)来应用新版本,或者为新版本创建完全隔离的设置(在蓝/绿的情况下)。在我看来,蓝/绿是最安全的策略,并且在大多数情况下更适合生产部署。阅读帖子以进行详细比较。


49
投票
蓝绿部署

中,您拥有两个完整的环境。 一个是正在运行的蓝色环境和要升级到的绿色环境。 将环境从蓝色切换为绿色后,流量将定向到新的绿色环境。 您可以删除或保存旧的蓝色环境进行备份,直到绿色环境稳定为止。

滚动部署

中,您只有ONE完整的环境。 一旦开始升级您的环境。代码部署在同一环境的实例子集中,完成后移动到另一个子集。

所以两者在各种因素上都有所不同,您需要选择 基于场景的部署模型。 蓝/绿部署不是滚动部署的子集。


14
投票

两种环境,蓝色环境是“旧”环境,包含一个或多个应用程序(实例或容器)

绿色环境是“新”环境,包含一个或多个应用程序(实例或容器) 然后,

100%流量

立刻从蓝色环境切换到绿色环境,如下图:

上面的图片来自 https://www.encora.com/insights/zero-downtime-deployment-techniques-blue-green-deployments 最初由公司 “Encora” 创建

上面的图片来自 https://avikdas.com/2020/06/30/scalability-concepts-zero-downtime-deployments.html 最初由 Avik Das 创建 此外,还有

金丝雀部署

,这是蓝绿部署的渐进方式。在金丝雀部署的情况下,100%流量逐渐从蓝色环境切换到绿色环境,比蓝绿部署需要更长的时间(30分钟、小时或天),如下所示:

上面的图片来自 https://www.encora.com/insights/zero-downtime-deployment-techniques-canary-deployments 最初由公司 “Encora” 创建 滚动部署:

一个环境包含一个或多个“旧”应用程序(实例或容器)

然后,

一个或多个“旧”应用程序(实例或容器)

被一一替换为一个或多个“新”应用程序(实例或容器),如下所示:

上面的图片来自 https://avikdas.com/2020/06/30/scalability-concepts-zero-downtime-deployments.html 最初由 Avik Das 创建


0
投票

https://github.com/Andrew-Kang-G/docker-blue-green-runner

通过您的项目及其唯一的 Dockerfile,Docker-Blue-Green-Runner 可以使用 Consul 处理其余的持续部署 (CD) 过程。 Nginx 允许您在不停机的情况下部署您的项目。

问题是示例附带了 PHP、Java 和 Node.js。而且由于它是使用 Shell 脚本创建的,因此使用和查看源代码相对更容易。

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