容器服务实例优雅下线

最近更新时间: 2024-09-05 15:09:00

操作场景

当应用在滚动发布时,应用实例下线后向注册中心注销实例信息,服务调用方在监听到实例下线更新本地服务实例列表期间仍会将流量分发到已经下线的服务实例,造成业务异常。因此在应用滚动发布过程中,可以通过调整部署组滚动发布更新配置达到业务无中断优雅下线的目的。

注意:

目前仅支持集群类型为容器集群对应的部署组应用的服务优雅下线操作。

实现原理

当容器应用进行滚动更新时,provider 实例接受到实例下线通知,向注册中心注销实例信息后实例下线此时实例下线的变更并未推送至 consumer,consumer 会向已经下线的实例正常发起业务调用,造成业务异常。

当启动容器服务滚动发布优雅下线配置后,TSF 会先启动一个 provider 实例向服务注册中心注册实例,而后向下线实例发送下线通知注销实例,待 consumer 将流量路由到新上线实例后在进行原有实例的服务下线,保障滚动发布升级时服务无中断。

操作步骤

  1. 登录 TSF 控制台

  2. 在左侧导航栏中,找到【应用中心】分类,单击【应用管理】,进入应用列表页。

  3. 在应用列表页,单击应用 ID(或筛选应用),进入应用详情页 。

  4. 单击顶部【部署组】,再选择指定的部署组,单击操作列的【部署应用】。

  5. 在【资源配置】字段勾选【部署 agent 容器】并设置 agent 容器的 CPU 和内存 request 和 limit。

  6. 单击【展开高级设置】,配置滚动发布策略按如下推荐配置启动服务优雅下线能力。

  • 配置更新方式:滚动更新。滚动更新会在应用发布时按照更新策略启动新实例销毁旧实例,在整个发布过程中保证实例数一致。

  • 更新间隔:60秒。等待pod就绪的最小时间设置为60s,保证 pod 实例正常启动并注册到 consul 后,被确认为就绪状态并继续滚动更新。

  • 更新策略:启动新的 pod,停止旧的 pod。选择该策略则先启动新实例完成流量导入后再删除旧实例

  • 策略配置:pods 数为1,选择 pods 数为1则每次更新则先启动一个新实例,再下线一个旧实例。

  1. 单击【提交】,即可完成对容器服务实例服务的优雅下线。

注意:

已经运行的部署组,需要通过配置上述滚动更新发布策略并进行重新部署后 pod 实例才具备优雅下线能力。