1,实验环境:
(1),主负载均衡服务器ubserver1: ip:192.168.3.10 虚拟IP:192.168.3.100
(2),从负载均衡服务器ubserver5: ip:192.168.3.50
(3),www服务器ubserver2: ip: 192.168.3.20
(4),www服务器ubserver3: ip: 192.168.3.30
2,目标:当主负载均衡服务器ubserver1故障时,从负载均衡服务器ubserver5能接管其调度任务;当主负载均衡服务器ubserver1故障修复后,从负载均衡服务器ubserver5任务退出。
3,配置主负载均衡服务器ubserver1:
安装heartbeat,因前面已经安装过ipvsadm所在,这里不在安装
#sudo apt-get install heartbeat
安装完成后,会提示在/usr/share/doc/heartbeat 下有所需要的三个文件authkeys,ha.cf.gz,haresources.gz
#sudo dpkg –l heartbeat
#sudo dpkg –l ipvsadm
查看这两个文件包是否已安装
#sudo cp /usr/share/doc/heartbeat/authkeys /etc/ha.d/
#sudo cp /usr/share/doc/heartbeat/ha.cf.gz /etc/ha.d/
#sudo cp /usr/share/doc/heartbeat/haresource.gz /etc/ha.d/
#cd /etc/ha.d
#sudo gzip –d ha.cf.gz
#sudo gzip –d haresources.gz
#sudo vim authkeys
把以下内容
#auth 1
#1 crc
修改为
auth 1
1 crc
#sudo chmod 600 authkeys
#sudo vim haresources
增加以下内容即可:
ubserver1 192.168.3.100 lvs.sh
*:ubserver1 为主机名(必须与`uname –n `查看的名字相同),192.168.3.100为虚拟的IP,lvs.sh为配置LVS-DR时用到的脚本。
#sudo vim ha.cf
修改内容为以下:
bcast eth0
ucast eth0 192.168.3.50
*:192.168.3.50为从负载均衡服务器ubserver5的IP
auto_failback on
#auto_failback设置为on时,一旦主节点重新恢复联机,将从从节点取回所有资源。若该选项设置为off,主节点便不能重新获得资源。
node ubserver1
node ubserver5
*:ubserver1是主,所在在前;ubserver5在后,顺序是重要。
#sudo vim /etc/init.d/lvs.sh
#!/bin/bash
vip=192.168.3.100:80
vip1=192.168.3.100
rip1=192.168.3.20
rip2=192.168.3.30
sudo ifconfig eth0:0 $vip1 netmask 255.255.255.255 broadcast $vip1 up
sudo route add -host $vip1 dev eth0:0
sudo ipvsadm -A -t $vip -s rr
sudo ipvsadm -a -t $vip -r $rip1 -g
sudo ipvsadm -a -t $vip -r $rip2 -g
sudo ipvsadm –S
vip=192.168.3.100:80
vip1=192.168.3.100
rip1=192.168.3.20
rip2=192.168.3.30
sudo ifconfig eth0:0 $vip1 netmask 255.255.255.255 broadcast $vip1 up
sudo route add -host $vip1 dev eth0:0
sudo ipvsadm -A -t $vip -s rr
sudo ipvsadm -a -t $vip -r $rip1 -g
sudo ipvsadm -a -t $vip -r $rip2 -g
sudo ipvsadm –S
*:要在/etc/init.d目录下建立lvs.sh
#sudo chmod 755 /etc/init.d/lvs.sh
#sudo vim /etc/sysctl.conf
net.ipv4.ip_forward=0
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
#sudo sysctl –p
#sudo vim /etc/hosts
ubserver2 192.168.3.20
ubserver3 192.168.3.30
ubserver5 192.168.3.50
*:在实验的其它机器做相似的修改
4,配置从负载均衡服务器ubserver5:
#sudo vim ha.cf
修改/etc/ha.d/ha.cf
bcast eth0
ucast eth0 192.168.3.10
*:192.168.3.10为主负载均衡服务器ubserver1的IP
haresources,authkeys,lvs.sh
配置与负载均衡服务器ubserver1的都相同。
5,配置www服务器ubserver2,ubserver3两台机器配置相同
#sudo ifconfig lo:0 192.168.3.100 netmask 255.255.255.255 broadcast 192.168.3.100
#sudo route add –host 192.168.3.100 dev lo:0
修改/etc/sysctl.conf
net.ipv4.ip_forward=0
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
#sudo sysctl –p
把ubserver2,ubserver3的/var/www下的index.html的内容修改为“this is ubserver2”,”this is ubserver3”,当访问时区别访问的是那台机器,查看实验是否成功
6,开启heartbeat
在负载均衡服务器ubserver1,ubserver5上执行
#sudo /etc/init.d/heartbeat start
出现以下内容:
没搞明白!但能工作。
7,故障模拟
在一台机器访问
http://192.168.3.100,看有没有达到轮询访问两台www服务器,然后关闭主负载均衡服务器ubserver1,看能不能正常访问,这时到从负载均衡服务器ubserver5上,执行#sudo ipvsadm,看有没有接管调度;正常开启主负载均衡服务器ubserver1,这时访问
http://192.168.3.100,并查看其有没有开始把任务从ubserver5上接管回来。在模拟的过程中查看两台机器的 /var/log/syslog内容,看是否工作正常.
实验结果:
(1)负载均衡能实现,达到轮询两台www服务器
(2)当关闭主负载均衡服务器ubserver1时,从负载均衡服务器ubserver5能接管其任务;但当主负载均衡服务器ubserver1修复后,不能接回其调度任务。还须修改。今天重新实验发现,在开机后heartbeat服务会自动启动,可以接回调度任务。以前总以为是要手动启动heartbeat服务的,原来是
开机后自动启动的。
总结:
现在网上实例的很多,但是ubuntu下的很少,在redhat下的很多,不过,道理是相通的,稍加修改就可以了,要明白其工作的原理,就比较容易排除故障,多看官方的手册。这次只是基本功能实现了,很多细节没配置。实验完了,再补上。
本文转自xcjgutong 51CTO博客,原文链接:http://blog.51cto.com/xuchengji/330343