天天看點

HA(heartbeat)主備模式實作lvs群集的高可用性

案例要求:

   1、通過HA主備模式實作對lvs群集(web伺服器)的高可用性,并實作對内部web伺服器線上狀态進行探測。

案例拓撲:

<a href="http://blog.51cto.com/attachment/201212/162909685.jpg" target="_blank"></a>

ha-1配置

環境準備:

 a、用hostname修改主機名,

    #hostname ha1.abc.com

 b、并修改/etc/sysconfig/network  

      HOSTNAME=ha1.abc.com

 c、因沒有配置dns,是以直接hosts檔案,

 #vim /etc/hosts/

  ha1.abc.com    192.168.2.60

  ha2.abc.com    192.168.2.61

1.安裝 heartbeat 相關軟體包,有依賴關系,推薦使用yum安裝

 heartbeat-2.1.4-11.el5.i386.rpm 

 heartbeat-pils-2.1.4-11.el5.i386.rpm  

 heartbeat-stonith-2.1.4-11.el5.i386.rpm

 heartbeat-ldirectord-2.1.4-9.el5.i386.rpm

額外依賴包:libnet-1.1.4-3.el5.i386.rpm  perl-MailTools-1.77-1.el5.noarch.rpm

2.關閉相關服務,

# service ipvsadm stop   關閉服務并禁止開機啟動,由ha來控制操作

# chkconfig ipvsadm off

#service ldirectord stop   關閉ldirectord服務并禁止開機啟動

#chkconfig ldirectord off 

3.拷貝配置檔案

/usr/share/doc/heartbeat-2.1.4

# cp -p haresources  ha.cf  authkeys  /etc/ha.d/

4.編輯配置檔案

a、 # vim /etc/ha.d/ha.cf  

 95 bcast eth1

 96 node ha1.abc.com

 97 node ha2.abc.com

b、身份驗證 

 [root@ha1 ~]# dd if=/dev/random  bs=512 count=1| openssl md5

0+1 records in

0+1 records out

ec92b27792a008b420ec5adfe0a34ea0

17 bytes (17 B) copied, 6.1088e-05 seconds, 278 kB/s

# vim /etc/ha.d/authkeys 

auth 3

3 md5 ec92b27792a008b420ec5adfe0a34ea0     //為剛才借助dd産生的随機md5加密值

# chmod 600 /etc/ha.d/authkeys    //修改權限

c、資源

  # vim /etc/ha.d/haresources

ha1.abc.com  192.168.2.254/24/eth0  ldirectord:ldirectord.cf   //ha1.abc.com為首先要激活的

<a href="http://blog.51cto.com/attachment/201212/163035585.jpg" target="_blank"></a>

#ll  /etc/ha.d/resource.d/ldir*   //檢視該目錄是否有ldirectord服務的控制腳本,若沒有執行複制:#cp  -p /etc/init.d/ldirectord  /etc/ha.d/resource.d/

<a href="http://blog.51cto.com/attachment/201212/163101734.jpg" target="_blank"></a>

 d、複制并編輯配置檔案ldirectord.cf

#cp -p /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf   /etc/ha.d/

#vim /etc/ha.d/ldirectord.cf

<a href="http://blog.51cto.com/attachment/201212/163119924.jpg" target="_blank"></a>

4、啟動heartbeat服務

# service heartbeat start      //啟動heartbeat服務

ha-2配置

環境準備: 

   #hostname ha2.abc.com

     HOSTNAME=ha2.abc.com

1、安裝 heartbeat 相關軟體包,

依賴包:libnet-1.1.4-3.el5.i386.rpm  perl-MailTools-1.77-1.el5.noarch.rpm

2、也要關閉相關服務

# service ipvsadm stop   關閉ipvsadm服務并禁止開機啟動

3、ha-1與ha-2的配置相同,是以直接使用scp指令實作安全拷貝,将ha-1的相應修改内容拷貝到ha-2中,

#scp ha1.abc.com:/etc/ha.d/ha.cf  authkeys  haresources  ldirectord.cf  /etc/ha.d/

<a href="http://blog.51cto.com/attachment/201212/163320318.jpg" target="_blank"></a>

# service heartbeat start   //啟動heartbeat服務。

server1配置、server2配置相同(server2自形配置)

#解決arp不響應的問題

