LVS Load balance

LVS是Linux Virtual Server的简写,即Linux虚拟服务器,是一个虚拟的服务器集群系统。使用LVS负载均衡可以实现服务器的高性能和高可用性,防止业务以外中断而造成损失。
LVS分为NAT,IP TUN,DR三种模式 ,我们会重点介绍最先进的DR模式。
NAT模式
如下图所示:

图中,client是发起请求方;lvs server是LVS调度器,负责分配请求,左侧网卡eth0配置VIP,即客户端请求的目的IP, 右侧网卡eth1配置的是内网IP;web01和web02是两台真实的服务器,负责将处理结果返回该客户端。

过程如下:client发起请求访问VIP,这时lvs server的eth0网卡接受请求,通过某种均衡算法,通过eth1网卡和交换机,将请求丢给web01或者web02 , web01或web02将请求通过交换机和eth1网卡发给lvs server, lvs server经NAT地址转换方式,通过eth0网卡发出,最后结果返回给client . client再次请求,重复以上步骤。

可以看出NAT方式, 不管接受请求,还是返回结果, 数据必经lvs server.
若客户请求太多,那么lvs server的流量将会很大。我们知道,服务器上传量远大于下载量,lvs server的流量主要是返回的结果, 所以lvs server将会成为瓶颈。

DR模式
如果让web01和web02将结果直接返回给client,而不经过lvs server ,那么系统性能会大幅提高。 DR正是运用这种思想。可将吞吐量提高10倍!

如下图所示:

 

 

配置情况:
client配置200.168.10.4 ; lvs server eth0上配置200.168.10.1 ,eth0:0上配置200.168.10.10; web01和web02的eth0网卡上分别配置200.168.10.2和200.168.10.3
web01和web02的lo(回环口)上都配置200.168.10.10

过程:
假设网站域名是:www.abc.com ,经过DNS解析后IP地址是200.168.10.10 ,也就是本架构中配置的VIP , 客户端访问200.168.10.10 ,先经过lvs server调度(由于web01和web02设置了arp忽略,因此不会回应200.168.10.10的MAC), 通过一定算法将负载分配给web01和web02 ,实现负载均衡。
上图中:两台web服务器的eth0网卡配置真实的IP ,在回环lo网卡上配置VIP.
由于回环口不具有MAC地址,因此当客户端访问200.168.10.10,发送arp请求时,只有lvs server返回自己的MAC . 接着lvs server通过均衡算法,将请求分配给web01或web02. 当有arp询问web01或web02的MAC地址时,由于在eth0没有做arp忽略,因此web01或web02必定返回MAC。web01或web02通过设置的网关将处理好的结果经VIP返回给客户端。 下次客户端访问VIP时,重复以上步骤。

lvs server安装ipvsadm
执行: yum install ipvsadm
接着执行ipvsadm
ipvsadm –C #清除以前的ipvsadm配置
ipvsadm –At 200.168.10.10:80 –s rr #接受访问VIP80端口连接,采用轮询算法
ipvsadm –at 200.168.10.10:80 –r 200.168.10.2:80 #将请求转发给web01
ipvsadm –at 200.168.10.10:80 –r 200.168.10.3:80 #将请求转发给web02
ipvsadm –l –n #以数字方式显示虚拟服务器列表

ifconfig eth0 200.168.10.1 netmask 255.255.255.0
ifconfig eth0:0 200.168.10.10 netmask 255.255.255.255
route add –host 200.168.10.10 dev eth0 #添加一条路由,到达IP 200.168.10.10
web01上配置
设置IP地址和添加路由
ifconfig eth0 200.168.10.2 netmask 255.255.255.0
ifconfig lo:0 200.168.10.10 netmask 255.255.255.255 up
route add –host 200.168.10.10 dev lo:0
设置arp忽略和arp宣告
echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 >/proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce

web02上配置
设置IP地址和添加路由
ifconfig eth0 200.168.10.3 netmask 255.255.255.0
ifconfig lo:0 200.168.10.10 netmask 255.255.255.255
route add default –host 200.168.10.10 dev lo:0
设置arp忽略和arp宣告
echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 >/proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce

接着web01和web02上安装web服务,开启80端口。
设置web01的主页为200.168.10.2;we02的主页为200.168.10.3

最后在客户端浏览器上输入200.168.10.10
第一次访问

刷新以后

不断刷新,这两个页面循环出现,负载均衡实现。
IP TUN模式:将DR模式中的eth0:0 ,lo回环口都换成tun网卡,形成ip隧道模式,然后再在所有tun上配置VIP即可。 不过不是所有的服务器都支持tun网卡,因此这种方法很有局限性。

Leave a Reply