配置和管理健康检查

更新时间:
复制 MD 格式

ALB支持通过健康检查持续监控后端服务器的运行状况,自动屏蔽异常服务器,确保业务可用性。

用户可以为每个服务器组独立配置健康检查。每个服务器组默认开启健康检查。

  • 开启健康检查后,ALB会持续监控服务器组中所有后端服务器的运行状况,并自动将请求路由至健康检查正常的服务器。后端服务器需连续通过指定次数(健康阈值)的健康检查才会被判定为正常,以避免网络抖动导致的误判。

  • 当某台后端服务器健康检查出现异常时,ALB会自动将新的请求分发到其他健康检查正常的后端服务器。

  • 当该服务器恢复正常运行时,ALB会将其自动恢复到负载均衡服务中。

  • 健康检查为短连接,完成健康检查后连接将关闭。

  • 如果同一个服务器组中仅包含健康检查异常的服务器,ALB仍会尝试根据调度算法将请求路由至这些服务器,而不考虑这些服务器的运行状况,以最大可能避免业务受损。

说明
  • 如果后端服务器权重设置为0,该服务器不会参与健康检查。

  • ALB通过特定IP地址与后端服务器通信和健康检查,请确保后端服务器未屏蔽这些地址(包括iptables、安全策略软件或VPC网络ACL):

    • ALB升级实例使用所在交换机网段的私网地址(Local IP)通信,可在实例详情页查看。

    • 升级前的ALB实例使用内网地址段100.64.0.0/10与后端服务器通信。

创建健康检查

控制台

  1. 前往ALB控制台的健康检查页面。

  2. 在顶部菜单栏选择目标地域后,单击创建健康检查。完成以下配置,然后单击创建

    • 健康检查名称:输入健康检查名称。

    • 协议:选择健康检查协议。

      • HTTP:通过发送HEADGET请求检查服务器应用是否健康。

      • HTTPS:通过发送HEADGET请求检查服务器应用是否健康。标准版和WAF增强版ALB实例支持,基础版不支持。

      • TCP:通过发送SYN握手报文检测服务器端口是否存活。

      • gRPC:通过发送POSTGET请求检查服务器应用是否健康。

      说明

      ALB扩展版仅支持HTTP、TCP健康检查协议。

    • 健康检查方法:仅在健康检查协议为HTTP、HTTPSgRPC时可配置。

      • HEAD(HTTP/HTTPS默认):请确保后端服务器支持HEAD请求。不支持时可改用GET。

      • POST(gRPC默认):请确保后端服务器支持POST请求。不支持时可改用GET。

      • GET:响应报文超过8KB会被截断,但不影响健康检查结果判定。

    • 健康检查HTTP协议版本:支持HTTP1.0HTTP1.1。仅在健康检查协议为HTTPHTTPS时可配置。

    • 端口:健康检查探测端口。默认为空,表示使用后端服务器端口。取值范围1~65535,仅支持填写一个端口号。

    • 路径:健康检查探测路径,如/health,建议指向静态页面。不填时默认探测根路径(/)。仅在健康检查协议为HTTP、HTTPSgRPC时可配置。

    • 域名:健康检查域名。默认使用后端服务器内网IP。仅在健康检查协议为HTTP、HTTPSgRPC时可配置。

    • 健康状态返回码:仅当探测请求返回指定状态码时判定为健康。仅在健康检查协议为HTTP、HTTPSgRPC时可配置。

      • HTTP/HTTPS协议:可选http_2xxhttp_3xxhttp_4xxhttp_5xx。默认选择http_2xxhttp_3xx

      • gRPC协议:状态码范围0~99,最多支持20个范围值,多个值用半角逗号(,)隔开。

      警告

      4XX5XX纳入健康状态码可能导致故障实例无法被及时剔除。建议优先确保后端服务返回正确的2XX3XX状态码。

    • 健康检查响应超时时间:后端服务器在指定时间内未返回正确响应,则判定为健康检查失败。取值范围1~300秒,默认5秒。

    • 健康检查间隔时间:两次健康检查的时间间隔。取值范围1~50秒,默认2秒。

    • 健康检查健康阈值:连续成功指定次数后判定为健康。取值范围2~10,默认3次。

    • 健康检查不健康阈值:连续失败指定次数后判定为不健康。取值范围2~10,默认3次。

    • 标签及资源组

      • 标签键标签值:以键值对形式标记健康检查,便于筛选管理。

      • 选择资源组:选择健康检查归属的资源组

健康检查创建完成后,可以在创建服务器组时,在健康检查配置中选择已创建的健康检查。

支持在创建/删除服务器组时配置健康检查,并选中将新的配置保存为健康检查,方便下次快速复制使用。

API

  1. 调用CreateHealthCheckTemplate创建健康检查模板。

  2. 调用ApplyHealthCheckTemplateToServerGroup将健康检查模板应用到服务器组。

编辑健康检查

警告
  • 关闭健康检查后,ALB无法检测后端服务器故障,流量不会自动切换至正常服务器。

  • 延长健康检查间隔会增加ALB发现故障服务器的时间。

控制台

  1. 前往ALB控制台的健康检查页面。

  2. 找到目标健康检查,在操作列单击编辑

  3. 编辑健康检查对话框中,修改健康检查参数配置,然后单击保存

也可以在服务器组页面编辑健康检查

API

调用UpdateHealthCheckTemplateAttribute更新健康检查模板的属性。

查看健康检查状态

ALB实例已配置监听且服务器组已开启健康检查,可以在监听页签查看后端服务器的健康检查状态。监听健康检查状态基于其关联的全部服务器组聚合:一个服务器组内任一后端服务器健康检查异常,则该服务器组异常;一个监听关联的多个服务器组中任一服务器组异常,则监听健康检查状态显示为异常。

控制台

  1. 前往ALB控制台的实例页面。

  2. 找到目标ALB实例,单击实例ID。

  3. 单击监听页签,在监听列表的健康检查状态列查看后端服务器的健康检查状态。

API

调用GetListenerHealthStatus查询监听的健康检查状态。

删除健康检查

控制台

  1. 前往ALB控制台的健康检查页面。

  2. 找到目标健康检查,在操作列单击删除

  3. 在弹出的删除对话框中,确认提示信息,然后单击确定

API

调用DeleteHealthCheckTemplates删除健康检查模板。

应用于生产环境

  • 创建专用健康检查端点:推荐创建专用接口(如/health),始终返回 HTTP 200 状态码。避免使用业务路径,业务路径可能因权限校验或资源不存在返回 4XX。

  • 健康检查失败时优先修复后端服务:排查并修复后端服务问题,使健康检查路径返回正确的 2XX 或 3XX 状态码,而非放宽状态码判定条件。

  • 合理配置健康检查参数:默认配置适用于大多数场景。如果后端服务启动较慢,可适当增大健康检查间隔或不健康阈值;如果网络延迟较高,可适当增大响应超时时间。

  • 使用 curl 命令模拟健康检查:排查健康检查问题时,可参考以下命令模拟 ALB 的健康检查行为,根据实际配置替换方法(HEAD/GET)、域名、IP和端口:

    curl -Iv -X HEAD --http1.0 -H "Host: your-domain.com" http://backend_ip:port/health_path

计费

健康检查不产生额外费用。ALB实例的计费规则请参见ALB计费说明

配额

一个地域最多支持50个健康检查模板,不支持提升。

相关文档