0
点赞
收藏
分享

微信扫一扫

解决方案(17) 无回滚更新


前言

当前服务节点集群化架构,一个应用在发布期内,存在多个节点, 发布过程持续过久(30分钟以上)。

发布新版需要发布30分钟,基于tag回滚也需要这么长时间。这个在试错上的成本非常大。核心的问题在于,发版前的服务,和发版后的服务,不能共存。

引入【灰度服务器集群】, 将【正式服务回滚部署】优化成【旧服务流量切换】。该方式和原方式相比,差异在:

  • 新旧服务共存。验收通过以前,只有灰度是基于新tag发布,正式服一直是旧tag。
  • 流量切换没有时间开销。回滚部署,要部署很久。

如果可以发布前的节点,和发布后的节点,同时保持运行,在发布时,按照以下顺序:

  • 发布新版本服务节点到【灰度服务器集群(2台以上,4核8G)】
  • 通过ng,将流量切到灰度服务器集群。
  • 线上回归测试。通过以后,将正式服务器发布。流量切回来。

灰度服务器集群

发布时,新版本的服务会临时构建发布在灰度服务器集群。验收通过后,该服务可以下线。

  • 灰度服务器仅服务于无状态的服务。
  • 灰度服务器,设置灰度集群入口(lb实现)。
  • 灰度服务器,最少2台。
  • 如果灰度服务器配置不高,发布过程,也优先选择人想对较少的时间发。

发布过程

  1. 发布前

解决方案(17) 无回滚更新_灰度

  1. 发布新版服务到灰度并进行线上回归测试

解决方案(17) 无回滚更新_服务器_02

  1. 回归结束, 更新正式服,并流量切回, 灰度服务离线。

解决方案(17) 无回滚更新_服务器集群_03

问题预测

TCP的流量切换怎么实现。

发布前:
长连接域名解析规则里,填写的是【待更新应用】集群入口lb x.x.x.x

发布灰度:
lb x.x.x.x 将集群入口lb解析修改至灰度服务器lb

回归完毕,正式服构建结束:
lb x.x.x.x 解析修正回


举报

相关推荐

0 条评论