文档首页 > > 常见问题> 健康检查> 健康检查异常如何排查?

健康检查异常如何排查?

分享
更新时间:2020/07/13 GMT+08:00

操作场景

ELB的健康检查是通过ELB系统向后端服务器发起心跳检查的方式来实现的,而ELB系统和后端服务器之间是通过内网进行通信的,为了确保健康检查工作的正常进行,您需要确保能够通过内网访问您的后端服务器。健康检查用于探测您的后端服务器是否处于正常工作状态,当出现健康检查异常时,通常说明您的后端服务器出现了异常,但也有可能是您的健康检查配置不正确导致。

  • 当ELB后端服务器的健康检查状态处于异常状态时,ELB不会向该后端服务器转发请求。
  • 当健康检查关闭时,ELB默认后端服务器正常在线,会将请求转发至后端服务器。
  • ELB会使用100.125.0.0/16网段IP向后端服务器发送健康检查请求和正常的客户端请求。

如何查看健康检查异常状态

  • 共享型负载均衡

    在“负载均衡器”界面,单击后端服务器所在的负载均衡器名称,切换到“后端服务器组”页签,在基本信息页面,查看“健康检查结果”列是否显示“异常”。

  • 经典型负载均衡

    在“负载均衡器”界面,切换到“经典型”页签,单击后端服务器所在的负载均衡器名称,切换到“监听器”页签,查看“健康检查结果”列是否显示“异常”。

    当后端服务器的权重为0时,流量不会再转发到该后端服务器上,此时健康检查的状态无参考意义。

1、检查安全组入方向规则配置

  • 如果是TCP、HTTP或者HTTPS协议监听器,检查后端服务器所在的安全组入方向规则是否放通了100.125.0.0/16网段,并且是否已配置TCP协议和ELB用于健康检查的端口。
    健康检查的协议和端口在配置的健康检查配置项提示框中获取。
    • 若采用默认的健康检查方式:需要放通后端服务器端口。
    • 若配置了不同于后端服务器端口的健康检查端口:需要放通后端服务器端口与健康检查端口。
    图1 安全组入方向规则配置示例
  • 如果是UDP协议监听器,不仅需要保证安全组入方向规则放通ELB用于健康检查的协议,端口和100.125.0.0/16网段,还需要检查后端服务器的所在安全组入方向规则是否放通ICMP协议。
    图2 安全组入方向规则放通ICMP协议示例
  • 如果是经典型内网ELB,后端服务器所在的安全组入方向规则无需放通100.125.0.0/16网段,但需要保证入方向规则配置了TCP协议和ELB用于健康检查的端口,并且放通本VPC网段。
    图3 安全组入方向规则放通VPC网段示例
  • ELB与后端服务器进行通信的网段为100.125.0.0/16网段,ELB流量转到后端服务器后,源IP会被转换为100.125的IP,发起健康检查的节点的IP就属于这个网段,所以后端服务器配置的安全组必须放通这个网段。
  • 如果不确认是否是安全组问题,可以把安全组入方向规则的“协议”和“端口范围/ICMP类型”均放通Any测试下。

2、网络ACL规则

网络ACL是一个子网级别的可选安全层,通过与子网关联的出方向/入方向规则控制出入子网的数据流。网络ACL与安全组类似,都是安全防护策略,当您想增加额外的安全防护层时,就可以启用网络ACL。但是网络ACL默认规则会拒绝所有入站和出站流量,如果此网络ACL和负载均衡所属同一个子网,或者此网络ACL和负载均衡相关联的后端服务器所属同一个子网那么负载均衡的业务也会受到影响,收不到来自于公网或者私网的任何请求流量,或者会导致后端服务器异常。

您可以通过配置网络ACL入方向规则,放行100.125.0.0/16网段。

  1. 登录管理控制台。
  2. 在管理控制台左上角单击图标,选择区域和项目。
  3. 在系统首页,选择“网络 > 虚拟私有云”。
  4. 在左侧导航栏选择“访问控制 > 网络ACL”。
  5. 在“网络ACL”列表区域,选择网络ACL的名称列,单击您需要修改的“网络ACL名称”进入网络ACL详情页面。
  6. 在入方向规则或出方向规则页签,单击“添加规则”,添加入方向或出方向规则。
    • 策略:选择允许。
    • 协议:和监听器协议一致。
    • 源地址:此方向允许的源地址,填写100.125.0.0/16。
    • 源端口范围:选择业务所在端口范围。
    • 目的地址:此方向允许的目的地址。选择默认值为0.0.0.0/0,代表支持所有的IP地址。
    • 目的端口范围:选择业务所在端口范围。
    • 描述:网络ACL规则的描述信息,非必填项。
  7. 单击“确定”。

