1. 优雅发布

1.1. 功能截图

1.2. 知识点

说明优雅发布功能适用于分布式架构系统,包括Dubbo与SpringCloud。

使用场景:项目在普通发布过程中,所有应用的实例要先停止-\>部署-\>实例再启动,过程有可能有1-3分钟。在发布的过程中,正在处理请求可能中断,新的处理请求将会拒绝,影响了客户的体验。存在几分钟的故障报错的窗口。优雅发布要先对部分实例下线,等待无流量时,停止并部署后,将流量切换到这些实例,其他实例下线,等待无流量时,进行停止并部署,最后上线。优雅发布在发布过程没有故障报错的时间窗口,保证发布过程无损。

优雅发布过程分为三个个阶段:优先实例发布、流量切换验证、正式发布。

优先部署实例:在优雅发布与灰度发布过程中都需要先选定优先部署实例,认定某些实例是优先批次部署,以配置的方式设置并进行持久化保存,目的规范某些实例固定对新版本实验。

NTC对应用启动成功的默认方式是通过检测应用是否上送监控数据与应用探针端口。

1.3. 功能详述

优雅发布基于NTC自研的分布式路由,使用之前需要将应用探针分布式路由模块启用,通过在发布过程中结合路由控制和数据监控达到无损发布的目的。

分布式路由中有两个比较重要概念:

  • 联机状态:应用可以有两个联机状态。分别为离线状态和在线状态。这些状态由ntc控制中心进行控制,实时生效。离线-offline,当实例为离线状态的时候,所有的新请求将不会路由到这个实例。在线-online,只有实例在online状态时,才可以接收请求。
  • 路由版本:每个实例有一个路由版本,灰度发布功能主要在生产环境,提供三种路由版本,分别为调试版-debug、灰度版-gray、发布版-release,应用根据用户路由规则使不同用户访问不同版本,线上版本(初始版本默认都为release)为release版本,在用户需要访问gray版本但未找到对应gray版本的实例时,默认访问release版本兜底,其他自定义版本规则也如此。为了使release版本和其他版本的实例不混用,设置会保存一个或多个固定实例作为gray或者debug的发布实例。

优雅发布是针对所有实例的一次完整升级迭代。

1.3.1. 优雅发布

通过界面右上角的优雅发布进入发布过程。

第一步,选择本次优雅发布涉及的应用,选择一个或多个。

第二步,上传或选择应用对应部署包,包的由来可以有4种方式,1是本地实时上传,2是直接从版本仓库进行部署包选择,3是SFTP获取,这种方式可在资源中心-版本仓库-SFTP设置中进行SFTP可视化配置,4是当前NTC服务器上直接选择部署包。

第三步,发布策略,确认当前部署实例是否正确,实例名称前显示1的是优先部署实例,2代表后续部署实例,优先部署实例的数量必须大于等于1个,同时也不允许全部实例都为优先部署实例。

点击优先部署实例按钮可以修改优先部署实例。

第四步,优先实例发布,部署真正开始的阶段,根据部署设置优先部署的实例进行部署,部署过程自动先将实例进行路由下线,上游的请求就不会经过该实例,然后等待应用当前交易处理完成再进行停止应用、启动、部署操作,当然等待应用交易完成也不是一直等待,会有一个最大等待时间可以在优雅发布首页进行设置,超过时间应用交易还未完成的就会强制进行部署。最后再等待应用启动完成,判断应用启动完成会先使用NTC自带的健康检查功能进行应用健康判断,健康检查主要通过端口心跳与发送交易进行判断,如果该实例未开启健康检查或者健康检查项的添加为0,则使用NTC默认的探测来判断应用是否完成启动,即应用是否推送监控数据与应用探针端口探测结合。如果要完全无损的发布建议是通过配置健康检查配置交易来判断是否启动完成比较准确。

点击右上角的“部署日志”可以查看整个部署的进程。

点击实例一栏的操作结果内容可以查看实例详细部署过程。

第五步,继第四步优先部署实例完成部署后会有几个场景。

