在网上看到很多关于 LVS 的性能优化, 但都觉得不够全面, 今天笔者就总结一下 LVS 比较全面性能优化。 希望对大家有小小帮助:
LVS: (linux virtual server)它是运行在内存中,使用服务器的资源主要是CPU,内存 I/O, 网络 I/O,
LVS的实现方式:
VS/NAT
VS/TUN
VS/DR
一、LVS 性能调优的方法最佳实践
1、最小化安装编译系统内核
2、优化持久服务超时时间:
1)显示超时时间
#ipvsadm -Ln --timeout
#Timeout (tcp tcpfin udp): 900 120 300
2)配置为与自身应用贴近的超时时间
#ipvsadm --set tcp tcpfin udp
3、修改内核参数vi /etc/sysctl.conf
net.ipv4.tcp_tw_recyle=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_max_syn_backlog=8192
net.ipv4.tcp_keepalive_time=1800
net.ipv4.tcp_fin_timeout=30
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
net.core.netdev_max_backlog=3000
二、遇到的问题
1、机房无法实时刷新MAC,LVS+Heartbeat方案无法正常随机切换IP?
假如两台VS之间使用的互备关系,那么当一台VS接管LVS服务时,可能会网络不通,这时因为路由器的MAC缓存表里无法及时刷新MAC.关于vip这个
地址的MAC地址还是替换的VS的MAC,有两种解决方法,一种是修改新VS的MAC地址,另一种是使用send_arp /arpiing命令.
以arping命令为例.
/sbin/arping -I eth0 -c 3 -s ${vip} ${gateway_ip} > /dev/null 2>&1
这个命令不一定非要在VS上执行,只要在同一VLAN即可:/sbin/arping -f -q -c 5 -w 5 -I eth0 -s $WEB_VIP -U $GW
2、某台机器down掉以后,IPVS列表中权值已经置0了,为什么还轮询到这台机器上?
##配置 ldirectord.conf
设置为:quiescent=no或 echo 1 >/proc/sys/net/ipv4/vs/expire_nodest_conn
3、为什么做压力测试的时候,LVS不能负载均衡多部分连接只到某一台机器上?
这和LVS脚本里指定-p参数有关,如果指定了一个client在一定的时间内,将会被调度到同一台RS上。所以你在从来源来做压力测