蓝绿部署与滚动部署?
Posted
技术标签:
【中文标题】蓝绿部署与滚动部署?【英文标题】:Blue Green Deployments vs Rolling Deployments? 【发布时间】:2017-07-10 12:46:50 【问题描述】:蓝/绿部署和滚动部署有什么区别?我一直认为蓝/绿部署是流量从旧版本突然切换到新版本。
关于Blue/Green deployment on AWS 的讨论展示了实现蓝/绿部署的各种不同策略,但它们似乎也符合rolling deployment 的定义。
蓝/绿部署是滚动部署的子集吗?
【问题讨论】:
滚动部署是交错的。蓝/绿是金丝雀测试后的突然切换。 这也是我的理解,但如果您观看解决方案架构师的 AWS 视频,他们的蓝/绿解决方案并不是突然的,而是渐进的,因此我的问题。 你必须意识到这在很大程度上是观点和理论。这两者的想法是最大限度地减少应用程序的生产停机时间。您应该确保您始终能够在这里“只见树木不见森林”。了解这两种方法的工作原理,然后调整它们以最适合您的环境。 【参考方案1】:我在这里写了一篇关于这个主题的文章:http://blog.itaysk.com/2017/11/20/deployment-strategies-defined
在我看来,区别在于是通过替换现有设置中的实例来应用新版本(在滚动升级的情况下),还是为新版本创建完全隔离的设置(在蓝/绿的情况下) )。在我看来,蓝/绿是最安全的策略,并且在大多数情况下更适合生产部署。阅读帖子以获得详细的比较。
【讨论】:
对于生产部署,蓝绿色更好?我认为基于 docker 的生产环境更适合滚动升级 这个答案已经很老了,但我仍然会说如果 b/g 适合你,它会更安全。你可以用 docker 做蓝/绿:如果你有两个容器服务于流量,并且你创建了一对新的容器来服务新版本,然后交换了流量,所以这对新的容器不是活动的,那就是 b/g。但是,如果您有两个容器并且一次升级一个,那么这就是滚动。 这不仅仅是容器的数量,我们在 AWS vpc 中运行容器。 B/G 将创建调用那些资源(子网/安全组等......)这是不必要的......不是吗? 如果您的意思是会有冗余 - 那么是的,这就是 b/g 的工作方式。在迁移期间,您需要运行(并支付)这两个版本的应用程序。但是,“应用程序”的粒度是多少由您决定,这在博文中也有讨论。它不必是整个网络环境。如果您愿意,它可以在“服务”的范围内,它可能只是几个容器和一个虚拟负载均衡器。根据系统设计的好坏,单独升级单个服务可能容易或困难。【参考方案2】:在蓝绿部署中,您有两个完整的环境。
一个是正在运行的蓝色环境和要升级到的绿色环境。 将环境从蓝色切换到绿色后,流量将被定向到新的绿色环境。 您可以删除或保存旧的蓝色环境进行备份,直到绿色环境稳定为止。
在滚动部署中,您只有ONE完整的环境。
一旦您开始升级您的环境。代码部署在同一环境的实例子集中,完成后移动到另一个子集中。
因此两者在各种因素上都不同,您需要选择 基于场景的部署模型。 蓝/绿部署不是滚动部署的子集。
【讨论】:
以上是关于蓝绿部署与滚动部署?的主要内容,如果未能解决你的问题,请参考以下文章