实验平台:virtualbox 4.12

操作系统:RHEL5.4

实验拓扑: 

    本实验是在上一篇配置HA高可用集群的基础上进行的,所以关于HA的配置过程不再详细说明。
    首先来配置两台Realserver,分别安装httpd服务,并添加测试页
    
 
  
  1. [root@R1 ~]#yum install httpd -y  
  2. [root@R1 ~]#echo '<h1>Realserver1</h1> <body bgcolor=red</body>> /var/www/html/index.html  
  3. [root@R2 ~]#yum install httpd -y  
  4. [root@R2 ~]#echo '<h1>Realserver2</h1> <body bgcolor=red</body>> /var/www/html/index.html  
    下面是在两台HA上进行的配置:
    在两台Directory上分别安装ipvsadm
    
 
  
  1. [root@node1 ~]# yum install ipvsadm -y  
  2. [root@node2 ~]# yum install ipvsadm -y  
    由于使用两台Directory搭建lvs,关于lvs的Directory的设置就必须依赖于脚本来实现了。先来编辑Directory脚本,该脚本用于在资源流向自己时自动设置自己为lvs的Directory,并在资源不属于自己时取消关于lvs的各项设置
    [root@node1 ~]#vim /etc/init.d/ipvs
   
 
  
  1.  #!/bin/bash  
  2.     . /etc/rc.d/init.d/functions  
  3.     VIP=192.168.56.20  
  4.     RIP1=192.168.56.11  
  5.     RIP2=192.168.56.12  
  6.     PORT=80  
  7. case "$1" in 
  8. start)             
  9.  /sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up  
  10.  /sbin/route add -host $VIP dev eth0:1  
  11.  echo 1 > /proc/sys/net/ipv4/ip_forward  
  12. # 清除已有的iptables配置  
  13.  /sbin/iptables -F  
  14.  /sbin/iptables -Z  
  15. # 清除已有的ipvsadm 规则  
  16.  /sbin/ipvsadm -C  
  17.    
  18. # 添加VIP  
  19.  /sbin/ipvsadm -A -t $VIP:80 -s wlc  
  20. # 在Directory下添加Realserver  
  21.  /sbin/ipvsadm -a -t $VIP:80 -r $RIP1 -g -w 1  
  22.  /sbin/ipvsadm -a -t $VIP:80 -r $RIP2 -g -w 2  
  23.  /bin/touch /var/lock/subsys/ipvsadm &> /dev/null 
  24. ;;   
  25. stop)  
  26.  echo 0 > /proc/sys/net/ipv4/ip_forward  
  27.    
  28.  /sbin/ipvsadm -C  
  29.  /sbin/ifconfig eth0:1 down  
  30.  /sbin/route del $VIP  
  31.  /bin/rm -f /var/lock/subsys/ipvsadm  
  32.  echo "ipvs is stopped..." 
  33. ;;  
  34. status)  
  35.    
  36.  if [ ! -e /var/lock/subsys/ipvsadm ]; then 
  37.     echo "ipvsadm is stopped ..." 
  38.  else 
  39.     echo "ipvs is running ..." 
  40.     ipvsadm -L -n  
  41.    
  42.  fi  
  43. ;;  
  44. *)  
  45.  echo "Usage: $0 {start|stop|status}" 
  46. ;;  
  47. esac  
 
 
  
  1. [root@node1 ~]#chmod a+x /etc/init.d/ipvsadm.sh  
将配置好的脚本拷贝至node2上
[root@node1 ~]# scp /etc/init.d/ipvs node2:/etc/init.d/
这里需要对haresources文件进行一下修改,将刚才的脚本设置为随服务启动
 
  
  1. [root@node1 ~]# vim /etc/ha.d/haresources  
  2.     node1.a.org 192.168.56.20/24/eth0/192.168.56.255 ipvs  
    [root@node1 ~]# scp /etc/ha.d/haresources node2:/etc/ha.d/
配置realservers的脚本(运行此脚本能够实现快速配置realservers)
 
  
  1. #vim /etc/init.d/realserver.sh  
  2. #!/bin/bash  
  3. # Script to start LVS DR real server.  
  4. # description: LVS DR real server  
  5. . /etc/rc.d/init.d/functions  
  6. VIP=192.168.56.20  
  7. host=`/bin/hostname`  
  8. case "$1" in 
  9. start)  
  10.        # Start LVS-DR real server on this machine.  
  11.  /sbin/ifconfig lo down  
  12.  /sbin/ifconfig lo up  
  13.        echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore  
  14.         echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce  
  15.         echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  
  16.         echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce  
  17.         /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up  
  18.         /sbin/route add -host $VIP dev lo:0  
  19. ;;  
  20. stop)  
  21.        /sbin/ifconfig lo:0 down  
  22.         echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore  
  23.         echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce  
  24.         echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore  
  25.         echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce  
  26. ;;  
  27. status)  
  28.         # Status of LVS-DR real server.  
  29.         islothere=`/sbin/ifconfig lo:0 | grep $VIP`  
  30.         isrothere=`netstat -rn | grep "lo:0" | grep $VIP`  
  31.         if [ ! "$islothere" -o ! "isrothere" ];then 
  32.             # Either the route or the lo:0 device  
  33.             # not found.  
  34.             echo "LVS-DR real server Stopped." 
  35.         else 
  36.             echo "LVS-DR real server Running." 
  37.         fi  
  38. ;;  
  39. *)  
  40.             # Invalid entry.  
  41.             echo "$0: Usage: $0 {start|status|stop}" 
  42.             exit 1  
  43. ;;  
  44. esac  
  45. [root@R1 ~]# chmod a+x /etc/init.d/rs.sh   
  46. [root@R1 ~]# scp /etc/init.d/rs.sh 192.168.56.12:/etc/init.d/  
启动服务进行测试:
 
  
  1. [root@node1 ~]# /etc/init.d/heartbeat start  
  2. [root@node1 ~]# ssh node2 -- '/etc/init.d/heartbeat start'  
  3. [root@node1 ~]# /etc/init.d/ipvs start  
  4. [root@R1 ~]# /etc/init.d/rs.sh start  
  5. [root@R2 ~]# /etc/init.d/rs.sh start  
查看一下LVS信息
[root@node1 ~]# ipvsadm -L -n

说明服务已经正常启动,在浏览器上测试一下

 
这时停掉node1上的heartbeat,看服务是否正常
[root@node1 ~]# service heartbeat stop
刷新页面可以看到
 

依然可以正常访问,在node2上查看一下ipvsdam的信息
[root@node2 ~]# ipvsadm -L -n
服务器搭建完成。