标签(空格分隔): linuxlinux
LVS一共四种工做模式。其中,DR模式是比较经常使用的模式之一,配置较麻烦,这里重点记录一下它的核心要点及优化。先看工做流程,上图:nginx
主机名 | IP地址 | 角色 |
---|---|---|
lb01 | 10.0.0.5/24 | 调度器 |
web01 | 10.0.0.7/24 | RS服务器 |
web02 | 10.0.0.8/24 | RS服务器 |
# lb01操做 yum install ipvsadm -y rpm -qa ipvsadm lsmod |grep ip_vs ln -s /usr/src/kernels/`uname -r` /usr/src/linux #注意Centos 6.X安装lvs,使用1.26版本。而且须要先安装yum install libnl* popt* -y
执行ipvsadm(modprobe ip_vs)把ip_vs模块加载到内核 [root@lb01 ~]# ipvsadm IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn #IP Virtual Server version 1.2.1 ---- ip_vs 内核模块版本
lb01添加虚拟IPweb
ifconfig eth0:0 10.0.0.3/24 up #==>简便写法
[root@lb01 ~]# ipvsadm-save #保存当前的lvs的规则,能够用ipvsadm-restore恢复 [root@lb01 ~]# ipvsadm -C #clear the whole table 清空lvs的全部规则 [root@lb01 ~]# ipvsadm --set 30 5 60 #设置tpc tcpfin udp超时时间 [root@lb01 ~]# ipvsadm -A -t 10.0.0.3:80 -s wrr -p 20 -A # add virual service with options [root@lb01 ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.0.0.3:80 wrr persistent 20
-t tcp服务 -s 指定轮询算法 rr wrr wlc -p 指定会话保持时间
添加服务员RS服务器算法
[root@lb01 ~]# ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.7:80 -g -w 1 [root@lb01 ~]# ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.8:80 -g -w 1 [root@lb01 ~]# ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.0.0.3:80 wrr persistent 20 -> 10.0.0.7:80 Route 1 0 0 -> 10.0.0.8:80 Route 1 0 0
[root@lb01 ~]# ipvsadm-save -A -t www.etiantian.org:http -s wrr -p 20 -a -t www.etiantian.org:http -r 10.0.0.7:http -g -w 1 -a -t www.etiantian.org:http -r 10.0.0.8:http -g -w 1
参数说明后端
-a #添加rs服务器 -r #real server RS ip -g #dr 模式 -w #l weight 权重 -t #10.0.0.3:80 使用tcp协议,负载均衡的ip地址是10.0.0.3:80
1.在每台real server端执行
绑定vip浏览器
ip addr add 10.0.0.3/32 dev lo label lo:0
2.手工在RS端抑制ARP响应服务器
cat >>/etc/sysctl.conf<<EOF net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 EOF sysctl -p
建议日1000千万到2000千万PV或并发请求1万如下均可以考虑用haproxy/nginx或(LVS-NAT模式),DR模式效率很高,但配置麻烦。并发
因后端服务器上一样配置了虚拟IP,若是在客户端进行ARP请求时,后端服务器以自身的MAC地址进行了回复,则起不到负载均衡的效果,此时客户端直接连到了某台后端服务器上。负载均衡
后端服务器的虚拟IP必须绑定到lo:0上,同时指定子网掩码是255.255.255.255,不然ARP禁用会出现异常。运维
持久链接(Persistence)的问题。持久链接使同一个客户端在超时时间内(ipvsadm-p参数指定,keepalived中的persistence_timeout指令)会持续地链接到同一台后端服务器,这个是4层上的持久链接。来自客户端的每一个新的链接会重置该超时时间。
Keepalived对后端服务器的健康检查,推荐使用应用层检查方式,另外能够配置Keepalived使用管理员自定义的脚本进行健康检查(MISC_CHECK指令)
负载均衡器之间使用vrrp协议进行高可用设置时,禁用iptables或者打开对vrrp协议的支持。
LVS集群中的负载均衡器,推荐使用16GB及以上内存,同时采用多队列网卡提升网卡吞吐量减小处理延时。
LVS集群中的后端服务器,根据IO密集型和CPU密集型2类,能够分别使用RAID十、SSD及高频多核CPU来优化。
参考书籍【Linux运维最佳实践】