lvs是在Linux的软件层面实现负载均衡的很好的方法。其中包括三种类型,分别为NAT模型,DR模型和TUN模型。下面简单的介绍下DR模型的应用。
在lvs(Linuxvirtual server)包括几个重要的组成部分,分别为director(调度器)将客户端的请求分发给后面的real server进行相应。real server真正提供服务的服务器。director通过相应的算法对real server进行调度。
在director调度的过程中,调度的算法有如果集中:
rr:轮训,也就是轮换的分给服务器。
wrr:加权轮询,按照每台服务器的权重,分给服务器相应的任务。
sh:原地址hash,来自同一个客户的请求发送到相同的服务器进行相应。
dh:目标地址hash,对于相同的请求发送到相同的服务器。因为相应的服务器会有缓存,这样会加快服务器的相应速度。
lc:最少连接。那个服务器的连接数最少,最新的请求就分配给相应的服务器。计算方法:活动连接数*256。
wlc:加权最少连接数。在权重的基础上,最新的请求分发给连接最少的服务器。计算方法:活动连接数*256/权重。
sed:最短期望延迟。计算方法:(active+1)*256/权重。
nq:永不排队。对于请求,先分发给每个服务器一个请求,然后在根据权重分配。
LBLC和LBLCR两种方法。现在如果不指定的话那么director的默认的方法就是wlc方法。
例子:为了显示效果。利用wrr的方法实现调度器对服务器的调度。
在DR模型过程中,有一点需要注意的是。client的请求是请求到我们的VIP上面的,VIP是一个公网的地址(在本实验中地址是自己随意规划的)。当客户端的请求到达director之后,director根据自己的调度算法进行调度响应。这时候需要注意的是,此时回复的客户端的报文的原地址一定是VIP的地址,而不能是RIP的地址。因为外部的请求的报文的目的地址是VIP。再有就是当报文到达director之前,会进行arp的广播,来查找director,因为此时real server1 和real server 2都配置了VIP,所以这时候不能让他们对此Arp广播报文进行响应。
所以,我们的配置如下。
1、 director的配置
①IP地址的配置:
在配置之前请自行关闭selinux和iptables
DIP:192.168.5.1255.255.255.0(网关以及掩码部分可以省略)
VIP:ifconfigeth0:0 192.168.5.254 broadcast 192.168.5.254 netmask 255.255.255.255 up
route add –host192.168.5.254 dev eth0:0
2、 real server1 的配置
①IP地址的配置:
RIP:192.168.5.7
echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2>/proc/sys/net/ipv4/conf/all/arp_announce
echo 1>/proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1>/proc/sys/net/ipv4/conf/all/arp_ignore
在配置VIP之前,先把响应的网卡的ARP的响应关掉。以防止VIP的响应干扰。
VIP:ifconfiglo:0192.168.5.254 broadcast 192.168.5.254 netmask 255.255.255.255 up
route add –host192.168.5.254 dev lo:0
②简单的web服务的配置
yum –y installhttpde
echohello1.hello.com >/var/www/html/index.html
service httpdstart
curl http://localhost
如果测试没有问题的话realserver1的配置完成。real server 2的配置和real server 1 的配置是相同的。
③director上面ipvsadm的安装
可以通过yum安装。也可以通过RPM包安装
rpm –ivh ipvsadm*****.rpm
安装好之后编写规则
ipvsadm –A –t192.168.5.254 –s wrr
ipvsadm –a –t192.168.5.254:80 –r 192.168.5.7 –g –w 2
ipvsadm –a –t192.168.5.254:80 –r 192.168.5.8 –g –w 1
把调度方式设置为了加权的轮训方式。并且把192.168.5.7和192.168.5.8两台服务器加到realserver中了。
service ipvsadmsave 对编写的规则就行保存。
下面就可以进行web的访问了。注意访问的时候输入的IP地址是VIP。基础的ipvsadm等参数的介绍将在ipvsadm的NAT模型中进行介绍。