一、实验拓扑图:

二、实验简介

如上实验拓扑图所示:RS1RS2web服务器,它们与Director组成LVS-DR模型的负载均衡集群,目的是使Web服务器达到负载均衡;Director1Director2组成基于heartbeat v2+heartbeat-ldirectord的高可用集群,其目的是使web服务器可以提供可靠长久的服务。

三、实验步骤

1)配置RS1RS2Director1DR模型的负载均衡集群。

         RS1:在RS1上主要是配置4个内核参数,主要防治RS1向应外部对VIP的请求,其次配置VIP,具体步骤如下:

 
  
  1. # echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore  
  2. # echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore  
  3. # echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce   
  4. # echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce  
  5.  
  6. # ifconfig lo:1 172.16.5.1 broadcast 172.16.5.1 netmask 255.255.255.255 up  
  7. # route add -host 172.16.5.1 dev lo:1(通过RS1响应的请求IP都为VIP)  
  8. #echo "<h1>RS1</h1>> /var/www/html/index.html(前提是httpd按装并启动) 

        RS2:RS2的配置和RS1的配置一样,只需重复上面的操作,注意:为了便于测试将最后一行改为:#echo "<h1>RS2</h1>> /var/www/html/index.html

       Director1:在其上做如下配置并定义ipvs规则:

 
  
  1. # yum -y install ipvsadm(安装ipvsadm)  
  2. 定义ipvs规则:  
  3. # ipvsadm -A -t 172.16.5.1:80 -s rr(定义服务)  
  4. # ipvsadm -A -t 172.16.5.1:80 -r 172.16.44.1 -g  
  5. # 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)设置主机名,配置双机互信。

 
  
  1. # hostname node1  
  2. # uname -n(验证主机名)  
  3. # vim /etc/sysconfig/network(修改主机名,修改如下内容)
  4. HOSTNAME=node1  
  5. # vim /etc/hosts(添加如下内容)  
  6. 172.16.66.1     node1                    
  7. 172.16.77.1     node2                  
  8. # scp /etc/hosts root@node2:/etc/(将node1的hosts传给node2,前提是172.16.77.1也要配好主机名)  
  9. 配置双机互信:  
  10. # ssh-keygen -t rsa  
  11. # ssh-copy-id -i .ssh/id_rsa.pub root@node2  
  12. # ssh node2 'ifconfig'(测试是否成功) 

在Director2上只需配置主机名为node2和双机互信,和上面的配置相同,在此不再赘述。

(2)安装软件包

 
  
  1. 需要下载的软件:  
  2. heartbeat-2.1.4-9.el5.i386.rpm               
  3. heartbeat-stonith-2.1.4-10.el5.i386.rpm  
  4. heartbeat-gui-2.1.4-9.el5.i386.rpm           
  5. libnet-1.1.4-3.el5.i386.rpm  
  6. heartbeat-ldirectord-2.1.4-9.el5.i386.rpm   
  7. perl-MailTools-1.77-1.el5.noarch.rpm  
  8. heartbeat-pils-2.1.4-10.el5.i386.rpm  
  9. 安装软件  
  10. # yum -y --nogpgcheck localinstall *.rpm 

(3)修改配置文件并启用hb_gui功能。

 
  
  1. #cd /usr/share/doc/heartbeat-2.1.4/  
  2. #cp ha.cf haresources authkeys /etc/ha.d  
  3. #cd /etc/ha.d  
  4. #vim ha.cf(添加如下内容)  
  5.   node    node1  
  6. node    node2  
  7. crm respawn
  8. #vim authkeys (添加如下内容)
  9.  auth 1
    1 sha1 1bf276bd2a05e39e018b4690a829ea7f
  10. (注意:后面的随机串是:dd if=/dev/urandom count=1 bs=512 | md5sum)
  11.  #chmod 600 authkeys (注意一定要修改)    
  12.  #scp ha.cf authkeys haresources root@node2:/etc/ha.d/    
  13.  #hd_gui &(进行测试,测试前要添加hacluster用户) 
 

(4)修改ldirectord的配置文件,ldirectord的主要作用就是可以代替ipvsadm来定义规则的,并且可以对RS进行健康状况的监测,具体过程如下:

 
  
  1. #chkconfig ipvsadm off
  2. #ipvadm -C(清除上面在LVS-DR模型中定义的规则)  
  3. #rpm -ql heartbeat-ldirectord(查看信息)  
  4. #cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf ./  
  5. #vim ldirctord.cf(对其做如下修改)  
  6. virtual=172.16.5.1:80  (VIP)
  7.         real=172.16.44.1:80 gate  (RS1的IP)
  8.         real=172.16.55.1:80 gate  (RS2的IP)
  9.         fallback=127.0.0.1:80 gate(当RS1和RS2都坏掉时,访问网站出现的页面)  
  10.         service=http 
  11.         request=".test.html" (用于验证RS是否正常工作)
  12.         receive="OK" 
  13.         scheduler=rr 
  14.         netmask=255.255.255.255  
  15.         protocol=tcp 
  16.         checktype=negotiate 
  17.         checkport=80 
  18.  #scp ldirectord.cf root@node2:/etc/ha.d/(将其复制到另一台主机)

(5)启动heartbeat并定义资源,步骤如下:

启动heartbeat:

 
  
  1. #service heartbeat start  
  2. #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服务全停掉,在访问如下:

 

实验到此结束,如有什么不足之处还请大家多多指教,谢谢!!!