LVS负载平衡

LVS是Linux Virtual Server的简写,即Linux虚拟服务器,是一个虚拟的服务器集群系统。使用LVS负载均衡可以实现服务器的高性能和高可用性,防止业务以外中断而造成损失。
LVS分为NAT,IP 调谐器,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必定返回MACweb01或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 网络掩码 255.255.255.0
ifconfig eth0:0 200.168.10.10 网络掩码 255.255.255.255
路由添加–主机 200.168.10.10 dev eth0 #添加一条路由到达IP 200.168.10.10
web01上配置
设置IP地址和添加路由
ifconfig eth0 200.168.10.2 网络掩码 255.255.255.0
ifconfig lo:0 200.168.10.10 网络掩码 255.255.255.255 向上
路由添加–主机 200.168.10.10 dev lo:0
设置arp忽略和arp宣告
回声 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore
回声 2 >/proc/sys/net/ipv4/conf/lo/arp_announce
回声 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
回声 2 >/proc/sys/net/ipv4/conf/all/arp_announce

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

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

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

刷新以后

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

发表评论