modprobe ipip
#加载ipip模块,生成tunl0网卡ip tunnel show
#查看生成的网卡ip addr add 10.206.200.110/32 brd 10.206.200.110 dev tunl0
#绑定虚拟IPvim /etc/sysctl.conf
#禁用rp_filter
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.tunl0.rp_filter = 0
sysctl -p
#sysctl.conf生效ip link set tunl0 up
#启用网卡ip route change 192.168.122.0/24 dev ens36 advmss 1440
#因ipip tunnel占用20个字节头,mss扣减20字节modprobe ipip
#加载ipip模块,生成tunl0网卡ip tunnel show
#查看网卡vim /etc/sysctl.conf
#禁用rp_filter属性
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0
sysctl -p
#sysctl.conf生效ip link set tunl0 up
#启用tunl0网卡vim /etc/keepalived/keepalived.conf
lb_kind TUN
#代理类型为隧道模式realServer
默认的MSS=1500-20(ip头)-20(tcp头) = 1460
MSS-12(echo, echo replay选项,tcpdump的ecr和val选项) = 1448 真是的tcp负载长度
但是ipip 隧道转发IP报文给realServer的时候会添加20个字节的IP头, 防止PMTUD或者TCP分组的发生,将realServer的mss=1440。
client
ip route flush cache
#清空路由缓存
MSS clamping:
如果tcp连接的MSS比路由器的MTU小,MSS改成最小的MTU
PMTUD (Path MTU Discovery)
如果路由器发现MTU比报文小,直接icmp给发送者,让其拆小后再发送。
keepalived默认会插入
`-A INPUT -m set --match-set keepalived dst -j DROP` 通过向`keepalived.conf`文件添加vrrp_iptables来禁止产生iptables规则。
`LVS` 负载均衡算法是基于IP进行的,所以在测试的时候没法将一个测试服务器产生的请求路由到两台服务器。
`LVS` 同样的硬件(`4vCPU`, `8GB`内存, `5Gbps`,`80万PPS`), nginx反向代理的qps为3W左右(默认配置,欢迎大家反馈调优方案),而LVS=TUN模式可以达到13W左右,根据`sar -n DEV 1 1`输出,此时已经达到了80万PPS上限。而CPU利用率大概30%。
Lvs+Keepalived 使用DR
Centos7实践LVS+Keepalived
https://baihuqian.github.io/2019-03-11-mtu-vs-mss/
Posted in: Linux
Comments are closed.