更新时间:2024-08-16 GMT+08:00
分享

配置及验证优雅上下线能力

本章节以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

    开启下线通知,默认开启。

  • 方式二:

    通过配置管理进行配置,配置步骤如下:

    1. 登录微服务引擎控制台。
    2. 单击,选择区域。
    3. 选择“ServiceComb引擎”。
    4. 单击待操作的ServiceComb引擎。
    5. 选择“配置管理”
    6. 单击右上角的“新建配置”进入新建配置页面
    7. 输入“配置项”,命名为sermant.agent.grace。

      此处名称固定为该值。

    8. 选择配置范围,这里以微服务级配置为例,选择您要配置的服务,如下图所示:

    9. 配置格式选择YAML,并自定义优雅上下线配置, 如下:

      rule:
        startDelayTime: 0          # 注册延迟时间,默认0秒,若大于0,则开启注册延迟。
        enableWarmUp: true         # 开启优雅上线能力,默认为true(开启),如需关闭,请设置为fasle。
        warmUpTime: 120            # 优雅上线时间,单位秒,该配置生效需开启优雅上线功能,默认120秒。
        enableGraceShutdown: true  # 配置优雅下线能力开关,默认为true(开启),如需关闭,请设置为fasle。
        shutdownWaitTime: 30       # 下线前的最大等待时间,默认30S。
        enableOfflineNotify: true  # 开启下线通知,默认开启。
    10. 单击右下角的立即创建,然后重启对应服务实例即可。

    下发配置时,请去掉注释,否则会导致下发配置失败。

验证优雅上下线能力

  • 验证优雅上线能力。
    图1 优雅上线验证部署图

    如上图所示,该套nacos应用有nacos-rest-consumer、nacos-rest-provider(两个实例)以及nacos-rest-data服务,其中灰色的实例已关闭开启优雅上线,而绿色实例开启优雅上线功能。

    若需关闭预热,请添加环境变量“grace_rule_enableWarmUp=false”进行指定。

    而服务nacos-rest-consumer通过接口graceHot进行模拟调用。

    1. 下载demo应用并打包。
    1. 按照优雅上线验证部署图进行部署并将nacos-rest-provider的其中一个实例开启优雅上线能力。
    2. 查看应用是否已全部接入ServiceComb引擎。

      参考查看微服务列表查看您的应用是否已接入ServiceComb引擎。

    3. 待应用接入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地址进行替换。

    4. 查看服务调用情况。

      使用脚本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-provider-close-grace与nacos-rest-provider同属于一个jar应用,nacos-rest-provider-close-grace请使用环境变量“spring_application_name=nacos-rest-provider-close-grace”进行指定

    • 关闭优雅下线的方法。

      添加环境变量“grace_rule_enableGraceShutdown=false”进行指定

    nacos-rest-consumer通过调用接口graceDownOpen测试验证优雅下线能力;调用接口graceDownClose对比未开启优雅下线时请求处理情况。查看调用情况可使用nacos-rest-consumer接口的stat方法进行请求统计。

    1. 下载demo应用并打包。
    1. 按照优雅下线验证部署图进行部署,并关闭nacos-rest-provider-close-grace的优雅下线能力。
    2. 查看应用是否已全部接入ServiceComb引擎。

      参考查看微服务列表查看您的应用是否已接入ServiceComb引擎。

    3. 待应用接入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为关闭优雅下线能力的调用接口。
    4. 查看应用的请求情况。

      参考如下脚本stat.sh查看请求调用情况:

       #!/bin/bash
       endpoint=127.0.0.1:31021
       watch curl ${endpoint}/stat

      endpoint为服务nacos-rest-consumer实例的请求地址,即ip:port。

    5. 对服务进行缩容,模拟下线。

      分别对nacos-rest-provider-close-grace与nacos-rest-provider进行缩容,将实例缩容为1个。

    6. 使用4的脚本,查看服务调用情况。

      上图中,graceDownClose为关闭优雅下线能力的请求统计,可以看到存在4个错误请求(errorCount), 而下方graceDownOpen为开启优雅下线能力的请求统计,可以看到未出现错误请求。

相关文档