设置健康检查

重要

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

将应用部署在SAE后,您可以使用健康检查功能查看应用实例与业务运行是否正常,以便运行异常时定位问题。SAE支持在创建或部署中配置,本文介绍如何在SAE控制台配置健康检查。

背景信息

健康检查原理

健康检查是指由Liveness探针或者Readiness探针对应用实例与应用进行定时检查,并将结果反馈给SAE控制台的过程,帮助您了解集群环境下整个服务的运行状态,以便定位问题。

SAE基于Kubernetes,提供了以下两种健康检查类别。

  • 应用实例存活检查(Liveness配置):针对单个应用实例进行健康检查,检测应用实例是否已经启动。

    • 检查成功:表示应用实例健康,SAE不执行任何操作。

    • 检查失败:表示应用实例不健康,SAE会重启应用实例。

  • 应用业务就绪检查(Readiness配置):针对应用业务进行健康检查,检测处理客户请求的应用是否已经就绪。

    • 检查成功:表示应用准备就绪,SAE会为应用分配业务流量进行处理。

    • 检查失败:表示应用未准备就绪,SAE会上报应用异常,不为该应用分配业务流量。

成功和失败说明

  • 成功:健康检查成功次数达到设置的健康阈值,即认为检查通过。

  • 失败:如果一次健康检查失败,SAE会按照您设置的检查周期时间重新进行健康检查。直到失败次数达到设置的不健康阈值后,SAE会进行Liveness失败重启应用实例、Readiness失败摘除实例不分配流量等操作。

健康检查参数

SAE健康检查通过设置以下参数,检查应用实例与应用的运行状态。

  • 延迟时间

    表示应用启动之后多久开始探测。延迟时间请务必大于应用正常启动耗时,否则会导致应用发布/运行过程中健康检查失败,反复重启。例如,应用启动时长为60,建议将延迟时间设置为70。

  • 超时时间

    表示探测超时时间。单位为秒,默认为1。例如设置为10,如果探测超时等待时间超过10秒,表示本次健康检查失败,上报超时异常。如果设置为0或不设置,默认超时等待时间为1秒。

  • 检查周期

    健康检查周期。单位为秒,默认为30。例如设置为5,表示每隔5秒检查一次。在业务容器刚启动的时候,SAE可能会比配置的检查周期更频繁地执行Readiness Probe。这种策略可以让实例尽快开始处理请求,从而提高服务的启动速度和整体的用户体验。

操作入口

  1. 操作入口在不同场景下有差异:

    • 创建应用:在初次创建应用时进行配置。

    • 部署应用:针对正在运行的应用,修改配置。

    • 修改应用配置:针对已停止的应用,修改配置。

    创建应用

    1. 登录SAE控制台,在左侧导航栏选择应用管理 > 应用列表,然后选择目标地域和目标命名空间,最后单击创建应用

    2. 应用基本信息向导页面进行配置后,单击下一步:高级设置

    部署应用

    警告

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

    1. 登录SAE控制台,在左侧导航栏选择应用管理 > 应用列表,然后选择目标地域和目标命名空间,最后单击目标应用名称。

    2. 在目标应用的基础信息页面,单击部署应用

    修改应用配置

    1. 登录SAE控制台,在左侧导航栏选择应用管理 > 应用列表,然后选择目标地域和目标命名空间,最后单击目标应用名称。

    2. 在目标应用的基础信息页面,单击修改应用配置

  2. 展开应用健康检查设置区域,按需进行配置。

