在负载均衡服务中开启健康检查功能后,当后端某个ECS健康检查出现问题时,会将请求转发到其他健康检查正常的ECS上。当该ECS恢复正常运行时,负载均衡会将其自动恢复到对外或对内的服务中。

针对七层负载均衡服务,当监听获取到健康检查异常的信息时,可以从以下方面对ECS实例进行健康排查:

  • 确保您能够直接通过ECS访问到您的应用服务。
  • 确保后端服务器开启了相应的端口,该端口必须与您在负载均衡监听配置中配置的后端端口保持一致。
  • 检查后端ECS内部是否开启了防火墙或其他的安全类防护软件,这类软件很容易将负载均衡服务的本地 IP地址屏蔽掉,导致负载均衡服务无法跟后端服务器进行通讯。
  • 检查负载均衡健康检查参数设置是否正确,建议参照缺省提供的健康检查参数进行设置。
  • 建议使用静态页面来进行健康检查,如果您用于健康检查的页面在后端ECS应用服务器上并不是缺省首页,需要您在健康检查配置中指定该页面的URL。健康检查指定的检测文件,建议是html形式的简单页面,只用于检查返回结果,不建议用php等动态脚本语言。
  • 检查后端ECS资源是否有较高负载,降低了ECS对外提供服务的响应速度。

另外,由于七层负载均衡服务跟后端ECS之间通过内网通讯,因此需要ECS监听内网或者全网端口。您可使用以下方法进行检查:

  1. 检查监听功能是否正常。

    假设负载均衡前端端口是80,ECS后端端口也是80,ECS内网IP是10.11.192.1。在服务器上运行以下命令,如果能看到10.11.192.1:80的监听信息,或者0.0.0.0:80的监听信息,说明这部分端口的监听正常。

    • Windows 服务器上运行:netstat -ano | findstr :80
    • Linux 服务器上运行:netstat -anp | grep :80
  2. 检查服务器内网防火墙是否放行80端口,可以暂时关闭防火墙进行测试。输入以下命令关闭防火墙。
    • Windows:firewall.cpl
    • Linux:/etc/init.d/iptables stop
  3. 检查后端端口是否正常。
    • 对于四层负载均衡,使用telnet测试有响应即为正常。本例中使用telnet 10.11.192.1 80来测试。
    • 对于七层负载均衡,HTTP状态码需要是200等代表正常的状态码,检验方法如下:
      • Windows:直接在ECS上访问ECS的内网IP测试是否正常,本例中为:http://10.11.192.1
      • Linux:使用curl -I命令查看状态是否为HTTP/1.1 200 OK,本例是:curl -I 10.11.192.1