1. 四层负载均衡后端Linux ECS内核配置错误。

四层负载均衡后端添加的Linux系统的ECS实例,必须关闭其Linux内核的rp_filter特性。否则可能会导致无法从客户端使用telnet访问负载均衡的服务地址,但健康检查正常。

Linux的rp_filter特性用于实现反向过滤(即URPF)。它验证反向数据包的流向,以避免IP伪造攻击。但是该特性可能会和负载均衡底层LVS的策略路由产生冲突,导致访问出现异常。

解决方法:确保后端ECS实例的系统配置文件中以下三个参数的值为0。编辑/etc/sysctl.conf后,执行sysctl -p使配置生效。

net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0    #此规则服务器上没有,所以被拒绝访问,PS:eth0为内网网卡

如果部署在同一内网网段下的ECS实例之间有通信需求,需要检查如下参数的配置是否正确。更改配置后,执行sysctl -p更新配置。

net.ipv4.conf.default.arp_announce =2
net.ipv4.conf.all.arp_announce =2

2. 四层负载均衡后端Windows ECS参数配置错误。

对于四层负载均衡服务,目前不支持负载均衡后端ECS实例直接为客户端提供服务的同时,又作为所在负载均衡的后端服务器。

因为这会概率性的出现相关访问请求被转发回同一台ECS的情形,造成数据访问形成环路,导致对应ECS访问负载均衡服务不通。

解决方法:

  1. 安装Windows回环网卡:右键单击计算机 > 属性。在控制面板主页,单击设备管理器 > 添加硬件 > 安装我手动从列表选择的硬件 > 显示所有设备,选择下图所示的设备进行安装。
    安装回环网上
  2. 启用Weak Host Model,执行以下命令查看所有网络接口的Idx。
    netsh interface ipv4 show interface
  3. 将所有网络接口分别设置weakhostsend=enabled, weakhostsend=enabled。比如设置Idx为12的网卡:
netsh interface ipv4 set interface 12 weakhostsend=enabled
netsh interface ipv4 set interface 12 weakhostreceive=enabled
Last modification:May 9th, 2020 at 11:24 pm
If you think my article is useful to you, please feel free to appreciate