歡迎您光臨本站 註冊首頁

利用VMware實驗基於heartbeat的Debian Linux高可用性集群服務v1.0

利用VMware實驗基於heartbeat的Debian Linux高可用性集群服務v1.0               
-----用你心中的溫暖燭光,點燃你周圍的另一支燭光,這個世界就亮了。Qintel    cdut qintel#163.com(歡迎指出錯誤的地方)

本文在Google DOC中的位置:http://docs.google.com/View?docid=dhjp43kc_8cgsx3m
:em10:順便給Google DOC作下廣告,好處是可以多人編輯一個文檔,類似wiki,這樣大家群策群力,可以共同完善一個文檔。

說明:本文沒有關於heartbeat的詳細配置說明,只是就較關鍵的,新手易出錯的,幾個地文寫了一點心得,實驗及成文歷時約3天,20多個小時。
關鍵詞:Heartbeatdebain 認證key生成,主、次節點,順序,指定,Cluster IP與Cluster IP+服務

3、 我的實驗環境:
一台接入LAN的PC,CPU:P4 3.0, 內存:512MB,一塊普通乙太網卡。主操作系統: winxp professional
VMwareWorkStation,在VMwareWorkStation上安裝兩個虛擬主機(也可安裝並配置好一台後用VMàClone功能複製一台出來,這樣更快捷,clone后的主機要注意網卡mac問題,不行的話就刪掉網卡,重新添加),操作系統為Debian linux4.0,主機硬體配置如圖:
http://blog.chinaunix.net/upfile/070730131000.jpg其它硬體如軟碟機,音效卡可刪去不要。裝好Linux操作系統后,光碟機也可刪去。其中Ethernet為「橋接」模式,Ethernet2為自定義模式,接在VMNET2上。
http://blog.chinaunix.net/upfile/070730131024.jpg其中,VMware,Debian的安裝設置本文不涉及,本文重點介紹的是hearbeat的配置。
下圖是本次實驗的邏輯拓樸圖:其中集群IP不能和LAN(包括本機)的IP衝突,並且不能在除/etc/ha.d/haresources文件以外的任何地方配置。
http://blog.chinaunix.net/upfile/070730131217.png#說明:在VMware上的GuestOS(debian)虛擬了2塊網卡,一塊和HostOS(winxp)在同一交換機,用於對外提供高可用性服務,另一塊用於和其它節點發送心跳信息(通告彼此的運行信息),連接在VMware的虛擬交換機VMNET2上,此交換機可以認為是獨立的。
4、 HeartBeat的配置
安裝heartbeat除必要的編譯器之外,需要其它一些軟體的開發包支持:如e2fsprogs和libnet。所以手動通過源碼安裝有些不方便,本實驗採取通過Debian下apt-get方式安裝,可以自動解決包依賴關係。
本實驗環境下安裝命令為
# apt-get install heartbeat

安裝后要配置三個文件(如沒有可手動建立):ha.cf、haresources、authkeys。這三個配置文件需要在/etc/ha.d目錄下面,但是默認是沒有這三個文件的,可以到官網上下這三個文件,也可以在源碼包里找這三個文件,在源碼目錄下的DOC子目錄里。
1.1 Authkeys文件的配置
配置文件的值如下:
auth 3
#1 crc
#2 sha1 HI!
3 md5 Hello!