[root@server1 ~]# echo 1 &gt;  /proc/sys/net/ipv4/conf/lo/arp_ignore   //隻回答目标IP位址是來訪網絡接口本地位址的ARP查詢請求

[root@server1 ~]# echo 2 &gt; /proc/sys/net/ipv4/conf/lo/arp_announce  //對查詢目标使用最适當的本地位址

[root@server1 ~]# echo 1 &gt;  /proc/sys/net/ipv4/conf/all/arp_ignore

[root@server1 ~]# echo 2 &gt; /proc/sys/net/ipv4/conf/all/arp_announce

[root@server1 ~]# ifconfig lo:0 192.168.2.254 netmask 255.255.255.255   //lo:0的位址

 #添加一條路由

[root@server1 ~]# route add -host 192.168.2.254  dev  lo:0       

注:對于server的配置是臨時性的,重新開機配置消失,

下面為在ha-1上的操作:

正常啟動heartbeat服務後,測試會發現可以正常高可用性,并且添加了eth0:0接口與位址

<a href="http://blog.51cto.com/attachment/201212/163341707.jpg" target="_blank"></a>

檢視日志可以看出,可以接收資源,啟動相應接口、服務。

<a href="http://blog.51cto.com/attachment/201212/163405280.jpg" target="_blank"></a>

   當然實驗過程中,遇到錯誤時也可以通過檢視日志來解決……

檢視ipvsadm政策規則表:發現web伺服器的權重為0,因為沒有建立web伺服器的測試頁,

<a href="http://blog.51cto.com/attachment/201212/163444592.jpg" target="_blank"></a>

在web伺服器上建立相應測試後(#echo "ok" &gt; /var/www/html/.index.html),權重變為1,表示可以探測到,

<a href="http://blog.51cto.com/attachment/201212/163531358.jpg" target="_blank"></a>

現在我們關閉一台web伺服器,會發現權重值變為0,而我們采用的是rr排程算法,權重值的大小是不會影響輪循的,我們再次設定/etc/ha.d/ldirectord.cf,不再采用靜默模式,配置檔案儲存退出後,不需要重新開機heartbeat服務,是自動加載的,

<a href="http://blog.51cto.com/attachment/201212/163550122.jpg" target="_blank"></a>

注意:也要對ha-2下的/etc/ha.d/ldirectord.cf做同樣配置。

現在再來測試一下,關閉一個web伺服器,service httpd stop後,發現ipvsadm的政策規則表中馬上就消失了關于該伺服器的政策配置設定語句。

<a href="http://blog.51cto.com/attachment/201212/163606976.jpg" target="_blank"></a>

通過ha1作為主模式測試正常,并可以探測到内部web伺服器的運作狀态。

現在将ha1通過指令實作成為備份模式,來測試ha2的工作情況:

ha-1上執行: 

#/usr/share/heartbeat/hb_standby 

2012/12/28_19:43:49 Going standby [all].

再次檢視ha1的ipvsadm政策規則時,發現已經沒有了,

<a href="http://blog.51cto.com/attachment/201212/163629162.jpg" target="_blank"></a>

檢視ha2的ipvsadm政策表,會發現已經存在了,并成功探測到了内部web伺服器,

<a href="http://blog.51cto.com/attachment/201212/163640525.jpg" target="_blank"></a>

對web伺服器的探測也是正常的,不再附圖。

在ha1執行:# /usr/share/heartbeat/hb_takeover 重新變為主動模式。

實驗注意項:

1、ha群集中,兩個node點的共享資源要相同,

2、心跳探測時,兩個node點交流時,身份驗證的的配置檔案authkeys的權限值一定要修改,

heartbeat[24576]: 2012/12/29_16:45:50  ERROR: Bad permissions on keyfile [/etc/ha.d/authkeys], 600 recommended.

heartbeat[24576]: 2012/12/29_16:45:50 ERROR: Authentication configuration error.

heartbeat[24576]: 2012/12/29_16:45:50 ERROR: Configuration error, heartbeat not started.

#chmod 600 /etc/ha.d/authkeys

3、其他錯誤,檢視日志一般可以解決了,祝你好運!

實驗結束。

本文轉自 劉園  51CTO部落格,原文連結:http://blog.51cto.com/colynn/1104057

繼續閱讀