linux 做双机热备
1.1 首先下載libnet.tar.gz,heartbeat-2.0.4.tar.gz
1.2 按順序現裝libnet再裝heartbeat
都是源碼包,解壓開后分別執行:
./configure ;make ;make install;
安裝完畢。
1.3 軟件的配置
Heartbeat軟件的安裝目錄為/usr/local/etc/ha.d,其中的README.config對配置文件進行了說明,共有三個主要的配置
文件:ha.cf,haresources,authkeys。
使用命令 rpm -q heartbeat -d 或者 find / -name ha.cf 均可以找到上述三個配置文件,所在目錄為:
/usr/local/share/doc/heartbeat-2.0.4。
下面依次對三個配置文件進行說明,此外用戶還可以參考Linux-HA附帶的安裝文檔以及配置文件自身的注釋。
1.3.1 配置ha.cf文件
ha.cf是heartbeat的主要配置文件,可以對heartbeat的多數性能和狀態進行配置。大部分選項的取值可以采用默認值,其中的主要選項及配置方法說明如下:
debugfile /var/log/ha-debug:該文件保存heartbeat的調試信息
logfile /var/log/ha-log:heartbeat的日志文件
keepalive 2:心跳的時間間隔,默認時間單位為秒
deadtime 30:超出該時間間隔未收到對方節點的心跳,則認為對方已經死亡。
warntime 10:超出該時間間隔未收到對方節點的心跳,則發出警告并記錄到日志中。
initdead 120:在某些系統上,系統啟動或重啟之后需要經過一段時間網絡才能正常工作,該選項用于解決這種情況產生的時間間隔。取值至少為deadtime的兩倍。
udpport 694:設置廣播通信使用的端口,694為默認使用的端口號。
baud 19200:設置串行通信的波特率。
serial /dev/ttyS0:選擇串行通信設備,用于雙機使用串口線連接的情況。如果雙機使用以太網連接,則應該關閉該選項。
bcast eth0:設置廣播通信所使用的網絡接口卡。
auto_failback on:heartbeat的兩臺主機分別為主節點和從節點。主節點在正常情況下占用資源并運行所有的服務,
遇到故障時把資源交給從節點并由從節點運行服務。在該選項設為on的情況下,一旦主節點恢復運行,則自動獲取
資源并取代從節點,否則不取代從節點。
ping ping-node1 ping-node2:指定ping node,ping node并不構成雙機節點,它們僅僅用來測試網絡連接。
respawn hacluster /usr/lib/heartbeat/ipfail:指定與heartbeat一同啟動和關閉的進程,該進程被自動監視,
遇到故障則重新啟動。最常用的進程是ipfail,該進程用于檢測和處理網絡故障,需要配合ping語句指定的ping
node來檢測網絡連接。
具體內容舉例:
node rhelh1
node rhelh2
1.3.2 配置haresources文件
haresources文件用于指定雙機系統的主節點、集群IP、子網掩碼、廣播地址以及啟動的服務等。其配置語句格式如下:
node-name network-config <resource-group>
其中node-name指定雙機系統的主節點,取值必須匹配ha.cf文件中node選項設置的主機名中的一個,node選項設置的另
一個主機名成為從節點。network-config用于網絡設置,包括指定集群IP、子網掩碼、廣播地址等。resource-group用
于設置heartbeat啟動的服務,該服務最終由雙機系統通過集群IP對外提供。
下面舉例對配置方法進行說明
# rhelh1 172.16.70.11 httpd tomcat
假設ha.cf文件中node選項設置的兩個主機名分別為rhelh1和rhelh2,則根據上述配置,雙機系統的主節點為rhelh1,從節點為rhelh2。
heartbeat啟動時獲取集群IP(cluster IP)為172.16.70.11,該IP成為heartbeat對外提供服務的網絡地址。此外heartbeat
依次啟動服務httpd和tomcat(從左向右的順序)。
heartbeat關閉時將依次關閉tomcat和httpd(從右向左的順序),并釋放cluster IP。
httpd和tomcat分別是apache和tomcat的啟動腳本,heartbeat將從下面目錄中尋找這些啟動腳本:
/usr/etc/ha.d/resource.d
/usr/etc/rc.d/init.d
# hello 192.168.8.240/19 httpd tomcat
指定cluster IP為192.168.8.240,并且指定子網掩碼為255.255.224.0,每個網段內有213個可用IP,默認廣播地址取該網段內的
最大可用IP,取值為192.168.31.255。
此外,還可以向啟動腳本傳遞argument,語法為:scriptname::argument
# hello 192.168.8.240/19/eth0/192.168.31.251 httpd tomcat
指定cluster IP為192.168.8.240,子網掩碼為255.255.224.0,使用的網絡接口卡為eth0,并強制設定廣播地址為192.168.31.251。
注意:兩臺主機的haresources文件設置必須完全一致。
具體內容舉例:
rhelh2 172.16.70.11 httpd
1.3.3 配置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文件的文件許可權應該設為600(即-rw-------),命令為:
chmod 600 authkeys
注意:上述三個配置文件設置完畢后,應該復制到/usr/etc/ha.d目錄下。
具體內容舉例:
auth 3
#1 sha1 key-for-sha1
#1 crc
#2 sha1 HI!
3 md5 Hello!
1.5 運行與測試
1.5.1 啟動heartbeat
heartbeat安裝完成后,自動在/etc/rc.d/init.d/目錄下生成啟動腳本heartbeat,啟動heartbeat可以使用命令
/etc/rc.d/init.d/heartbeat start
此外還可以使用stop、restart、reload、status等控制參數。
heartbeat在生成啟動腳本的同時也為不同的runlevel創建了啟動腳本的符號連接,從而在切換runlevel的時候自動啟動或關閉heartbeat。
例如,在/etc/rc.d/rc3.d/目錄下創建了符號連接S75heartbeat,從而在系統進入字符模式(runlevel 3)時自動啟動heartbeat。
在/etc/rc.d/rc6.d/目錄下創建了符號連接K05heartbeat,從而在系統重啟(runlevel 6)時自動關閉heartbeat。默認情況下,
heartbeat的啟動優先級是75,關閉優先級是5。
可以手動來創建。命令如下:
cd /etc/rc.d/rc0.d ; ln -s ../init.d/heartbeat K05heartbeat
cd /etc/rc.d/rc3.d ; ln -s ../init.d/heartbeat S75heartbeat
cd /etc/rc.d/rc5.d ; ln -s ../init.d/heartbeat S75heartbeat
cd /etc/rc.d/rc6.d ; ln -s ../init.d/heartbeat K05heartbeat
1.5.2 測試方案
下面描述一個簡單的測試方案。系統環境和軟件配置如下:
兩臺主機的主機名和IP地址分別為:
hello(192.168.6.7)
web(192.168.6.33)
則ha.cf文件中的node語句定義如下:
node hello
node web
haresources文件定義如下:
hello 192.168.8.240/19/192.168.31.255
該語句指定雙機系統的主節點為hello,從節點為web,集群IP(cluster IP)為192.168.8.240,子網掩碼為255.255.224.0,廣播地址為
192.168.31.255。本測試方案沒有指定heartbeat啟動的服務,僅通過ping命令和telnet命令來檢測雙機系統的可用性。
任何一臺主機在啟動heartbeat后,可以使用命令 ps aux | grep heartbeat 來查看heartbeat的進程狀態,可以使用ifconfig命令確認當
前主機是否已經綁定了cluster IP,此外還可以在/var/log/目錄下查看heartbeat的日志文件 ha-debug、ha-log。如果運行過程中產生了
任何異常或錯誤消息,則應該根據上述信息進行檢查和調試。
測試步驟如下:
1. 主節點啟動heartbeat
在主節點hello上調用命令 /etc/rc.d/init.d/heartbeat start 啟動heartbeat。該主機將會自動綁定集群IP地址,在雙機系統之外的第三
臺主機上使用ping命令檢測集群IP地址192.168.8.240,直至該地址變為可用(根據硬件和網絡性能的差異,主機綁定集群IP地址需要等待不
同的時間)。
在主節點hello上使用ifconfig命令查看該主機的網絡配置,顯示主節點已經綁定了集群IP地址192.168.8.240。
在第三臺主機上使用telnet命令登錄集群IP地址192.168.8.240,輸入主節點hello的用戶名和口令,可以成功登錄hello主機。
2. 從節點啟動heartbeat
使用相同的命令啟動從節點web的heartbeat。由于在兩臺主機同時啟動heartbeat的情況下,應該由主節點來獲取IP地址并對外提供服務,因
而從節點heartbeat的啟動并不對主節點產生影響。最終仍然由主節點hello綁定集群IP地址,使用telnet命令登錄的也是主節點hello。
3. 主節點關閉heartbeat
在主節點hello上調用命令 /etc/rc.d/init.d/heartbeat stop 關閉heartbeat。
使用ifconfig命令可以發現,主節點hello已經釋放了集群IP地址192.168.8.240,并由從節點web綁定該IP地址。使用telnet命令登錄的是從
節點web。
在這個過程中,使用ping命令進行不間斷監測,可以發現集群IP地址192.168.8.240一直處于可通狀態,并沒有產生任何阻塞或延遲,所以,
在關閉處于激活狀態的heartbeat的情況下,雙機系統可以實現無縫切換。
但是在另外一些情況下,比如網絡故障、主機關機或重啟等,如果該主機的heartbeat處于激活狀態,則不能實現雙機的無縫切換,切換過程
需要有一定的延遲,使用ping命令可以發現集群IP地址暫時無法使用。
4. 主節點再次啟動heartbeat
在這種情況下,主節點hello將重新綁定集群IP地址,從節點web釋放該IP地址,并由主節點對外提供服務。在主節點啟動heartbeat之后,
集群IP地址的釋放和綁定有一定的延遲。
雖然有一定的延遲,但是集群IP地址的釋放和綁定是同步進行的,使用ping命令可以發現集群IP地址一直處于可通狀態,該過程并不影響雙
機系統的可用性。所以該過程仍然是一個無縫切換
總結
以上是生活随笔為你收集整理的linux 做双机热备的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux负载均衡
- 下一篇: Java Socket