##其中Hello!為密鑰
這個配置文件非常簡單,就是在auth選擇一個值。每個值對應一種演算法,這個演算法是在主節點和從節點間數據校驗用的。這個配置文件許可權必須是0600。
root@debian:/# chmod 0600 authkeys
對安全性高的,可以用命令自動生成隨機密鑰
root@debian:/# dd if=/dev/urandom count=42>/dev/null | openssl dgst -sha1
結果如下:
f9c85a048681dcbf47457065bbff62e32cec186d
1.2 haresources文件的配置
此文件用於配置集群的IP和使用集群的服務。有以下幾種配置方式
#配置方式一
----------------------------------------------------------
#debian202.115.138.65
#把此地址用於集群,只要HA服務啟動則此IP就將被自動配置到主節點上。
#配置方式二  -------------------------------------------------------
debian202.115.138.65 apache
#讓apache服務和此集群地址綁定,如apache或HA服務沒有啟動,剛此IP也不啟用。
#配置方式三 ---------------------------------------------------------
just.linux-ha.org135.9.216.110 135.9.215.111 135.9.216.112 httpd
#把httpd服務和這三個集群地址綁定
#-------------------------------------------------------------------
還有一種共享文件系統集群的配置方法見參考文獻。 
此配置文件中只要配置了上面的任意一種方式即可工作,本實驗中採取配置方式二,即把apache服務集群。配置文件中其它選項不配也可工作。
1.3 ha.cf文件的配置
auto_failbackoff
#說明:主節點重啟成功后,資源是自動拿回到主節點還是等到副節點down調后拿回資源
node debian
node bebian2
#說明:節點名稱,與uname –n保持一致。是否主節點與此位置的先後順序無關。而是在haresources里指定。
#bcasteth0
#說明:採用eth0的udp廣播用來發送心跳信息,建議在副節點不只一台時使用
ucasteth0 10.0.11.2
#說明:採用網卡eth0的udp單播來通知心跳,ip應為對方IP(未驗證)
#mcasteth0 225.0.0.1 694 1 0
#說明:採用udp多播播來通知心跳,建議在副節點不只一台時使用
#註:廣播,單播,多播,以上三種任選其一即可。
heartbeat的三個配置文件中還有一些其它可配置項,但是比較關鍵的,比較容易弄錯的就是上面提到的這幾項,有了上面這幾項,可保證在heartbeat 1.2系列的版本上正常運行。如果想要自己弄懂所有配置選項,那麼自己參考:http://www.linux-ha.org/ConfiguringHeartbeat中的文檔,特別是《Getting Started withLinux-HA(heartbeat)》文檔,不熟悉的情況下看官方參考文檔永遠是個明智的選擇。
2、 實驗結果測試
在Host OS winxp上通過瀏覽器,訪問Cluster IP:http://202.115.138.65/,服務正常。同時在主節點OS上,查看
# ifconfig -a | less
可發現Cluster IP被HA自動配置到了eth0:0上。
此時,關掉HA服務,或者關掉主節點,立即訪問Cluster IP:http://202.115.138.65/,發現服務中斷,過大約30秒(時間可在/etc/ha.d/ha.cf)中配置,再次訪問Cluster IP:http://202.115.138.65/,發現服務又正常了。而此時在備用節點2上,
# ifconfig -a | less
可發現Cluster IP被HA自動配置到了節點2的eth0:0上。
通過查看節點2上的日誌,日誌里記錄了heartbeat接受到的心跳信息,還有依據信息採取的措施。
# vim /var/log/syslog
摘錄關鍵的幾條日誌如下:
l11438 Jul 30 18:36:31 debian2heartbeat: WARN: node debian: is dead
l11451 Jul 30 18:36:32 debian2heartbeat: info: /sbin/ifconfig eth3:0 202.115.138.65 netmask255.255.255.0^Ibroadcast 202.115.138.255
l11453 Jul 30 18:36:32 debian2heartbeat: /usr/lib/heartbeat/send_arp -i 1010 -r 5 -p/var/lib/heartbeat/rsctmp/send_arp/send_arp-202.115.138.65 eth3 202.115.138.65auto 202.115.138.65 ffffffffffff
l11455 Jul 30 18:36:32 debian2heartbeat: info: Running /etc/init.d/apache/start
可看到,節點2發現節點1異常,然後自動將集群IP配置給自己,並向全網發送arp廣播,通知集群IP與本機Mac的對應起來,最後啟動apache服務。
3、 結論
通過自己實驗,發現heartbeat集群存在一些不完善的地方,比如:
1、
主節點1apache服務異常,OS正常時,節點2並不能自動替換節點1工作,即使不在cluster ip 上綁定apache服務也不行。
#配置方式一  -------------------------------------------------------
debian202.115.138.65
#把此地址用於集群,只要HA服務啟動則此IP就將被自動配置到主節點上。

2、
如果選用配置方式二時
#配置方式二  -------------------------------------------------------
debian202.115.138.65 apache
#讓apache服務和此集群地址綁定,如apache或HA服務沒有啟動,剛此IP也不啟用。

一定要保證IP後面的服務名在以下2個目錄有,而且可用。如果沒有同名,那整個集群將不能正常工作,culsterip將不被配置到任何一個節點上。
以下摘錄heartbeat官方對此的說明:
linuxha1.linux-ha.org 192.168.85.3 httpd smb

#haresources配置文件
#Note: httpd and smb are the name of startupscripts for Apache and Samba, respectively. #Heartbeat will look for startupscripts of the same name in the following paths:
#/etc/ha.d/resource.d
#/etc/init.d

在除了觀察到的這2種情況以外,hearbeat都能正常工作,當然這是實驗環境中得出的結論,在商業環境中的大規模應用據向經驗人土打聽說會有更多問題。
附錄:參考文獻:
Linux 集群大全, http://www.ibm.com/developerworks/cn/linux/cluster/lw-clustering.html
The High Availability LinuxProject,http://linux-ha.org/
Heartbeat依賴軟體包libnet,http://www.packetfactory.net/libnet/
How to generate authkeysautomatically,
http://www.linux-ha.org/GeneratingAuthkeysAutomatically
利用Heartbeat在Linux上實現共享文件系統集群的配置,
http://www.sme-solution.com/cluster/HA/heartbeat_1.html
主要Linux 平台高可用集群軟體(HighAvailability Cluster- HA)簡介及軟體下載,
http://linux.chinaunix.net/bbs/thread-817188-1-1.html

[ 本帖最後由 qintel 於 2007-7-30 21:05 編輯 ]
《解決方案》

呵呵,樓主好帖,謝謝分享!
《解決方案》

好帖,謝謝分享!:wink:
《解決方案》

很詳細的文檔。不錯!
《解決方案》

怎樣驗證備機備份了主機的改變呢??

[火星人 ] 利用VMware實驗基於heartbeat的Debian Linux高可用性集群服務v1.0已經有684次圍觀

http://coctec.com/docs/service/show-post-4622.html