1是优先部署实例没有问题可以进行流量验证、回退与终止操作。

2是优先部署存在问题,只可进行回退与终止操作,回退过程同样是将已经部署的优先实例版本还原至部署前版本。

3如果想人工停止本次操作可以选择终止,手动结束部署。

流量切换验证:将优先部署实例变为在线状态,后续部署实例变为离线状态。

进入下一步,点击流量切换按钮,展示最近1分钟流量和成功率,如果有异常报错,可以进行回退操作;如果流量正常,可以进行正式发布。

验证通过后显示回退、下一步、终止与刷新按钮。

第六步,点击下一步后进入正式发布,点击正式发布会等待后续部署实例处理完当前未完成的交易,进行停止、部署、启动,最后判断应用是否启动成功,同样会先根据健康检查规则进行判断心跳判断,如果未开启或不存在健康检查规则则根据NTC默认探测规则进行检查,等所有后续部署实例完成部署进行路由上线。

经过以上六个步骤,部署完成。

1.3.2. 部署计划操作

首页会显示当前正在进行中和已经结束的部署计划,状态分为优先实例发布中、优先实例发布、流量验证、正式发布中、重新发布中、回退中、执行成功、执行失败八个类型:

优先实例发布中是指处于优先部署实例正在部署的阶段。

优先实例发布是指优先实例部署完毕,等待执行流量验证、回退或者终止的阶段。

流量验证是指流量验证通过,等待执行正式发布、回退或者终止的阶段。

正式发布中是指除优先部署实例外,后续实例正式发布的阶段。

重新发布中是指除优先部署实例外,后续实例正式发布失败,进行重新发布。

回退中是指优先部署实例正在进行回退操作的阶段。

执行成功指的是所有实例部署执行完毕的阶段,是部署计划结束的标志。

执行失败指的是部署过程中存在实例部署失败导致部署计划终止的阶段,通常是在后续实例正式发布失败或部署终止产生。

对于所有部署计划,点击每条日志最右的日志按钮,可以查看部署日志。

对于状态是执行成功或执行失败的部署计划,点击不提示按钮,可以使该条部署计划不显示在首页。

对于处于优先实例发布或流量验证的部署计划,可以点击跳转按钮至操作也进行回退或者停止操作。

1.3.3. 实例操作

优雅发布首页显示了所有Java应用和实例列表,列表展示了应用的基本信息和路由信息。

以上页面标出了几个关于实例的操作:

  • 启动:对选中实例进行启动实例
  • 停止:对选中实例进行停止实例
  • 刷新:对实例列表进行实例状态和路由状态的实时刷新
  • 上线:对选中实例进行路由上线操作
  • 下线:对选中实例进行路由下线操作

1.3.4. 设置

右上角点击设置可以进行部署配置以及功能配置相关参数的设置,该设置在灰度发布也有相同设置入口。

应用启动等待时间:指的是部署过程中从开始部署到应用启动再到NTC探测应用启动成功所用的完整时间。

流量停止等待时间:指的是开始优雅部署时,等待应用处理完当前正在执行中请求的最大等待时间。

功能开关:勾选后功能在页面展示相应的开关。

功能提示:部署提示是指部署前对当前的资源组进行提示,高亮显示是指对于同中心的应用做加粗展示。

上传方式:勾选后可以使用该方式上传。

部署包类型:分为全量上传和增量上传,勾选后可以使用该方式上传。

默认方式:默认选中的上传方式。

1.3.5. 历史列表

首页点击右上角的历史,即可进入部署历史列表,列表记录部署计划包括部署涉及实例和信息、实例部署日志、部署结果等信息。可以根据时间、涉及应用、实例和结果来进行条件查询。

对于部署结果为成功的记录可以进行还原,还原即是通过优雅发布的方式将当前的应用,还原到优先实例发布步骤。还原过程与优雅发布过程相同,只是少了选择部署实例与部署包的版本的步骤。

可选中历史项进行批量删除,删除成功后对应的执行计划也会进行删除。

results matching ""

    No results matching ""