Linux 系統下雙機HA的實現

                          ————基於heartbeat方式
 
實驗環境爲兩臺虛擬機作爲HA主備節點,第三臺虛擬機作爲客戶端。具體網絡網卡參數配置見拓撲圖。
clip_p_w_picpath001
 
一、搭建實驗環境
1、設置主節點服務器主機名爲:node1.example.com eth0網卡地址爲:192.168.0.43 eth1網卡地址地址爲:192.168.10.43
設置備用節點服務器主機名爲:node2.example.com eth0網卡地址爲:192.168.0.45 eth1網卡地址爲:192.168.10.45
clip_p_w_picpath003
clip_p_w_picpath005
clip_p_w_picpath007
客戶端IP地址爲192.168.0.42
2、在主節點服務器上開啓web服務,並驗證web服務是否可以成功訪問。
clip_p_w_picpath009
 
驗證成功後,關閉web服務。爲了試驗的順利進行,這裏將web服務設置爲開機不啓動。
關閉httpd服務的目的是爲了驗證後面客戶端訪問服務器時,web服務的開啓是受heartbeat控制的,而不是人爲開啓的web服務。
 
clip_p_w_picpath011
 
在雙機HA功能下,主備節點要通過heartbeat信息來保持聯繫,爲了實現主備節點的heartbeat功能,需要安裝額外的軟件包。但是Redhat默認並沒有安裝這些軟件包,這就需要到對應官方網站上去下載對應的軟件包。需要安裝的軟件包有六個,分別是:
libnet-1.1.4-3.el5.i386.rpm
perl-MailTools-1.77-1.el5.noarch.rpm
heartbeat-pils-2.1.4-10.el5.i386.rpm
heartbeat-stonith-2.1.4-10.el5.i386.rpm
heartbeat-gui-2.1.4-10.el5.i386.rpm
heartbeat-ldirectord-2.1.4-10.el5.i386.rpm
heartbeat-devel-2.1.4-10.el5.i386.rpm
heartbeat-2.1.4-10.el5.i386.rpm
安裝上面六個軟件包,會出現依賴關係,提示依賴下面的軟件包(這些包在Redhat光盤文件中),因此爲了方便安裝這些軟件包,建議建立本地yum庫,如此以來就可以解決軟件安裝時出現的很多包依賴關係。
perl-Compress-Zlib
perl-HTML-Parser
perl-HTML-Tagset
perl-URI
perl-libwww-perl
perl-MailTools
perl-TimeDate
perl-String-CRC32
net-snmp-libs
把要安裝的軟件包複製到根目錄下。然後通過本地yum庫進行上述軟件包的安裝。由於上述軟件包都是以.rpm結尾的,所以這裏就使用*通配所有軟件包。命令爲:
yum –nongpgcheck localinstall *.rpm
clip_p_w_picpath013
安裝完成後,再來確認一下安裝了所有的軟件包。
clip_p_w_picpath015
 
二、 軟件的配置
Heartbeat軟件的安裝目錄爲/etc/ha.d,其中的README.config對配置文件進行了說明,共有三個主要的配置文件:ha.cf,haresources,authkeys。切換到/etc/ha.d目錄下,卻發現並沒有這三個主要的配置文件。
clip_p_w_picpath016
 
那麼這三個主要的配置文件在那裏呢?可以切換到/usr/share/doc/heartbeat-2.1.4/目錄下查看一下是否有這三個主要的配置文件。
clip_p_w_picpath018
 
將上述的三個主要的配置文件複製到/etc/ha.d/目錄下。哈哈,三個主要配置的配置文件
出來了吧?
clip_p_w_picpath020
 
下面依次對三個配置文件進行說明,此外還可以參考Linux-HA附帶的安裝文檔以及配置文件自身的註釋。
2.1配置authkeys文件
authkeys文件用於heartbeat的鑑權設置,共有三種可用的鑑權方式:crc、md5和sha1。三種方式安全性依次提高,但同時佔用的系統資源也依次擴大。crc安全性最低,適用於物理上比較安全的網絡,sha1提供最爲有效的鑑權方式,佔用的系統資源也最多。
其配置語句格式如下:
auth <number>
<number> <authmethod> [<authkey>]
舉例說明:
auth 1
1 sha1 key-for-sha1
其中鍵值key-for-sha1可以任意指定,number設置必須保證上下一致。
auth 2
2 crc
crc方式不需要指定鍵值。
還是先來看一下authkeys文件的內容吧?文件前面的內容可以直接忽略過去,需要修改的行數並不是很多。主要在最後面。可以看到這四行都默認被註釋掉了。
clip_p_w_picpath021
 
修改的方法有很多的,最簡單直接打開註釋就行了,然後保存退出;也可以使用echo命令將要設定的值導入到該文件中;或者使用ssl加密並導入到該文件之中。
clip_p_w_picpath022
 
這裏使用後兩種來驗證一下,打開文件,可以看到兩種方式都將數據導入到文件中了。在試驗過程中,爲了節省時間,可以選用非加密傳輸方式。
clip_p_w_picpath023
 
爲了文件的安全性,我們要設定該文件的權限爲600,修改完成後,要記得查看是否修改成功。
clip_p_w_picpath024
 
