问题描述
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
- 分析+验证
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模块可以,如果是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分包丢弃。
-
对比RS编译了toa模块的抓包结果。发现编译了toa模块的后端发过来的包,没有设置ip flag DF选项,而没有编译toa模块的后端发过来的包则设置了DF选项。
相关文章
- 在R730上搭建lvs-fullnat
- RH 6.2 关闭 gro
- lvs 负载均衡fullnat 模式clientip 怎样传递给 realserver
- lvs FullNAT顿卡问题原因追查
- 如何部署一个真正好用的前端
- Linux双网卡配置两个网关导致网络无法使用
转载请注明:爱开源 » lvs fullnat 大文件问题
转载请注明:爱开源 » lvs fullnat 大文件问题