一、问题

1. 负载不均的可能原因

  1. LVS可能采用了会话保持的缘故(-p 300,persistent 300),优化方式是尽量用cookies替代session
  2. 后端RS节点采用了会话保持参数,如apache的keealive参数。
  3. LVS调度算法设置错误。
  4. 访问量较少的情况下不是完全的1:1。
  5. 用户发送的请求时间长短,和请求资源多少大小有关。

2.会话保持方案

http://blog.51cto.com/oldboy/1331316
http://blog.51cto.com/oldboy/1323468

二、VIP绑定和arp抑制思路

1)对RS绑定的vip做实时监控,出问题报警或自动处理后报警
2)把RS绑定的vip做成配置文件,例如:vi /etc/sysconfig/network-scripts/lo:0
3)若是单个vip,那么可以用stop传参设置0
4)如果RS端有多个vip绑定,即使是停止VIP绑定也不一定置0,或者用if语句判断vip小于1再置0

1
2
3
4
5
6
if [ ${#VIP[@]} -lt 1 ];then
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
fi

5)RS节点上自身提供服务的检查
6)辅助排查工具如tcpdump,ping等

1
tcpdump -i eth0 tcp port 80 -x -w -X -s 1500

7)负载均衡和反向代理集群的三角形排查理论

三、LVS扩展思路

1)可以在lvs前端加交换机,通过动态路由协议ospf实现lvs的轮询。
https://my.oschina.net/lxcong/blog/143904
2)搭建dns,对A记录做轮询,甚至可以对多机房进行轮询
3)使用智能dns,根据用户的线路和位置分配最近的且和服务器线路相同的机房地址