DevOps: A Software Architect`s Perspective
6. 部署
部署的总体目标:对系统用户产生最小影响的情况下,将服务的升级版本投入生产环境中,这些影响可能是失败或者停机时间。
6.1 部署管理的策略
两个常用策略:蓝/绿部署 和 滚动升级。这两在成本及复杂性上有所不同,成本包括虚拟机费用以及虚拟机中运行软件的许可费用。
讨论策略前的假设:
- 当部署新版本时,应该维护向客户提供的服务。
- 开发团队应在无需其他团队协作的情况下随时部署他们服务的版本。
6.1.1 蓝/绿部署
包括了 N 台提供版本 A 服务的虛拟机,同时还准备 N 台版本 B 的虚拟机。一旦版本 B 的 N 台虚拟机配置好并准备服务请求,那么客户请求就能够路由到版本 B 。这是指示域名眼务器( DNS )或负载均衡器更改消息路由的问题。对于所有请求这个路由切换可以一步完成。在监管期后,配置了版本 A 的 N 台虚拟机会从系统中移除。如果在监管期内有任何问题发生,路由可以切回,请求会再次转到运行版本 A 的虚拟机上。这种策略在概念上很简单,但在虚拟机和其他许可的花费上却非常昂贵。
变体:逐步进行流量切换:先将小部分请求先被路由到版本B,可有效进行金丝雀测试。
6.1.2 滚动升级
滚动升级包括将少量版本B的虚拟机一次直接部署到当前生产环境中,同时关闭相同数量的运行版本A的虚拟机。该策略花费不多但更复杂,其在部署期间会消耗额外少量的虚拟机,引入一些一致性问题干扰当前生产环境。