文档

设置健康检查

更新时间:
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

当您在Serverless 应用引擎 SAE(Serverless App Engine)上创建应用时,如果选择自定义运行时或使用自己的容器镜像来创建应用,可能会因为自定义运行环境的不稳定性导致应用实例运行出现异常。为了防止这种异常实例影响到应用的正常运行,导致请求处理失败,Serverless 应用引擎提供了周期性健康检查功能。这项功能可以定期检测应用实例的健康状态,确保异常实例不会接收到新的请求,从而提高应用的稳定性和可用性。本文将详细介绍健康检查的工作原理,以及如何在SAE控制台配置健康检查。

健康检查原理

单次健康检查行为

SAE执行一次健康检查的行为如下。

  1. 根据应用配置,向指定HTTP路径发送GET请求。

  2. 如果GET请求执行没有超时,HTTP返回状态码小于400且大于等于200,则认为本次检查成功。否则,认为本次检查失败。

健康检查失败后的调度行为

如果应用实例不健康,SAE将尝试调度请求到其他实例。

  • 如果SAE调度请求成功,请求将在新的应用实例上执行。

  • 如果SAE未能及时调度请求到其他实例,将返回健康检查失败错误信息。下一次执行健康检查时,会直接调度到新的应用实例。

实例启动行为

如果您为应用配置了健康检查,实例启动的行为如下。

如果首次健康检查成功,则认为应用健康,并进入健康检查循环,执行周期性健康检查,具体流程如下。否则,认为实例启动失败,健康检查流程终止,并返回相关错误信息。

  • 如果连续健康检查失败,次数达到您设置的最大失败次数,则认为该应用实例不健康。SAE将尝试调度请求到其他实例。

  • 如果不健康的实例连续健康检查成功次数达到您设置的探测成功阈值,则认为该实例已恢复健康。

如果应用监听80端口,但是在配置页面为HTTP监听端口设置了9000,则健康检查会失败。

使用限制

仅支持为自定义运行时环境和使用自定义镜像启动的应用实例设置健康检查功能。

操作步骤

在创建Web应用时设置健康检查

  1. 登录SAE控制台

  2. 在左侧导航栏,选择应用管理 > Web应用,在顶部菜单栏选择地域。

  3. 应用列表页面,单击创建应用

  4. 应用基本信息页面,按照页面提示完成相关参数配置,然后单击下一步:高级设置

  5. 高级设置页面,展开应用健康检查设置区域,单击应用启动检查(Startup 配置)对应的image图标,开启健康检查,然后根据下表设置相关信息。

    说明
    • 应用启动检查和应用实例存活检查的参数相同。

    • 在健康检查设置中,应用启动检查(Startup 配置)应用实例存活检查(Liveness 配置)二者都配置(推荐),也可二者选配其一。如果二者都配置,SAE会根据配置的检查延迟时间依次执行健康检查。

    HTTP请求检查

    适用于应用启动检查(Startup 配置)应用实例存活检查(Liveness 配置)。通过向实例发送HTTP请求检查健康情况。若通过HTTP访问获得的HTTP状态码位于[200,399]之间,则认为访问成功,实例健康;否则认为失败,实例不健康。

    配置项

    说明

    路径

    访问HTTP Server的路径。

    端口

    访问HTTP Server的端口。

    HTTP Header

    单击显示高级设置(HTTP Header)后展开。在请求中设置的自定义HTTP Header,支持使用重复的Header。

    初始延迟时间(秒)

    设置容器启动后执行首次探测之前的延迟时间。取值范围为[0,240],默认为0。

    超时时间(秒)

    设置超时等待时间。取值范围为[1,240],默认为1。

    检查周期(秒)

    设置检查频率。取值范围为[1,240],默认为10。

    失败阈值(次)

    判定总体失败的连续失败数。默认为3。

    TCP端口检查

    仅适用于应用启动检查(Starup 配置)。通过向实例发送一个TCP Socket来检查实例的健康情况。如果可以建立连接,则认为实例健康;如果连接失败,则认为不健康。

    配置项

    说明

    端口

    访问HTTP Server的端口。

    初始延迟时间(秒)

    设置容器启动后执行首次探测之前的延迟时间。取值范围为[0,240],默认为0。

    超时时间(秒)

    设置超时等待时间。取值范围为[1,240],默认为1。

    检查周期(秒)

    设置检查频率。取值范围为[1,240],默认为10。

    不健康阈值(次)

    判定总体失败的连续失败数。默认为3。

  6. 单击创建应用

在部署新版本时设置健康检查

警告

部署新版本后,该应用将会被重启。为避免业务中断等不可预知的错误,请在业务低峰期执行部署操作。

  1. 登录SAE控制台

  2. 在左侧导航栏,选择应用管理 > Web应用,在顶部菜单栏选择地域。

  3. 应用列表页面,单击目标应用名称。

  4. 在左侧导航栏,单击版本列表,然后单击新建版本

  5. 在弹出的新建版本面板,单击应用启动检查(Startup 配置)对应的image图标,开启健康检查,然后根据下表设置相关信息。

    说明
    • 应用启动检查和应用实例存活检查的参数相同。

    • 在健康检查设置中,应用启动检查(Startup 配置)应用实例存活检查(Liveness 配置)二者都配置(推荐),也可二者选配其一。如果二者都配置,SAE会根据配置的检查延迟时间依次执行健康检查。

    HTTP请求检查

    适用于应用启动检查(Startup 配置)应用实例存活检查(Liveness 配置)。通过向实例发送HTTP请求检查健康情况。若通过HTTP访问获得的HTTP状态码位于[200,399]之间,则认为访问成功,实例健康;否则认为失败,实例不健康。

    配置项

    说明

    路径

    访问HTTP Server的路径。

    端口

    访问HTTP Server的端口。

    HTTP Header

    单击显示高级设置(HTTP Header)后展开。在请求中设置的自定义HTTP Header,支持使用重复的Header。

    初始延迟时间(秒)

    设置容器启动后执行首次探测之前的延迟时间。取值范围为[0,240],默认为0。

    超时时间(秒)

    设置超时等待时间。取值范围为[1,240],默认为1。

    检查周期(秒)

    设置检查频率。取值范围为[1,240],默认为10。

    失败阈值(次)

    判定总体失败的连续失败数。默认为3。

    TCP端口检查

    仅适用于应用启动检查(Starup 配置)。通过向实例发送一个TCP Socket来检查实例的健康情况。如果可以建立连接,则认为实例健康;如果连接失败,则认为不健康。

    配置项

    说明

    端口

    访问HTTP Server的端口。

    初始延迟时间(秒)

    设置容器启动后执行首次探测之前的延迟时间。取值范围为[0,240],默认为0。

    超时时间(秒)

    设置超时等待时间。取值范围为[1,240],默认为1。

    检查周期(秒)

    设置检查频率。取值范围为[1,240],默认为10。

    不健康阈值(次)

    判定总体失败的连续失败数。默认为3。

  6. 然后单击确定

更多信息

健康检查最佳实践