问题描述 fullnat模式下,RS没有重新编译toa模块。下载大文件,下载速率逐渐减小。 问题解决 关闭DS服务器的gro,就可以解决。 关闭RS的ip包DF应该也可以解决。 ethtool -K eth0 gro off 问题分析 环境 CS 10.1.0.1 DS 10.1.0.2 10.0.0.2 RS 10.0.0.3 # DS ipvsadm -A -t 10.1.0.2:80 -s rr ipvsadm -P -t 10.1.0.2:80 -z 10.0.0.2 ipvsadm -a -t 10.1.0.2:80 -r 10.0.0.3:8080 -b ethtool -K eth0 gro on # RS yum install nginx dd if=/dev/zero of=./tmpfile bs=1M count=30 测试 通过下载一个大文件,发现速度越来越慢。若DS是编译了toa模块就没问题。 # RS wget -S 'http://10.1.0.2:80/tmpfile' -O /dev/null 分析+验证 既然RS编译了toa模块可以,如果是DS不支持tcp option是不是可以解决呢。修改/proc/sys/net/ipv4/vs/fullnat_toa_entry内容为0,测试后没有效果。 toa是解决真正的客户端ip的,DS通过把客户端ip放到ip option字段,RS toa模块,三次握手后通过把tcp option的字段提取出来。 参考文章: LVS FULLNAT模式下客户端真实地址的传递 lvs 负载均衡fullnat 模式clientip 怎样传递给 realserver 简单的猜测测试不行,那就抓一下包吧,抓包发现icmp包。根据icmp包的报错,知道DS分包丢弃。 15:39:07.168229 IP (tos 0xc0, ttl 64, id 28648, offset 0, flags [none], proto ICMP (1), length 576) 10.0.0.2 > 10.0.0.3: ICMP 10.0.0.2 unreachable - need to frag (mtu 1500), length 556 对比RS编译了toa模块的抓包结果。发现编译了toa模块的后端发过来的包,没有设置ip flag DF选项,而没有编译toa模块的后端发过来的包则设置了DF选项。 相关文章在R730上搭建lvs-fullnatkeepalived Real_server 过多导致进程崩溃RH 6.2 关闭 gro如何部署一个真正好用的前端LVS FULLNAT模式下客户端真实地址的传递lvs 负载均衡fullnat 模式clientip 怎样传递给 realserver 转载请注明:爱开源 » lvs fullnat 大文件问题
问题描述
fullnat模式下,RS没有重新编译toa模块。下载大文件,下载速率逐渐减小。
问题解决
关闭DS服务器的gro,就可以解决。 关闭RS的ip包DF应该也可以解决。
问题分析
通过下载一个大文件,发现速度越来越慢。若DS是编译了toa模块就没问题。
toa是解决真正的客户端ip的,DS通过把客户端ip放到ip option字段,RS toa模块,三次握手后通过把tcp option的字段提取出来。
参考文章: