配置及验证优雅上下线能力
本章节以Nacos demo应用为例,通过Sermant Agent接入ServiceComb引擎,并在CCE集群上验证优雅上下线功能。
应用基于Sermant Agent会自动接入ServiceComb引擎,接入流程请参考CCE部署场景接入指南。
(可选)自定义优雅上下线配置
优雅上下线能力默认开启,若需自定义配置,请参考如下方式:
如果方式一与方式二同时配置,将以方式二为准。
- 方式一:
在启动Spring Cloud应用时通过环境变量或者-D参数的形式进行配置,配置参数如下:
参数项
说明
grace_rule_startDelayTime
注册延迟时间,默认0秒,若大于0,则开启注册延迟。
grace_rule_enableWarmUp
开启优雅上线能力,默认开启。
grace_rule_warmUpTime
优雅上线时间,单位秒,该配置生效需开启优雅上线功能,默认120秒。
grace_rule_enableGraceShutdown
配置优雅下线能力开关, 默认开启。
grace_rule_shutdownWaitTime
下线前的最大等待时间,默认30S。
grace_rule_enableOfflineNotify
开启下线通知,默认开启。
- 方式二:
通过配置管理进行配置,配置步骤如下:
- 登录微服务引擎控制台。
- 单击,选择区域。
- 选择“ServiceComb引擎”。
- 单击待操作的ServiceComb引擎。
- 选择“配置管理”。
- 单击右上角的“新建配置”进入新建配置页面。
- 输入“配置项”,命名为sermant.agent.grace。
此处名称固定为该值。
- 选择“配置范围”,这里以微服务级配置为例,选择您要配置的服务,如下图所示:
- “配置格式”选择“YAML”,并自定义优雅上下线配置, 如下:
rule: startDelayTime: 0 # 注册延迟时间,默认0秒,若大于0,则开启注册延迟。 enableWarmUp: true # 开启优雅上线能力,默认为true(开启),如需关闭,请设置为fasle。 warmUpTime: 120 # 优雅上线时间,单位秒,该配置生效需开启优雅上线功能,默认120秒。 enableGraceShutdown: true # 配置优雅下线能力开关,默认为true(开启),如需关闭,请设置为fasle。 shutdownWaitTime: 30 # 下线前的最大等待时间,默认30S。 enableOfflineNotify: true # 开启下线通知,默认开启。
- 单击右下角的“立即创建”,然后重启对应服务实例即可。
下发配置时,请去掉注释,否则会导致下发配置失败。
验证优雅上下线能力
- 验证优雅上线能力。
图1 优雅上线验证部署图
如上图所示,该套nacos应用有nacos-rest-consumer、nacos-rest-provider(两个实例)以及nacos-rest-data服务,其中灰色的实例已关闭开启优雅上线,而绿色实例开启优雅上线功能。
若需关闭预热,请添加环境变量“grace_rule_enableWarmUp=false”进行指定。
而服务nacos-rest-consumer通过接口graceHot进行模拟调用。
- 下载demo应用并打包。
- 按照优雅上线验证部署图进行部署并将nacos-rest-provider的其中一个实例开启优雅上线能力。
- 查看应用是否已全部接入ServiceComb引擎。
参考查看微服务列表查看您的应用是否已接入ServiceComb引擎。
- 待应用接入ServiceComb引擎后,使用以下脚本invoke-hot.sh模拟调用过程。
#!/bin/bash endpoint=127.0.0.1:31021 url=${endpoint}/graceHot while true do echo `curl -s ${url}` done
endpoint为nacos-rest-consumer服务的调用地址,即ip:port。需根据实际nacos-rest-consumer地址进行替换。
- 查看服务调用情况。
使用脚本stat.sh查看服务调用情况,脚本如下:
#!/bin/bash endpoint=127.0.0.1:31021 watch curl ${endpoint}/stat
下图为某个时刻统计的调用结果:
上图中实例x.x.0.55:8009关闭了优雅上线, 实例x.x.0.51:8004开启了优雅上线,观察请求数(requestCount)与QPS,可观察到开启优雅上线的实例的QPS与请求数都小于关闭优雅上线的实例。持续观察流量请求情况,直到两个实例QPS基本持平则结束验证。
- 验证优雅下线能力。
如上图,该套nacos应用有nacos-rest-consumer、nacos-rest-provider(两个实例)、nacos-rest-provider-close-grace(两个实例)以及nacos-rest-data服务,其中服务nacos-rest-provider-close-grace关闭了优雅下线,其他服务开启优雅下线。
nacos-rest-consumer通过调用接口graceDownOpen测试验证优雅下线能力;调用接口graceDownClose对比未开启优雅下线时请求处理情况。查看调用情况可使用nacos-rest-consumer接口的stat方法进行请求统计。
- 下载demo应用并打包。
- 按照优雅下线验证部署图进行部署,并关闭nacos-rest-provider-close-grace的优雅下线能力。
- 查看应用是否已全部接入ServiceComb引擎。
参考查看微服务列表查看您的应用是否已接入ServiceComb引擎。
- 待应用接入ServiceComb引擎后,使用如下脚本invoke.sh模拟请求。
#!/bin/bash endpoint=127.0.0.1:31021 openUrl=${endpoint}/graceDownOpen closeUrl=${endpoint}/graceDownClose while true do echo `curl -s ${openUrl}` echo `curl -s ${closeUrl}` done
- endpoint为服务nacos-rest-consumer实例的请求地址,即ip:port。需根据实际nacos-rest-consumer地址进行替换。
- openUrl为开启优雅下线能力的调用接口。
- closeUrl为关闭优雅下线能力的调用接口。
- 查看应用的请求情况。
参考如下脚本stat.sh查看请求调用情况:
#!/bin/bash endpoint=127.0.0.1:31021 watch curl ${endpoint}/stat
endpoint为服务nacos-rest-consumer实例的请求地址,即ip:port。
- 对服务进行缩容,模拟下线。
分别对nacos-rest-provider-close-grace与nacos-rest-provider进行缩容,将实例缩容为1个。
- 使用4的脚本,查看服务调用情况。
上图中,graceDownClose为关闭优雅下线能力的请求统计,可以看到存在4个错误请求(errorCount), 而下方graceDownOpen为开启优雅下线能力的请求统计,可以看到未出现错误请求。