一、实验拓扑图:
二、实验简介
如上实验拓扑图所示:RS1和RS2为web服务器,它们与Director组成LVS-DR模型的负载均衡集群,目的是使Web服务器达到负载均衡;Director1和Director2组成基于heartbeat v2+heartbeat-ldirectord的高可用集群,其目的是使web服务器可以提供可靠长久的服务。
三、实验步骤
(1)配置RS1、RS2和Director1的DR模型的负载均衡集群。
RS1:在RS1上主要是配置4个内核参数,主要防治RS1向应外部对VIP的请求,其次配置VIP,具体步骤如下:
- # echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore
- # echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
- # echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce
- # echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
- # ifconfig lo:1 172.16.5.1 broadcast 172.16.5.1 netmask 255.255.255.255 up
- # route add -host 172.16.5.1 dev lo:1(通过RS1响应的请求IP都为VIP)
- #echo "<h1>RS1</h1>" > /var/www/html/index.html(前提是httpd按装并启动)
RS2:RS2的配置和RS1的配置一样,只需重复上面的操作,注意:为了便于测试将最后一行改为:#echo "<h1>RS2</h1>" > /var/www/html/index.html
Director1:在其上做如下配置并定义ipvs规则:
- # yum -y install ipvsadm(安装ipvsadm)
- 定义ipvs规则:
- # ipvsadm -A -t 172.16.5.1:80 -s rr(定义服务)
- # ipvsadm -A -t 172.16.5.1:80 -r 172.16.44.1 -g
- # ipvsadm -a -t 172.16.5.1:80 -r 172.16.55.1 -g(定义RS)
测试结果如下:第一次访问172.16.5.1
刷新之后的结果:
这样一个简单的LVS-DR模型就构建好了。下面配置Director的高可用功能。
(2)Director1和Director2上配置高可用集群。
在Director1上的配置:
(1)设置主机名,配置双机互信。
- # hostname node1
- # uname -n(验证主机名)
- # vim /etc/sysconfig/network(修改主机名,修改如下内容)
- HOSTNAME=node1
- # vim /etc/hosts(添加如下内容)
- 172.16.66.1 node1
- 172.16.77.1 node2
- # scp /etc/hosts root@node2:/etc/(将node1的hosts传给node2,前提是172.16.77.1也要配好主机名)
- 配置双机互信:
- # ssh-keygen -t rsa
- # ssh-copy-id -i .ssh/id_rsa.pub root@node2
- # ssh node2 'ifconfig'(测试是否成功)
在Director2上只需配置主机名为node2和双机互信,和上面的配置相同,在此不再赘述。
(2)安装软件包
- 需要下载的软件:
- heartbeat-2.1.4-9.el5.i386.rpm
- heartbeat-stonith-2.1.4-10.el5.i386.rpm
- heartbeat-gui-2.1.4-9.el5.i386.rpm
- libnet-1.1.4-3.el5.i386.rpm
- heartbeat-ldirectord-2.1.4-9.el5.i386.rpm
- perl-MailTools-1.77-1.el5.noarch.rpm
- heartbeat-pils-2.1.4-10.el5.i386.rpm
- 安装软件
- # yum -y --nogpgcheck localinstall *.rpm
(3)修改配置文件并启用hb_gui功能。
- #cd /usr/share/doc/heartbeat-2.1.4/
- #cp ha.cf haresources authkeys /etc/ha.d
- #cd /etc/ha.d
- #vim ha.cf(添加如下内容)
- node node1
- node node2
- crm respawn
- #vim authkeys (添加如下内容)
- auth 1
1 sha1 1bf276bd2a05e39e018b4690a829ea7f- (注意:后面的随机串是:dd if=/dev/urandom count=1 bs=512 | md5sum)
- #chmod 600 authkeys (注意一定要修改)
- #scp ha.cf authkeys haresources root@node2:/etc/ha.d/
- #hd_gui &(进行测试,测试前要添加hacluster用户)
(4)修改ldirectord的配置文件,ldirectord的主要作用就是可以代替ipvsadm来定义规则的,并且可以对RS进行健康状况的监测,具体过程如下:
- #chkconfig ipvsadm off
- #ipvadm -C(清除上面在LVS-DR模型中定义的规则)
- #rpm -ql heartbeat-ldirectord(查看信息)
- #cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf ./
- #vim ldirctord.cf(对其做如下修改)
- virtual=172.16.5.1:80 (VIP)
- real=172.16.44.1:80 gate (RS1的IP)
- real=172.16.55.1:80 gate (RS2的IP)
- fallback=127.0.0.1:80 gate(当RS1和RS2都坏掉时,访问网站出现的页面)
- service=http
- request=".test.html" (用于验证RS是否正常工作)
- receive="OK"
- scheduler=rr
- netmask=255.255.255.255
- protocol=tcp
- checktype=negotiate
- checkport=80
- #scp ldirectord.cf root@node2:/etc/ha.d/(将其复制到另一台主机)
(5)启动heartbeat并定义资源,步骤如下:
启动heartbeat:
- #service heartbeat start
- #ssh node2 '/etc/init.d/heartbeat start'
(3)启动hb_gui定义资源,在此需要定义的资源只有两中,IP和ldirectord,具体过程如下:
(1)在命令行中输入#hb_gui &,开启资源的图形化界面。
右击添加资源:
选择组类型:
选择IPaddr2,其功能比IPaddr更强大:
配置VIP的参数如下所示,主要配置ip,lvs_support,nic等,如下所示
添加ldirectord资源,如下所示:
右击group_选择native选项:
选择ldrectord选项,配置其configfile如下所示:
添加完成后启动服务就可以了,如下所示:
启动后的结果如下:
这样完整的配置过程就是这样了,下面进行测试。
四、实验测试。
在测试之前,需要在RS1,RS2上添加网页.test.html,并在其中添加ok字样,其主要的作用是让ldirectord可以测试RS是否正常工作。然后在在Director1和Director2上分别在其index.html中添加Testing,并启动httpd服务。
(1)模拟Direct1坏掉时,如下,选择standby:
出现如下结果,则表示测试正常:
(2)当一台RS坏掉时,再访问网站,则director只会选择能正常提供服务的,而不访问坏掉的,在此,模拟RS1坏掉,只需将RS1上的httpd服务停掉,再访问一直是RS2提供的页面,如下所示:
(3)若所有的RS都坏掉,则回显示,Testing页面,在此,将RS1和RS2的httpd服务全停掉,在访问如下:
实验到此结束,如有什么不足之处还请大家多多指教,谢谢!!!