前言
- 关于蓝绿部署、滚动升级、灰度发布的描述、区别、优缺点,网上有很多讨论,这里不做过多描述,比如:https://www.cnblogs.com/nulige/articles/10929182.html
- 蓝绿部署的场景,相对比较简单,这里也不做赘述
滚动升级(无损升级)
介绍
- 故名思议,就是逐步升级服务中的节点
场景
基于haproxy的四七层滚动升级:
- 方式:使用socat(unix套接字工具)管理haproxy上挂载服务的状态实现无损变更
- 场景:假如某服务有A、B两个节点,且挂载到了haproxy上
- 无损变更方式:
- 准备:首先haproxy需要配置生成套接字sock:stats socket /usr/local/haproxy/stats
- 变更前:使用socat连接该sock,
- 变更中:disable掉A节点(此时流量全部到B)
- 变更中:升级A节点
- 变更中:A节点升级完成后,enable A节点,验证A节点上流量是否正常,否则disable掉后回滚
- 变更中:disable掉B节点(此时流量全部到A)
- 变更中:升级B节点
- 变更中:B节点升级完成后