配置指引

  1. 根据需求启用应用实例存活检查(Liveness配置)应用业务就绪检查(Readiness配置)。二者需要配置的参数项相同。

    您可以二者都配置(推荐),也可二者选配其一。如果二者都配置,SAE会根据配置的检查延迟时间依次执行两种类型的健康检查。

  2. 请从以下检查方式中选择,并配置参数。

    • HTTP请求检查:通过向实例发送HTTP请求检查健康情况。通过HTTP访问获得的HTTP状态码位于[200,399]之间,则认为访问成功,实例健康;否则认为失败,实例不健康。

    • TCP端口检查:通过TCP Socket与实例建立连接来检查实例的健康情况。如果可以建立连接,则认为实例健康;如果连接失败,则认为不健康。

    • 执行命令检查:通过在实例中执行探针检测命令来检查实例的健康情况。如果执行命令后返回的状态码为0,则认为执行成功,实例健康;如果不为0,则认为执行失败,实例不健康。

    HTTP请求检查

    配置项

    说明

    路径

    访问HTTP Server的路径。

    端口

    访问HTTP Server的端口。

    高级设置

    展开高级设置后,选择判断返回的字符串中是否包含设置的关键字。

    协议

    选择HTTPHTTPS

    延迟时间(秒)

    表示应用启动之后多久开始探测。延迟时间请务必大于应用正常启动耗时,否则会导致应用发布/运行过程中健康检查失败,反复重启。例如,应用启动时长为60,建议将延迟时间设置为70。

    超时时间(秒)

    表示探测超时时间。单位为秒,默认为1。例如设置为10,如果探测超时等待时间超过10秒,表示本次健康检查失败,上报超时异常。如果设置为0或不设置,默认超时等待时间为1秒。

    检查周期(秒)

    健康检查周期。单位为秒,默认为30。例如设置为5,表示每隔5秒检查一次。在业务容器刚启动的时候,SAE可能会比配置的检查周期更频繁地执行Readiness Probe。这种策略可以让实例尽快开始处理请求,从而提高服务的启动速度和整体的用户体验。

    健康阈值(次)

    探针在失败后,被视为成功的最小连续成功数。Liveness必须设置为1。

    不健康阈值(次)

    判定总体失败的连续失败数。

    TCP端口检查

    配置项

    说明

    TCP端口

    设置TCP检查访问的端口。

    延迟时间(秒)

    表示应用启动之后多久开始探测。延迟时间请务必大于应用正常启动耗时,否则会导致应用发布/运行过程中健康检查失败,反复重启。例如,应用启动时长为60,建议将延迟时间设置为70。

    超时时间(秒)

    表示探测超时时间。单位为秒,默认为1。例如设置为10,如果探测超时等待时间超过10秒,表示本次健康检查失败,上报超时异常。如果设置为0或不设置,默认超时等待时间为1秒。

    检查周期(秒)

    健康检查周期。单位为秒,默认为30。例如设置为5,表示每隔5秒检查一次。在业务容器刚启动的时候,SAE可能会比配置的检查周期更频繁地执行Readiness Probe。这种策略可以让实例尽快开始处理请求,从而提高服务的启动速度和整体的用户体验。

    健康阈值(次)

    探针在失败后,被视为成功的最小连续成功数。Liveness必须设置为1。

    不健康阈值(次)

    判定总体失败的连续失败数。

    执行命令检查

    配置项

    说明

    延迟时间(秒)

    表示应用启动之后多久开始探测。延迟时间请务必大于应用正常启动耗时,否则会导致应用发布/运行过程中健康检查失败,反复重启。例如,应用启动时长为60,建议将延迟时间设置为70。

    超时时间(秒)

    表示探测超时时间。单位为秒,默认为1。例如设置为10,如果探测超时等待时间超过10秒,表示本次健康检查失败,上报超时异常。如果设置为0或不设置,默认超时等待时间为1秒。

    检查周期(秒)

    健康检查周期。单位为秒,默认为30。例如设置为5,表示每隔5秒检查一次。在业务容器刚启动的时候,SAE可能会比配置的检查周期更频繁地执行Readiness Probe。这种策略可以让实例尽快开始处理请求,从而提高服务的启动速度和整体的用户体验。

    健康阈值(次)

    探针在失败后,被视为成功的最小连续成功数。Liveness必须设置为1。

    不健康阈值(次)

    判定总体失败的连续失败数。

    执行命令

    设置应用实例或者进程内部执行的健康检查命令。如果该命令返回码为0,则表示应用健康。

    执行命令的具体格式,请参见右侧的示例区域或下文中的示例。健康检查相关命令,请参见Kubernetes官网Configure Probes

    说明

    设置执行命令时,首行填写命令,次行之后再填写参数。多条参数时以换行分隔,请避免出现空行情况。

验证结果

健康检查配置成功后,您可以在目标应用的基础信息页面,单击实例列表页签,在默认分组区域查看实例的运行状态,将鼠标移至状态后的标志上,可查看健康检查配置的详细信息。

运行状态

说明

  • Liveness健康检查未配置liveness_not_configured

  • Readiness健康检查未配置readiness_not_configured

  • Liveness与Readiness健康检查未配置未进行健康检查

表示实例未配置健康检查。

说明
  • 推荐同时配置Liveness和Readiness检查。

  • 如果您需要了解健康检查的配置说明,您可以单击查看详情,查看配置文档。

健康检查中

表示实例正在或等待进行健康检查。

说明

应用启动后,需要等待健康检查所设置的延迟时间,才会开始健康检查。

  • Liveness健康检查失败liveness_failed

  • Readiness健康检查失败readiness_failed

  • Liveness与Readiness健康检查失败健康检查失败

表示健康检查失败,实例不健康。

说明

如果您需要查看检查失败原因,您可以单击失败,跳转至应用事件页面,查看健康检查的详细信息。

健康检查通过

表示健康检查通过,实例健康。