2、2配置ha.cf文件
ha.cf是heartbeat的主要配置文件,可以對heartbeat的多數性能和狀態進行配置。大部分選項的取值可以採用默認值,其中的主要選項及配置方法說明如下:
debugfile /var/log/ha-debug:該文件保存heartbeat的調試信息
logfile /var/log/ha-log:heartbeat的日誌文件
clip_p_w_picpath025
 
keepalive 2:心跳的時間間隔,默認時間單位爲秒
deadtime 30:超出該時間間隔未收到對方節點的心跳,則認爲對方已經死亡。
warntime 10:超出該時間間隔未收到對方節點的心跳,則發出警告並記錄到日誌中。
clip_p_w_picpath026
 
initdead 120:在某些系統上,系統啓動或重啓之後需要經過一段時間網絡才能正常工作,該選項用於解決這種情況產生的時間間隔。取值至少爲deadtime的兩倍。
udpport 694:設置廣播通信使用的端口,694爲默認使用的端口號。
clip_p_w_picpath027
 
bcast eth1:設置廣播通信所使用的網絡接口卡。
clip_p_w_picpath028
 
auto_failback on:heartbeat的兩臺主機分別爲主節點和從節點。主節點在正常情況下佔用資源並運行所有的服務,遇到故障時把資源交給從節點並由從節點運行服務。在該選項設爲on的情況下,一旦主節點恢復運行,則自動獲取資源並取代從節點,否則不取代從節點。
clip_p_w_picpath029
 
node 定義集羣主機的節點號名稱
clip_p_w_picpath031
 
另外還有一些設置,由於對實驗作用不是很大,這裏就不進行配置了。
baud 19200:設置串行通信的波特率。
serial /dev/ttyS0:選擇串行通信設備,用於雙機使用串口線連接的情況。如果雙機使用以太網連接,則應該關閉該選項。
ping ping-node1 ping-node2:指定ping node,ping node並不構成雙機節點,它們僅僅用來測試網絡連接。
respawn hacluster /usr/lib/heartbeat/ipfail:指定與heartbeat一同啓動和關閉的進程,該進程被自動監視,遇到故障則重新啓動。最常用的進程是ipfail,該進程用於檢測和處理網絡故障,需要配合ping語句指定的ping node來檢測網絡連接。
 
 
2、3 配置haresources文件
haresources文件用於指定雙機系統的主節點、集羣IP、子網掩碼、廣播地址以及啓動的服務等。其配置語句格式如下:
node-name network-config <resource-group>
其中node-name指定雙機系統的主節點,取值必須匹配ha.cf文件中node選項設置的主機名中的一個,node選項設置的另一個主機名成爲從節點。
network-config用於網絡設置,包括指定集羣IP、子網掩碼、廣播地址等。resource-group用於設置heartbeat啓動的服務,該服務最終由雙機系統通過集羣IP對外提供。
 
指定主節點服務器爲node1.example.com 對外宣稱的IP地址爲192.168.0.140的服務器提供web服務。
clip_p_w_picpath032
 
最後,別忘記修改/etc/hosts文件,保證主備節點服務器之間知道對方的IP地址,保證彼此可以正常通信。
clip_p_w_picpath033
由於備用節點服務器的配置和主節點服務器的配置基本相同,只有主機名和IP地址不同,這裏就省略配置備節點服務器的配置步驟了。
 
三、實驗的驗證
當主備節點都配置完成後,要啓動主備節點的heartbeat服務,然後就可以到客戶端來驗證測試實驗成功與否了。有點激動啊!呵呵^_^,如圖所示,實驗配置是成功的。
clip_p_w_picpath034
 
再來到主節點服務器上,查看一下主節點服務器IP地址的變化吧!可以發現,對外宣稱的VIP地址綁定在了主節點服務器上的eth0網卡上。
clip_p_w_picpath035
clip_p_w_picpath036
 
此時,假設由於某些意外原因(手動停止主節點服務器的heartbeat服務),主節點服務器突然宕機了。再來刷新客戶端的瀏覽器,會發現主頁內容變成了備節點服務器(這裏爲了區分客戶端訪問的是不同的服務器,主備節點服務器的網頁內容不同)。
clip_p_w_picpath037
 
切換來到備節點服務器上,查看一下備節點服務器IP地址的變化可以發現,對外宣稱的VIP地址綁定在了備節點服務器上的eth0網卡上。
由此就可以說明雙機系統可以實現無縫切換。
clip_p_w_picpath039
 
主節點再次啓動heartbeat
在這種情況下,主節點將重新綁定VIP地址,備節點web釋放該IP地址,並由主節點對外提供服務。在主節點啓動heartbeat之後,集羣IP地址的釋放和綁定有一定的延遲。雖然有一定的延遲,但是集羣IP地址的釋放和綁定是同步進行的,使用ping命令可以發現集羣IP地址一直處於可通狀態,該過程並不影響雙機系統的可用性。所以該過程仍然是一個無縫切換。
 
爲了驗證主備節點服務器之間的連通性,可以使用tcpump –i eth1 udp port 694
clip_p_w_picpath041
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章