You need to enable JavaScript to run this app.
导航
应用无损上线
最近更新时间:2024.09.27 10:08:49首次发布时间:2024.09.27 10:08:49

针对应用无损上线场景,MSE 为您提供服务延迟注册、服务健康检查功能。

功能介绍

建议同时开启健康检查和延迟注册功能,确保服务优雅启动。

功能功能介绍适用场景
健康检查微服务上线过程中,健康检查帮助 Kubernetes 判断服务提供者是否完成注册(而不是注册中),注册完成后告知服务消费者,确保服务消费者具备可用的服务提供者。容器化服务的服务发布
延迟注册延迟注册可以让应用在充分初始化后,再注册到注册中心,对外提供服务。延迟注册可以应对需要提前完成缓存数据加载的场景,避免应用启动后直接注册服务,流量资源未就绪而导致的报错。
  • 本地缓存加载
  • 本地文件加载

注意事项

完成延迟探测时间 initialDelaySeconds(秒)设置。建议您设置该值时做如下参考。若未按下述内容做设置,可能会收到容器平台的就绪探测未通过的告警,但不会影响功能的正常使用。

  • 已开启 服务延迟注册initialDelaySeconds 取值大于您在配置的 延迟注册时间
  • 未开启 服务延迟注册initialDelaySeconds 取值大于您的应用完全就绪的时间。

操作步骤

第一步:健康检查

说明

  • 使用健康检查前,Kubernetes 中已配置 readinessProbe 参数。

  • 虚拟机场景 无需配置 readiness 机制。健康检查插件会对 Spring 的 WebServerInitializedEvent 事件进行监听,当监听到 WebServerInitializedEvent 事件后,才对实例进行注册和订阅。

Kubernetes 提供了 Readiness 健康检查机制,允许 Pod 在启动前完成预备工作。在容器场景中,Kubernetes 的 Readiness 机制配合 MSE Agent 的健康检查 API,可以保证流量的优雅上线。

如下示例代码所示,仅需在 Kubernetes 的 Readiness 机制中添加 MSE Agent API 指令 && curl -sf http://127.0.0.1:17000/lossless/health/readiness

  • 改造前

    readinessProbe:
       exec:
         command:
            - /bin/sh
            - -c
            - "curl -sf http://127.0.0.1:8080/actuator/health"
       initialDelaySeconds: 5
    
  • 改造后

    readinessProbe:
       exec:
         command:
            - /bin/sh
            - -c
            - "curl -sf http://127.0.0.1:8080/actuator/health && curl -sf http://127.0.0.1:17000/lossless/health/readiness"
       initialDelaySeconds: 5
    

第二步:延迟注册

您也可以基于专家经验指定一个超时时长,在健康检查完成后,延迟相应时间后再注册上线。接入 Java 应用前在控制台开启 延迟注册 功能,并设置对应的时长即可,详情操作参见 接入 Java 应用

alt