1. arp问题
在DR或者tunnel模式下,RS需要绑定VIP以便直接将报文发回客户端。因此需要在RS上屏蔽网络内对VIP进行arp查询的响应 。
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
2. mtu问题
在tunnel模式下 ,LD将客户端报文进行封装(加IPIP头)后发送给RS , 因此RS需要调整MTU大小,预留IPIP头空间,以便客户端正确分包。
ifconfig "$OUT_DEV" mtu 1480
3.报文转发问题
在DR或者tunnel模式下,报文直接转发到RS。
echo 1 > /proc/sys/net/ipv4/ip_forward
4.LD支持连接数问题
内核ip_vs模块的参数conn_tab_bits指定了conn表的大小,最大为20 ,支持1M个连接。
5.LD做HA时VIP接管问题
新LD接管故障LD的VIP时,需要及时做arp广播,keepalived会自动完成,也通过arping命令查看。
6.LD的cpu负载问题
LD的网卡软中断(ksoftirqd)由一个cpu处理,无法利用多核,调整软中断的smp_affinity可以改变绑定的cpu,但无法做多核负载均衡。
内核2.6.32之后已经支持软中断的负载均衡。
使用支持RSS的网卡,有多个队列,或者使用多个网卡做bonding 。
echo "alias bond0 bonding" >> /etc/modprobe.conf
修改ifcfg-bond0 , ifcfg-ethX配置文件。
7. 系统内核参数调整参考
net.ipv4.tcp_tw_recyle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_syn_backlog = 40960
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_tw_buckets = 8192
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_orphans = 40960
#net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_rmem = 4194304 8388608 16777216
net.ipv4.tcp_wmem = 4194304 8388608 16777216
net.ipv4.udp_mem = 4194304 8388608 16777216
net.ipv4.udp_rmem_min = 1048576
net.ipv4.udp_wmem_min = 1048576
net.core.somaxconn = 40960
net.core.netdev_max_backlog = 40960
net.core.rmem_default = 1048576
net.core.wmem_default = 1048576
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
参考:http://www.austintek.com/LVS/