簡介
本文將探討在OpenSUSE中使用heartbeat和mon建立高可用度(High-Availability)環境:高可用度的設計可以讓系統容許錯誤的產生,並且根據其設計使得整個系統能繼續提供服務,主要原理乃利用heartbeat監控各個server,配合mon監控各server中的service,使本系統達高可用度的設計,圖一跟圖二分別顯示heartbeat和mon的配置與監控方式。
《圖一》Heartbeat配置圖
《圖二》Server內Mon的監控圖
圖一顯示使用heartbeat監控server1跟server2的運作情形,其中server1為主(master)、server2為副(slave),兩個server的eth0網卡對應到相同的虛擬IP,平常皆是server1開啟server2關閉的狀態,當server1發生無法連線的情形時,server2將會啟動並對應虛擬IP,直到server1回復連線狀態,server2才會關閉將主導權交給server1,其中使用eth1網卡透過heartbeat監測對方的server為開啟或關閉狀態。
圖二顯示mon監視電腦中各個service,並控制heartbeat的啟動或關閉,當server1中mon監視的service中有一個發生問題時,它將會把heartbeat關閉,此時server2的heartbeat將會把該server啟動,直到server1中的service回復正常運作時,server1的mon會把heartbeat啟動,此時server2將會把heartbeat監控的service關閉,並把虛擬ip的控制權交由server1。
安裝注意事項一、OpenSUSE安裝注意事項安裝時,記得把軟體裡的kernal development打勾,並確定gcc c++、c和perl complie有安裝。
二、解壓縮安裝檔解壓縮software.tar.gz到[/tmp]下。
heartbeat配置一、安裝1.偵測heartbeat
在command line執行service heartbeat status查看heartbeat是否已安裝。
2.安裝heartbeat
使用OpensSUSE-11.1提供之zypper套件執行/tmp/heartbeat資料夾底下之安裝檔(/tmp/heartbeat/server:ha-clustering.repo),如需最新版本請至官網(請參參考文獻第三點)下載。
使用zypper安裝方式,請在command line輸入以下指令:
二、設定heartbeat1.環境設定
在兩台SUSE-11.1上都安裝兩張網卡,使用Yast->Network Device->Network settings將ha1和ha2的ip設定為如下位址。
ha1 eth0:192.168.102.129 eth1:10.0.0.1
ha2 eth0:192.168.102.130 eth1:10.0.0.2
2.參數設定
heartbeat的運作主要根據ha.cf、authkeys、haresouces的設定,其中ha.cf設定heartbeat的各種參數,authkeys設定傳遞訊息使用的加密方式,haresources設定server與server之間方享的資源、對應的ip和主從關係,這些設定檔heartbeat本身都有提供範例可在(/usr/share/doc/packages/heartbeat)中找到。
設定hosts(etc/hosts)執行vi /etc/hosts修改hosts內容,將各server的名稱加入其中,以本系統為例,在hosts檔中加入ha1(192.168.102.129)和ha2(192.168.102.130)。
/etc/hosts內容:
設定完成後,重開機。
重開機完成後在兩台機器commad line中輸入uname –n分別顯示ha1和ha2代表設置成功。
設定ha.cf(etc/ha.d/ha.cf)(1)將(/tmp/heartbeat/etc/ha.cf)複製並貼上到(/etc/ha.d/ha.cf)
(2)ha.cf各設定值的解釋,Use_logd yes啟動時記得將logd.cf複製貼上到/etc/ha.d底下。
設定authkeys(etc/ha.d下)(1)將(/tmp/heartbeat/etc/authkeys)複製並貼上到(/etc/ha.d/authkeys),並執行chmod 600 /etc/ha.d/authkey變更authkeys執行權限
(2)authkeys內容格式與範例。
設定haresources(etc/ha.d下)(1)將(/tmp/heartbeat/etc/haresources)複製並貼上到(/etc/ha.d/haresources)
(2)haresources格式
虛擬ip的設定,位址的前三碼必需跟eth0一樣,即必需設定為192.168.102.xxx。
測試heartbeatStep 1: 開啟ha2的heartbeat,在server2打入指令service heartbeat start
Step 2: 打入指令service heartbeat status,查看heartbeat有無開啟完成,發生錯誤時可以使用tail /var/log/messages –f查看錯誤訊息。
Step 3: 使用瀏覽器查看
http://192.168.102.130:8080/測試server2 tomcat有無開啟成功
Step 4: 使用瀏覽器查看
http://192.168.102.55:8080/測試虛擬IP可否連線
Step 5: 開啟ha1的heartbeat,在server1打入指令service heartbeat start
Step 6: 打入指令service heartbeat status,查看heartbeat有無開啟完成,發生錯誤時可以使用tail /var/log/messages –f查看錯誤訊息。
Step 7: 使用瀏覽器查看http://192.168.102.129:8080/ 測試server1 tomcat有無開啟成功
Step 8: 使用瀏覽器查看http://192.168.102.130:8080/測試server2 tomcat有無斷開連接
Step 9: 使用瀏覽器查看http://192.168.102.55:8080/測試虛擬IP可否連線
mon配置一、下載與安裝安裝mon server前置套件perl client model和Time::Period[6]套件以提供mon server安裝時所需要的模組,然後安裝mon server,如需最新版本請至官網[7]下載,安裝過程如下。
Step1 : 安裝perl client model (/tmp/mon/mon-client-1.0.2):
Step2 : 安裝Time::Period (/tmp/mon/period-1.20)
Step3 : 安裝mon server將mon.tar.gz(/tmp/mon/mon.tar.gz)解壓縮至/usr/lib底下,並執行/usr/lib/mon/mon測試是否安裝完成:
執行/usr/lib/mon/mon時,如果沒出現錯誤訊息代表安裝完成。
二、mon.cf (/etc/mon下)參數設定1.將(/tmp/mon/etc/mon.cf)複製並貼上到(/etc/mon/mon.cf),然後根據自己主機的設定更改各個參數
2.更改mon.cf設定自己主機位址hostgroup,以本系統為例,設定如下。
3.設定mon.cf各種監測的參數,以本系統為例,監測tomcat service設定如下。
4.設定mon.cf中jtest service各種監測的參數,以本系統為例設定如下。
三、複製貼上jp.monitorjp.monitor是使用shell script撰寫而成的一支monitor程式,其功用即可監控ps底下執行的process,判斷其是否存在,使用它必需將其複製到目錄[/usr/lib/mon/mon.d]底下,以下為複製語法。
四、建立基本alertmon在本系統主要的功用就是監視service,當service停止服務時把heartbeat關閉,當service啟動時把heartbeat開啟,因此需要兩個alert,一個負責把heartbeat關閉(down.alert),一個負責把heartbeat開啟(up.alert)。
1.ha1的alert
將down.alert和up.alert複製貼上到自己主機的mon中
down.alert(/usr/lib/mon/alert.d下)
up.alert(/usr/lib/mon/alert.d下)
mon監測到service啟動或關閉狀態時,會在/tmp/up.alert.log或/tmp/down.alert.log中輸入時間,因此除了透過Email查看狀態外,也可透過log檔查看mon的運行狀態,以下為透過tail查看的語法。
2.ha2的alert
ha2的up.alert跟down.alert的設定不太一樣,因為ha2的heartbeat必需保持永遠開啟的狀態,因此它的up.alert和down.alert不可執行關閉heartbeat的指令,需將內容修改成如下。
五、建立mon service為了讓主機在開啟時能自動執行mon,並且讓管理者能隨時查看mon的執行狀態,因此我們必需建立mon service以達到這個目的。
將mon service複製貼上到自己主機的/etc/init.d/中。
輸入service mon status測試mon service是否載入成功,以下為成功的結果。
將mon service設為開機自動開啟
六、測試mon使用mon監視tomcat要注意,tomcat開啟時的首頁要有辦法顯示,否則mon會一直認為tomcat為關閉狀態,以下為測試的步驟。
Step 1 : 開啟heartbeat,執行service heartbeat start
Step 2 : 使用service heartbeat status,確定heartbeat開啟
Step 3 : 開啟tomcat,執行service tomcat start
Step 4 : 使用service tomcat status,確定tomcat開啟
Step 5 : 開啟mon,執行service mon start
Step 6 : 使用service mon status,確定mon開啟
Step 7 : 關閉tomcat,執行service tomcat stop
Step 8 : 使用tail /tmp/down.alert.log,查看mon有無偵測到tomcat關閉
Step 9 : 使用service heartbeat status,查看heartbeat是否關閉,使用tail /var/log/messages –f查看log
Step 10 : 開啟tomcat,執行service tomcat start
Step 11 : 使用tail /tmp/up.alert.log,查看mon有無偵測到tomcat開啟
Step 12 : 使用service heartbeat status,查看heartbeat是否開啟,使用tail /var/log/messages –f查看log
Step 13 : 查看Email
參考文獻一、
http:#www.linux-ha.org/DownloadSoftware二、
http:#clusterlabs.org/wiki/Main_Page三、
http:#download.opensuse.org/repositories/server:/ha-clustering/四、
http:#clusterlabs.org/wiki/Install五、
http:#blog.chinaunix.net/u/12325/showart_143824.html六、
http://www.cpan.org/authors/id/PRYAN/七、
http:#mon.wiki.kernel.org/index.php/Download