heartbeat v2 + lvs-DR實現Director的高可用

實驗拓撲





 實驗步驟

一、配置lvs-DR

1、配置RealServer (在這裏以配置node1爲例,node2與node1配置相同)

(1)配置web服務

  1. 使用yum安裝  
  2. #yum -y install httpd   
  3. #service httpd start  
  4. #echo "node1" > /var/www/html/index.html  //添加訪問頁面
  5. #echo "Test Page" > /var/www/html/.test.html  //測試頁面
  6. #elinks -dump http://192.168.0.11   
  7.              node1    //訪問成功  

(2)配置參數及VIP

  1. #echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore  
  2. #echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce  
  3. #echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  
  4. #echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce  
  5.  
  6. 配置VIP  
  7. #ifconfig lo:0 172.16.19.1 broadcast 172.16.19.1 
  8. netmask 255.255.255.255 up  
  9. #route add -host 172.16.19.1 dev lo:0 //添加路由  
  10. #ifconfig    //查看VIP是否添加成功 



2、配置Director 
(與RealServer一樣,在此以Dir1爲例配置。Dir2做相同配置即可)

(1)配置VIP

  1. #ifconfig eth0:0 172.16.19.1 broadcast 172.16.19.1 
  2. netmask 255.255.255.255 up    
  3. #route add -host 172.16.19.1 dev eth0:0    
  4. #echo 1 > /proc/sys/net/ipv4/ip_forward //打開路由轉發 

(2)安裝ipvsadm並定義規則

  1. #yum -y install ipvsadm  
  2. #ipvsadm -A -t 172.16.19.1:80 -s rr   
  3. #ipvsadm -a -t 172.16.19.1:80 -r 192.168.0.11 -g  
  4. #ipvsadm -a -t 172.16.19.1:80 -r 192.168.0.66 -g 

(3)訪問http://172.16.19.1,查看負載均衡效果

 (4)保存規則,關閉服務

  1. #ipvsadm -S > /etc/sysconfig/ipvsadm  
  2. #service ipvsadm stop  
  3. #chkconfig ipvsadm off  
  4.  
  5. 停用VIP 因爲VIP也是高可用資源  
  6. #ifconfig eth0:0 down  

二、配置Director高可用

在這裏我們使用除了使用heartbeat相關軟件外,還要安裝heartbeat-ldirectord包和它的依賴包perl-MailTools。它相當於heartbeat的一個模塊,它可以管理集羣的虛擬化和資源,同時還可以檢查後端節點健康狀況,非常符合實際需求。

1、安裝前的準備工作

  1. Dir1與Dir2保證時間同步,可使用date命令  
  2.  
  3. #vim /etc/hosts  //添加如下兩行,做主機名稱解析  
  4.  192.168.0.100    Dir1  
  5.  192.168.0.101    Dir2  
  6. 建立雙機互信以便Dir1遠程啓動Dir2的heartbeat服務  
  7. #ssh-keygen -t rsa  //產生私鑰  
  8. #ssh-copy-id -i ./ssh/id_rsa.pub root@Dir2   
  9. #ssh Dir2 'uname -n'  //測試ssh  
  10. #scp /etc/hosts Dir2:/etc  //Dir1與Dir2的hosts文件保持一致  
  11.  
  12. 在Dir2上  
  13. #ssh-keygen -t rsa  //產生私鑰  
  14. #ssh-copy-id -i ./ssh/id_rsa.pub root@Dir2   
  15. #ssh Dir2 'uname -n'  //測試ssh  