3、检查后端服务器是否正常

如果后端服务器的操作系统为Windows,请通过浏览器直接访问https://后端服务器的IP : 健康检查配置的端口。如果返回码为2xx或3xx,则表示以后端服务器正常。

  • 检查健康检查配置
    经典型负载均衡,在监听器页面,在健康检查异常的监听器所在行,单击“健康检查”列下的“查看”。弹出健康检查配置项提示框。查看以下参数:
    • 健康检查协议/端口。
    • 检查路径,如果是使用HTTP健康检查需要查看此参数,建议配置简单的静态HTML文件。

    共享型负载均衡,单击对应的负载均衡名称,进入负载均衡基本信息页面。切换到“后端服务器组”页签,单击对应的后端服务器组名称,在其基本信息页面,单击“健康检查”右侧的配置按钮。查看以下参数:

    • 协议。
    • 端口。
    • 检查路径,如果是使用HTTP健康检查需要查看此参数,建议配置简单的静态HTML文件。
  • 您可以在后端服务器上通过以下命令查看后端服务器的端口是否在监听状态。
    netstat -anlp | grep port
    回显中包含健康检查端口信息并且显示LISTEN,则表示后端服务器端口在监听状态。如果您没有配置健康检查端口信息,默认和后端服务器端口一致。
    图4 后端服务器正常被监听的回显示例
    图5 后端服务器没有被监听的回显示例
  • 如果是HTTP健康检查,请您在后端服务器上执行以下命令查看回显中返回的状态码。
    curl 后端服务器的私有IP:健康检查端口/健康检查路径 -iv

    HTTP健康检查是ELB向后端服务器发起GET请求,当获取到以下所列的响应状态码,认为服务器是正常状态。

    对于TCP的监听器,HTTP健康检查正常返回状态码是200。

    对于经典型公网ELB,HTTP健康检查正常返回状态码是2xx或者3xx。

    对于共享型ELB,HTTP健康检查正常返回状态码是200、202或者401。

    图6 后端服务器异常的回显示例
    图7 后端服务器正常的回显示例
  • 如果HTTP健康检查异常,除了检查健康检查路径外,建议您将配置的HTTP健康检查修改为TCP健康检查。操作如下:

    在监听器界面,修改目标监听器,在配置参数里选择已有TCP健康检查的后端服务器组,或者选择新创建TCP健康检查的后端服务器组。配置完成之后,几十秒后去查看健康检查状态是否恢复正常。

4、检查防火墙

如果后端服务器内部开启了防火墙或其他安全类防护软件,这些软件可能会屏蔽100.125.0.0/16网段的IP,请您在防火墙入方向规则中放通100.125.0.0/16网段。

5、检查路由

请检查是否手动修改了后端服务器内部的路由,查看主网卡(比如eth0)上是否配置默认路由,默认路由是否修改。如果默认路由更改,可能导致健康检查报文无法到达后端服务器。

您可以在后端服务器上通过以下命令查看您的默认路由是否指向网关(经过ELB转发属于跨网段访问,三层通信需要配置默认路由指向网关)。
ip route

route -n

正常的回显如图8所示(如果回显中没有图中第一条路由信息,或者路由指向的IP的不是后端服务器所在VPC子网的网关,请您修改成默认路由)。

图8 默认路由指向网关示例
图9 默认路由未指向网关示例

6、检查负载

查看后端服务器的负载。如果负载很高,可能会导致健康检查的连接或请求超时。

7、检查host.deny文件

建议您排查后端服务器的/etc/hosts.deny文件,文件中是否将ELB的健康检查100.125.0.0/16网段IP写入。

8、其他

  1. 如果是UDP监听器,参考使用UDP协议有什么注意事项?
  2. 如果以上配置检查均正常但问题依然存在,请联系客服。

    相关修改配置的操作,修改完配置后需要等待一定的时间,配置才会生效,因为健康检查包含检查周期和阈值(根据默认配置为几十秒生效,如果健康检查恢复正常,在ELB关联的后端服务器基本信息界面可以看到健康检查状态是否正常)。

分享:

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问