前言:基于IPVS实现web服务的负载均衡的DR模型的实现。

    首先让两台服务器当RealServer:让两台服务器都需要启动web服务,并提供不同的页面,方便以后测试的时候知道是哪台服务器在提供web服务。其中,RIP在eth0上,VIP在lo:0上;

    Director的eth0上配置DIP,在eth0:0上配置VIP

RIP 1:192.168.1.7 

RIP 2:192.168.1.8

VIP:192.168.1.2

DIP:192.168.1.50


lvs之DR模型实现_DR实现


RealServer:   

    首先在RealServer上定义两个参数:一个是ARP的响应级别,arp_ignore=1;另外一个是ARP的通告级别,arp_announce=2;用来实现来自客户请求VIP时RealServer上的VIP不予响应。(让调度器来响应,并分配给合适的RealServer来响应)

#echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

    RealSever上的VIP配置在回环口上,其广播地址也为192.168.1.2,网关为255.255.255.255。(其响应报文要从eth0出去)

#ifconfig lo:0 192.168.1.2 broadcast 192.168.1.2 netmask 255.255.255.255 up

    加一个路由信息:

#route add -host 192.168.1.2 

Dirctor:

#ifconfig eth0:0 192.168.1.2 broadcast 192.168.1.2 netmask 255.255.255.255

#route add -host 192.168.1.2 dev eth0:0

#ipvsadm -A -t 192.168.1.2:80 -s wrr (添加一个集群服务,并指定为wrr的调度算法)

#ipvsadm -a -t 192.168.1.2:80 -r 192.168.1.7 -g -w 2 (-g指定DR模型,-w指定权重)

#ipvsadm -a -t 192.168.1.2:80 -r 192.168.1.8 -g -w 1


下面我们来检测下负载均衡能工作否:

现在调度器上执行# watch -n1 'ipvsadm -L -n --stats'来时刻关注那个响应的。

lvs之DR模型实现_web服务_02

好了,试的访问下192.168.1.2吧:

lvs之DR模型实现_DR实现_03这是192.168.1.8这台主机提供的服务;

这里我遇到一个小问题:需要等个几分钟再刷新网页才能出现来自另一台服务器的页面……(可能是我在虚拟机中做的实验,每个给的内存有点少了280左右的内存lvs之DR模型实现_DR实现_04)也有可能我哪里出现问题了,还望各位大神给出宝贵的意见~

lvs之DR模型实现_web服务_05

    在每隔几分钟刷新n次页面后,很明显的可以在调度器上看到监控这两台服务器每个所响应的个数,大概是2比1的比例;因为我的规则里面是加权轮巡的,嘻嘻~



下面介绍下ipvsadm的几个参数:

    ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p timeout] [-O] [-M netmask]

A:添加   E:编辑  

-t:tcp   -u:udp -f:firewallmark(防火墙标记,在lvs实现将多个服务(端口)捆绑,一起实现负载均衡。)

service-address:VIP:Port

-s:指定调度方法 (rr,wrr,sh,lc,wlc等)

删除一个集群服务:ipvsadm -D -t|u|f service-address


    ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]

-a:添加  -e;编辑

-r IP[:port] 指定realserver地址

指定lvs类型:-g:dr模型,(默认);-i tun模型 ;-m:nat模型

-w weight 指定权重;

删除一个:例:ipvsadm -d -t 192.168.1.2:80 -r 192.168.1.7


等配置好后记得保存:#service ipvsadm save(保存在/etc/sysyconfig/ipvsadm)

也可以使用一个特定的文件,方便以后的使用:

ipvsadm -S > /path/to/ipvsadm.rules 输入重定向

ipvsadm -R < /path/to/ipvsadm.rules 输出重定向

查看:#ipvsadm -L|l -n --rate --stats