1. 灰度发布
1.1. 功能截图
1.2. 知识点
说明灰度发布简单来说是优雅发布的基础上加入路由版本和用户规则的控制,支持的架构依旧是Dubbo与SpringCloud。
灰度发布又叫金丝雀发布,是指在黑与白之间,能够平滑过渡的一种发布方式。A/B Test 就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
1.3. 功能详述
灰度发布功能通过在发布过程中,对路由进行动态控制,再搭配用户路由规则,使符合规则用户访问对应的路由。
灰度流程可能在许多平台上可能都大同小异,在线上环境进行版本升级时,对某些实例进行先行部署与测试,确保版本不存在问题再扩散到其他实例。除了灰度功能,NTC提供线上debug版本发布,目的在于,对存在旧问题的版本进行部署,根据用户路由规则,使某些内部用户访问到debug版本,调试完成后再进行版本回滚而不影响线上正常业务。
1.3.1. 灰度发布
通过界面右上角的灰度发布进入发布过程。
第一步,选择本次灰度发布涉及的应用,选择一个或多个。
第二步,上传或选择应用对应部署包,包的由来可以有4种方式,1是本地实时上传,2是直接从版本仓库进行部署包选择,3是SFTP获取,这种方式可在资源中心-版本仓库-SFTP设置中进行SFTP可视化配置,4是当前NTC服务器上直接选择部署包。同时需要选择路由,这里的路由有固定两种,第一种是gray,意味发布是灰度发布,优先部署实例发布完成后可以进行灰度验证操作,另外一种是debug,用于调试线上代码问题,调试完的应用只能执行回退,不能进行升级。
第三步,发布策略,确认当前部署实例是否正确,带灰字的实例为灰度实例,灰度实例的数量必须大于等于1个,同时也不允许全部实例都为灰度实例。
点击灰度实例按钮可以修改灰度实例。
第四步,灰度实例发布,部署真正开始的阶段,根据部署内容将设置的灰度实例进行部署,部署过程自动先将实例进行路由下线,上游的请求就不会经过该实例,同时将实例的路由版本改为选中的路由版本(gray或者debug),等待应用当前交易处理完成再进行停止应用、启动、部署操作,当然等待应用交易完成也不是一直等待,会有一个最大等待时间可以在优雅发布首页进行设置,超过时间应用交易还未完成的就会强制进行部署。最后再等待应用启动完成,应用启动完成后将优先部署实例进行路由上线,判断应用启动完成的依据是默认会使用NTC自带的健康检查功能进行应用健康判断,健康检查主要通过端口心跳与发送交易进行判断,如果该实例未开启健康检查或者健康检查项的添加为0,则使用NTC默认的探测来判断应用是否完成启动,即是应用是否推送监控数据与应用探针探测结合。如果要完全无损的发布建议是通过配置健康检查来配置交易来判断是否启动完成比较准确。
点击右上角的“部署日志”可以查看整个部署的进程。
点击实例一栏的操作结果内容可以查看实例详细部署过程。
第五步,继第四步灰度实例发布完成部署后会有几个场景:
1是灰度实例发布没有问题可以进行灰度验证、增量发布、回退与终止操作。
2是灰度实例发布存在问题,只可进行增量发布、回退与终止操作,回退过程同样是将已经部署的灰度实例版本还原至部署前版本。
3如果想人工停止本次操作可以选择终止,手动结束部署。
进入下一步,展示入口灰度请求列表,可点击详情和链路查看内容。
点击增量发布复选框,选择应用点击增量发布按钮进入增量发布的部署步骤。增量发布主要使用场景是当灰度验证不通过需要重新部署应用,或者需要新增部署其他灰度应用时使用。
增量发布完成后,展示所有操作的应用。
下一步可以继续进行灰度验证和增量发布操作。
点击验证通过按钮,验证通过后显示正式发布按钮。
第六步,正式发布,发布过程会同时将灰度规则关闭、所有实例的gray版本修改为release版本,将还未部署的release版本进行下线。此时,未升级的实例路由版本也为release,只是还未上线,等待部署后上线,原来灰度路由的版本已经变为主要的对外系统,随后优雅部署其余的release版本并上线。
这个场景在部署路由为debug时不会出现,debug版本不允许升级。
经过以上六个步骤,部署完成。
1.3.2. 部署计划操作
首页会显示当前正在进行中和已经结束的部署计划,状态分为灰度实例发布中、灰度实例启动、增量发布、验证通过、正式发布中、正在增量发布、重新发布中、回退中、执行成功、执行失败十个类型:
灰度实例发布中是指处于灰度实例正在部署的阶段。
灰度实例启动是指灰度实例部署完毕,等待执行灰度验证、增量发布、回退或者终止的阶段。
增量发布是指增量发布完毕,等待执行灰度验证、增量发布、回退或者终止的阶段。
验证通过是指灰度验证通过,等待执行正式发布的阶段。
正式发布中是指除灰度实例外,后续实例正式发布的阶段。
正在增量发布是指增量发布正在部署的阶段。
重新发布中是指除灰度实例外,后续实例正式发布失败,进行重新发布。
回退中是指灰度实例正在进行回退操作的阶段。
执行成功指的是所有实例部署执行完毕的阶段,是部署计划结束的标志。
执行失败指的是部署过程中存在实例部署失败导致部署计划终止的阶段,通常是在后续实例正式发布失败时产生。
对于所有部署计划,点击每条日志最右的日志按钮,可以查看部署日志。
对于状态是执行成功或执行失败的部署计划,点击不提示按钮,可以使该条部署计划不显示在首页。
对于处于等待操作的部署计划,可以点击跳转按钮至操作进行剩余升级、回滚或者停止操作。
1.3.3. 实例操作
灰度发布首页显示了所有Java应用和实例列表,列表展示了应用的基本信息和路由信息。
以上页面标出了几个关于实例的操作:
- 启动:对选中实例进行启动实例
- 停止:对选中实例进行停止实例
- 刷新:对实例列表进行实例状态和路由状态的实时刷新
- 上线:对选中实例进行路由上线操作
- 下线:对选中实例进行路由下线操作
1.3.4. 设置
右上角点击设置可以进行部署配置以及功能配置相关参数的设置。
入口灰度实例:经过入口灰度实例的请求始终为灰度请求,路由版本始终为gray版本。
应用启动等待时间:指的是部署过程中从开始部署到应用启动再到NTC探测应用启动成功所用的完整时间。
流量停止等待时间:指的是开始灰度部署时,等待应用处理完当前正在执行中请求的最大等待时间。
功能开关:勾选后功能在页面展示相应的开关。
功能提示:部署提示是指部署前对当前的资源组进行提示,高亮显示是指对于同中心的应用做加粗展示。
上传方式:勾选后可以使用该方式上传。
部署包类型:分为全量上传和增量上传,勾选后可以使用该方式上传。
默认方式:默认选中的上传方式。
1.3.5. 历史列表
首页点击右上角的历史,即可进入部署历史列表,列表记录每次部署过程的部署涉及实例和信息、实例部署日志、部署结果等信息。
对于部署结果为成功的记录可以进行还原,还原即是通过灰度发布的方式将当前的应用,还原到灰度实例发布步骤。还原过程与灰度发布过程相同,只是少了选择部署实例与部署包的版本的步骤。
可选中历史项进行批量删除,删除成功后对应的执行计划也会进行删除。