2、安裝配置軟件

  1. #yum -y --nogpgpcheck localinstall heartbeat-2.1.4-9.el5.i386.rpm   
  2. heartbeat-pils-2.1.4-10.el5.i386.rpm  
  3. heartbeat-gui-2.1.4-9.el5.i386.rpm  
  4. heartbeat-stonith-2.1.4-10.el5.i386.rpm  libnet-1.1.4-3.el5.i386.rpm   
  5. heartbeat-ldirectord-2.1.4-9.el5.i386.rpm   
  6. perl-MailTools-1.77-1.el5.noarch.rpm  
  7.  
  8. #cd /usr/share/doc/heartbeat-2.1.4/  
  9. #cp authkeys ha.cnf haresource /etc/ha.d/  
  10. #cd ..heartbeat-ldirectord-2.1.4/  
  11. #cp ldirectord.cf /etc/ha.d  
  12. #cd /etc/ha.d/  
  13.  
  14. #vim ha.cf  //編輯主配置文件  
  15.   initdead 120 //第一次啓動時等待其他節點啓動的時間  
  16.   bcast eth0   //心跳信息傳播方式  
  17.   auto_failback on  //奪回資源是否開啓  
  18.   node    Dir1     //定義節點  
  19.   node    Dir2   
  20.   ping  172.16.0.1  //當接收不到其他節點的心跳信息時,  
  21. 通過ping前端路由證實不是本節點發生故障  
  22.   compression  bz2 //定義壓縮方式  
  23.   compression_threshold 2 //文件大於2k時才壓縮  
  24.   crm   on     
  25.  
  26. #chmod 600 authkeys //必須改變其權限,否則服務無法啓動  
  27. #vim authkeys  
  28.   auth 1  
  29.   1 md5 f4ecab5e96446b2986 
  30. //此處的字符串可以使用 dd if=/dev/urandom count=512 bs=1 | md5sum 
  31. 命令生成的隨即數  
  32.  
  33. #vim ldirectord.cf   
  34.   checktimeout=3  //當檢查不到RealServer時的超時時間  
  35.   checkintervel=1  //每隔多長時間檢查一個RealServer  
  36.   autoreload=yes    //當此前配置文件發生改變時會不會自動加載  
  37.   logfile="/var/log/ldirectord.log" 
  38.   virtual=172.16.19.1:80  //VIP  
  39.         real=192.168.0.11:80 gate  //定義RealServer  
  40.         real=192.168.0.66:80 gate  
  41.         fallback=127.0.0.1:80 gate  
  42.         service=http   //提供的服務  
  43.         request=".test.html" //通過此頁面判斷RS是否工作  
  44.         receive="Test Page"  //頁面返回結果  
  45.         #virtualhost=some.domain.com.au //可定義虛擬主機  
  46.         scheduler=rr  //使用的算法  
  47.         protocol=tcp 
  48.         checktype=negotiate 
  49.         checkport=80 
  50. #scp authkeys ha.cf ldirectord.cf Dir2:/etc/ha.d   
  51. #service ldirectord stop  
  52. #chkconfig ldirector off  
  53.  
  54. #passwd haclustet //給hacluster用戶添加密碼redhat,在啓動圖形界面時要使用

 

3、啓動服務,管理資源

  1. #service heartbeat start  
  2. #ssh node2 '/etc/init.d/heartbeat start'  
  3. #hb_gui &  //啓動gui界面



輸入密碼便可管理界面


 

(1)首先添加ldirectord資源

右擊'Rescources' ,選擇"Add new items"。點擊"Add Parameter"提交

(2)添加VIP

同樣方法進入定義頁面:



(3)查看定義的資源

 此時沒有定義約束,資源以負載均衡的方式定義在了兩個節點上。

(4)定義並列約束

 

 約束定義好後,兩個資源都被定義在了Dir1上。此時訪問,http://172.16.19.1一切正常。

還可以定義順序約束,方法同上不再演示。

三、測試實驗

1、測試Director是否高可用

由上圖可知,此時資源都定義在了Dir1上。現在我們模擬Dir1不能正常工作,查看資源的流轉狀況。

ok。資源順利的轉移到了dir2上。Director高可用成功。

2、Director是否能夠檢查RealServer的健康狀況

我們現有兩個realserver,我們通過iptables來限制192.168.0.66的80端口。

  1. #iptables -A INPUT -d 192.168.0.66 -p tcp --dport 80 -j DROP 

再次訪問http://172.16.19.1。此時會發現訪問頁面只會出現“node1”。使用iptables -F 清除規則後,兩臺RealServer重新恢復負載均衡。現在可以證明Director可以實現檢查後端節點健康狀況的功能。



至此,實驗結束。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章