问题描述

使用负载均衡后,客户端无法访问负载均衡。

解决方案

本文中出现的端口和IP都是演示环境参数值,当排查客户端无法访问负载均衡问题时,请根据实际情况配置端口和内网IP信息。

问题原因处理方法
四层监听的后端服务器无法访问负载均衡的原因:
  • CLB四层监听的后端服务器不支持同时作为客户端和服务端。
  • NLB四层监听的服务器组开启了客户端地址保持功能,导致服务器组内的后端服务器不支持同时作为客户端和服务端。
    说明 NLB在服务器组配置中关闭“开启客户端地址保持”功能后,服务器组内的后端服务器支持同时作为客户端和服务端。
  • CLB:无。
  • NLB:服务器组关闭“开启客户端地址保持”功能。
健康检查异常。健康检查异常时请参见如何排查四层监听(TCP/UDP)健康检查异常如何排查七层监听(HTTP/HTTPS)健康检查异常
不支持通过负载均衡SLB搭建FTP、TFTP、H323和SIP等。针对FTP服务,可以通过参考以下步骤解决问题:
  • 如果是Linux系统,您可以尝试配置22端口的转发,使用SFTP连接并传输数据。
  • 支持通过EIP可见模式将EIP绑定到FTP服务器上,对外提供FTP服务,配置详情请参见使用EIP部署FTP服务器
服务器内网防火墙设置没有放行80端口。可以参考以下步骤,暂时关闭防火墙:
  • Windows服务器执行以下命令。

    firewall.cpl

  • Linux服务器上执行以下命令。

    /etc/init.d/iptables stop

后端端口异常。参考以下步骤,确认问题。然后根据实际情况解决此问题:
  • 对于四层负载均衡来说,使用telnet命令测试有响应即为正常,命令如下所示。

    telnet 10.XX.XX.1 80

  • 对于七层负载均衡,HTTP状态码需要是200等代表正常的状态码,检验方法如下:
    • Windows:直接在ECS实例上访问ECS的内网IP,测试是否正常,命令如下所示。

      http://10.XX.XX.1

    • Linux:参考以下命令,查看返回值是否为HTTP/1.1 200 OK

      curl -I 10.XX.XX.1

rp_filter特性和负载均衡底层LVS的策略路由产生冲突,导致访问出现异常。
  1. 登录四层负载均衡后端添加的Linux系统的ECS实例。
  2. 编辑/etc/sysctl.conf文件,将系统配置文件中的以下三个参数值设置为0
     net.ipv4.conf.default.rp_filter = 0
     net.ipv4.conf.all.rp_filter = 0
     net.ipv4.conf.eth0.rp_filter = 0
  3. 执行sudo sysctl -p命令,使配置生效。
监听功能异常
在服务器上执行以下命令,如果能看到10.XX.XX.1:80的监听信息,或者0.0.0.0:80的监听信息,说明端口的监听正常。然后根据实际情况解决此问题:
  • Windows服务器上执行以下命令。

    netstat -ano | findstr :80

  • Linux服务器上执行以下命令。

    netstat -anp | grep :80

创建负载均衡实例后,没有添加监听。请配置监听,详情请参见监听概述
负载均衡通过域名访问不通,可能为用户域名解析错误导致。无。
客户端本地网络或运营商中间链路异常。从不同地域及不同网络环境,对负载均衡相应服务端口做访问测试。

如果只有本地网络访问时出现异常,则判定是网络异常导致的问题,此时可以继续通过持续进行ping测试或MTR路由跟踪等手段做进一步排查分析。

客户端IP被云盾拦截。
  1. 获取客户端网络环境对应的公网IP。
  2. 将获取的公网IP配置为白名单,该操作将会对来自相应IP到负载均衡的所有访问全部放行。
    说明 该操作可能会带来安全风险,确保白名单中的IP不会对负载均衡进行恶意攻击。
用户使用完高防IP之后切换回普通模式,但是未关闭访问控制白名单功能。参见设置黑白名单(针对高防实例IP),取消白名单。