什么蓝绿部署(BlueGreenDeployment) ?

我和我的同事向我们的客户提出的目标之一是完全自动化的部署过程。自动化部署有助于减少在“完成”软件和实现其价值之间出现的摩擦和延迟。它建立在许多通常与持续集成相关的想法之上,更多地推动了这种将软件快速投入生产并让它发挥作用的能力。他们关于蓝绿部署的部分作为未充分使用的技术之一引起了我的注意,所以我想在这里简要概述一下。

自动化部署的挑战之一是切换本身,将软件从测试的最后阶段带到现场生产。您通常需要快速执行此操作以最大程度地减少停机时间。蓝绿部署方法通过确保您拥有两个尽可能相同的生产环境来做到这一点。在任何时候,其中一个,例如蓝色,是实时的。当您准备软件的新版本时,您将在绿色环境中进行最后阶段的测试。一旦软件在绿色环境中运行,您切换路由器,以便所有传入请求都进入绿色环境 - 蓝色的现在空闲。

蓝绿部署还为您提供了一种快速回滚的方法——如果出现任何问题,您可以将路由器切换回您的蓝色环境。在绿色环境运行时仍然存在处理丢失事务的问题,但根据您的设计,您可以将事务提供给两个环境,以便在绿色环境运行时保持蓝色环境作为备份。或者,您可以在切换前将应用程序置于只读模式,在只读模式下运行一段时间,然后将其切换到读写模式。这可能足以解决许多悬而未决的问题。

这两个环境需要不同但尽可能相同。在某些情况下,它们可以是不同的硬件,或者它们可以是在相同(或不同)硬件上运行的不同虚拟机。它们也可以是一个单独的操作环境,被划分为不同的区域,两个切片具有不同的 IP 地址。

将绿色环境投入使用并对其稳定性感到满意后,您就可以将蓝色环境用作暂存环境,以进行下一次部署的最后测试步骤。当您准备好下一个版本时,您可以从绿色切换到蓝色,就像之前从蓝色切换到绿色一样。这样,绿色和蓝色环境都会定期在实时、上一个版本(用于回滚)和暂存下一个版本之间循环。

这种方法的一个优点是它与使热备份工作所需的基本机制相同。因此,这允许您在每个版本上测试您的灾难恢复过程。(我希望你发布的频率比你有灾难的频率高。)

基本思想是有两个易于切换的环境来切换,有很多方法可以改变细节。一个项目通过弹跳 Web 服务器而不是在路由器上工作来完成切换。另一种变化是使用相同的数据库,为 web 和域层制作蓝绿色开关。

使用这种技术,数据库通常是一个挑战,尤其是当您需要更改架构以支持新版本的软件时。诀窍是将架构更改的部署与应用程序升级分开。因此,首先应用数据库重构来更改架构以支持新版本和旧版本的应用程序,部署它,检查一切是否正常,以便有一个回滚点,然后部署新版本的应用程序。(当升级完成后,删除旧版本的数据库支持。)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Kubernetes(k8s)的蓝绿部署是一种常用的发布策略,用于在生产环境中无缝地更新和切换应用程序版本。它的目标是实现零停机时间和无故障的应用程序部署。 在蓝绿部署中,你同时维护两个完全相同的环境:蓝色环境(Blue)和绿色环境(Green)。初始情况下,蓝色环境是当前正在运行的生产环境,而绿色环境是一个新的、与蓝色环境完全相同的空闲环境。 下面是蓝绿部署的基本流程: 1. 部署新版本:将新版本的应用程序部署到绿色环境中,但不要将其流量导向新环境。这样,新版本的应用程序将在绿色环境中运行,但不会对用户产生任何影响。 2. 健康检查:通过验证新版本在绿色环境中是否正常运行来进行健康检查。可以使用Kubernetes的Liveness和Readiness探针来确保新版本健康且准备就绪。 3. 流量切换:当确定新版本在绿色环境中正常运行后,可以将流量逐渐切换到绿色环境,从蓝色环境中减少流量。这可以通过逐步调整负载均衡器、路由规则或DNS设置来实现。 4. 回滚操作:如果在切换过程中发现问题,可以快速回滚到蓝色环境。这是因为蓝色环境仍然处于运行状态,并且可以立即接收并处理流量。 5. 清理:当新版本在绿色环境中稳定运行,并验证没有问题后,可以关闭或删除蓝色环境,以避免资源浪费。 蓝绿部署的优点在于它可以提供零停机时间和无缝的版本切换,减少了对用户的影响。它还提供了一种安全的回滚机制,以便在出现问题时快速恢复到旧版本。这使得应用程序的部署和更新更加可靠和可控。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Meta.Qing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值