我们正处于一个信息大暴发的时代,每天都能产生数以百万计的新闻资讯!
虽然有大数据推荐,但面对海量数据,通过我们的调研发现,在一个小时的时间里,您通常无法真正有效地获取您感兴趣的资讯!
头条新闻资讯订阅,旨在帮助您收集感兴趣的资讯内容,并且在第一时间通知到您。可以有效节约您获取资讯的时间,避免错过一些关键信息。
蓝绿部署模型是一种基于维护两个独立应用程序环境的软件交付发布策略。运行当前生产版本软件的现有生产环境称为蓝色环境,而新版本软件部署到绿色环境。作为新版本软件测试和验证的一部分,应用程序流量逐渐重新路由到绿色环境。如果未发现任何问题,则绿色环境将成为新的蓝色环境。之前的蓝色环境可以拿下来,为下一次发布建立新的绿色环境。
为什么蓝绿部署有用?
实施蓝绿策略的主要好处是1)应用程序停机时间最少或为零,以及2)在将用户切换到新软件版本或在出现不可预见的问题时回滚版本时对最终用户没有负面影响新版本或部署。
实现蓝绿部署所需的概念和组件包括但不限于负载均衡器、路由规则和容器编排平台(如Kubernetes)。
蓝绿部署的工作原理
如图所示,我们假设版本1是应用程序的当前版本,我们想要移动到新的更新版本1.1。版本1称为蓝色环境,版本1.1称为绿色环境。
两个环境切换流量的过程
现在我们有两个应用程序实例,分别名为blue和green,我们希望用户访问新的green(v1.1)实例而不是旧的blue实例。为此,我们通常使用负载均衡器而不是DNS记录交换,因为DNS传播不是即时的。
通过使用负载均衡器和路由器,无需更改DNS记录,因为负载均衡器引用相同的DNS记录,但会将新流量路由到绿色环境。这使管理员可以完全控制用户访问,这一点很重要,因为它可以在绿色实例出现故障时将用户快速切换回版本1(蓝色实例)。由于切换的速度,大多数用户不会注意到他们现在正在访问更新版本的服务或应用程序——或者他们已经回滚到以前的版本。
监控
流量可以逐渐或一次性从蓝色环境切换到绿色环境。随着流量流向绿色实例,DevOps工程师有一小段时间在绿色实例上运行冒烟测试。这一点至关重要,因为他们需要确保新版本的所有方面都在用户受到广泛影响之前正常运行。
实施蓝绿部署的好处
改进的用户体验——如上所述,用户不会遇到任何停机时间,如果需要,新环境可以立即回滚到以前的最佳状态。
灾难恢复——蓝-绿策略也是模拟和运行灾难恢复场景的最佳实践,因为蓝色和绿色实例的内在等效性以及在发生故障时立即故障转移到(备份)绿色实例的能力(生产)蓝色实例的问题。
模拟实际生产场景——使用Canary部署时,测试环境通常与最终生产环境不同。相反,我们使用一小部分生产环境并将少量流量转移到新系统。(在此处阅读有关CanaryAnalysis的更多信息。)相比之下,在蓝绿部署中,新的绿色实例可以模拟在蓝色实例中运行的整个生产环境。
提高开发人员的工作效率——DevOps工程师不得不等待低流量窗口部署更新的日子已经一去不复返了。蓝绿策略消除了维护停机时间计划的需要,开发人员可以在代码准备就绪后立即将更新快速转移到生产环境中。
实施蓝绿部署时要牢记的最佳实践和挑战
通过DNS切换选择负载平衡
不要使用多个域在服务器之间切换。这是一种非常古老的分流方式。DNS传播需要几小时到几天的时间,浏览器可能需要很长时间才能获得新的IP地址。您的一些用户可能仍由旧环境提供服务。
相反,使用负载平衡。负载平衡器使您能够立即设置新服务器,而无需依赖DNS。这样,您可以确保所有流量都提供给新的生产环境。
保持数据库同步
蓝绿部署的最大挑战之一是保持数据库同步。根据您的设计,您可以向两个实例提供交易,以便在绿色实例上线时将蓝色实例作为备份。或者您可以在切换前将应用程序置于只读模式,在只读模式下运行一段时间,然后将其切换到读写模式。这可能足以解决许多悬而未决的问题。
向后兼容性对业务至关重要。添加到新版本的任何新用户在回滚时仍必须具有访问权限。否则,例如,企业可能会失去新客户。此外,任何添加到新版本的新数据也必须在回滚时传递给旧数据库。
执行滚动更新
容器架构支持使用滚动或无缝的蓝绿更新。容器使DevOps工程师能够仅在所需的pod上执行蓝绿更新。这种分散的架构确保应用程序的其他部分不会受到影响。
实施蓝绿部署时要考虑的挑战
更改用户路由时出错
蓝绿部署策略在很多情况下是最佳选择,但也带来了一些挑战。一个问题是,在初始切换到新(绿色)环境期间,某些会话可能会失败,或者用户可能被迫重新登录到应用程序。同样,当出现错误回滚到蓝色环境时,登录到绿色实例的用户可能会面临服务问题。
使用更先进的负载均衡器,可以通过减缓新流量从一个实例到另一个实例的移动来克服这些问题。负载均衡器可以编程为在用户变为非活动状态之前等待一段固定的时间,或者为在指定时间限制后仍连接到蓝色实例的用户强制关闭会话。这可能会减慢部署过程并导致一小部分用户的某些交易失败或卡住,但与让路由器强制所有用户退出并转移流量相比,它将提供更加无缝和不间断的服务质量。
无缝蓝绿部署
瞬时蓝绿部署
基础设施成本高
蓝绿部署房间里的大象是基础设施成本。采用蓝绿战略的组织需要维护一个基础设施,使其规模扩大一倍,以满足其应用程序的需求。如果您利用弹性基础设施,成本可以更容易地吸收。同样,蓝绿部署对于硬件密集度较低的应用程序可能是一个不错的选择。
代码兼容性
最后,蓝色和绿色实例在生产环境中,因此开发人员需要确保每个新更新都与以前的环境兼容。例如,如果软件更新需要更改数据库(例如,添加新字段或列),则蓝绿策略很难实施,因为有时流量会在蓝绿实例之间来回切换。使用与所有软件更新兼容的数据库应该是强制性的,就像一些NoSQL数据库一样。
结论
蓝绿软件部署策略可能涉及大量成本,但它是使用最广泛的高级部署策略之一。当您希望环境在版本之间保持一致并且您需要跨新版本的用户会话的可靠性时,蓝绿特别有用。
举报/反馈
以上内容为资讯信息快照,由td.fyun.cc爬虫进行采集并收录,本站未对信息做任何修改,信息内容不代表本站立场。
快照生成时间:2023-04-23 18:45:03
本站信息快照查询为非营利公共服务,如有侵权请联系我们进行删除。
信息原文地址: