歡迎您光臨本站 註冊首頁

Linux 系統下雙機HA的實現

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
————基於heartbeat方式
實驗環境為兩台虛擬機作為HA主備節點,第三台虛擬機作為客戶端.具體網路網卡參數配置見拓撲圖. 一、搭建實驗環境 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 客戶端IP地址為192.168.0.42 2、在主節點伺服器上開啟web服務,並驗證web服務是否可以成功訪問. 驗證成功后,關閉web服務.為了試驗的順利進行,這裡將web服務設置為開機不啟動. 關閉httpd服務的目的是為了驗證後面客戶端訪問伺服器時,web服務的開啟是受heartbeat控制的,而不是人為開啟的web服務. 在雙機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 安裝完成後,再來確認一下安裝了所有的軟體包. 二、 軟體的配置
Heartbeat軟體的安裝目錄為/etc/ha.d,其中的README.config對配置文件進行了說明,共有三個主要的配置文件:ha.cf,haresources,authkeys.切換到/etc/ha.d目錄下,卻發現並沒有這三個主要的配置文件.
那麼這三個主要的配置文件在那裡呢?可以切換到/usr/share/doc/heartbeat-2.1.4/目錄下查看一下是否有這三個主要的配置文件.

將上述的三個主要的配置文件複製到/etc/ha.d/目錄下.哈哈,三個主要配置的配置文件 出來了吧? 下面依次對三個配置文件進行說明,此外還可以參考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文件的內容吧?文件前面的內容可以直接忽略過去,需要修改的行數並不是很多.主要在面.可以看到這四行都默認被註釋掉了. 修改的方法有很多的,最簡單直接打開註釋就行了,然後保存退出;也可以使用echo命令將要設定的值導入到該文件中;或者使用ssl加密並導入到該文件之中. 這裡使用后兩種來驗證一下,打開文件,可以看到兩種方式都將數據導入到文件中了.在試驗過程中,為了節省時間,可以選用非加密傳輸方式.

為了文件的安全性,我們要設定該文件的許可權為600,修改完成後,要記得查看是否修改成功. 2、2配置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為默認使用的埠號.
bcast eth1:設置廣播通信所使用的網路介面卡. auto_failback on:heartbeat的兩台主機分別為主節點和從節點.主節點在正常情況下佔用資源並運行所有的服務,遇到故障時把資源交給從節點並由從節點運行服務.在該選項設為on的情況下,一旦主節點恢復運行,則自動獲取資源並取代從節點,否則不取代從節點.

node 定義集群主機的節點號名稱 另外還有一些設置,由於對實驗作用不是很大,這裡就不進行配置了. 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服務. ,別忘記修改/etc/hosts文件,保證主備節點伺服器之間知道對方的IP地址,保證彼此可以正常通信.

由於備用節點伺服器的配置和主節點伺服器的配置基本相同,只有主機名和IP地址不同,這裡就省略配置備節點伺服器的配置步驟了. 三、實驗的驗證 當主備節點都配置完成後,要啟動主備節點的heartbeat服務,然後就可以到客戶端來驗證測試實驗成功與否了.有點激動啊!呵呵^_^,如圖所示,實驗配置是成功的. 再來到主節點伺服器上,查看一下主節點伺服器IP地址的變化吧!可以發現,對外宣稱的VIP地址綁定在了主節點伺服器上的eth0網卡上. 此時,假設由於某些意外原因(手動停止主節點伺服器的heartbeat服務),主節點伺服器突然宕機了.再來刷新客戶端的瀏覽器,會發現主頁內容變成了備節點伺服器(這裡為了區分客戶端訪問的是不同的伺服器,主備節點伺服器的網頁內容不同). 切換來到備節點伺服器上,查看一下備節點伺服器IP地址的變化可以發現,對外宣稱的VIP地址綁定在了備節點伺服器上的eth0網卡上. 由此就可以說明雙機系統可以實現無縫切換. 主節點再次啟動heartbeat
在這種情況下,主節點將重新綁定VIP地址,備節點web釋放該IP地址,並由主節點對外提供服務.在主節點啟動heartbeat之後,集群IP地址的釋放和綁定有一定的延遲.雖然有一定的延遲,但是集群IP地址的釋放和綁定是同步進行的,使用ping命令可以發現集群IP地址一直處於可通狀態,該過程並不影響雙機系統的可用性.該過程仍然是一個無縫切換.

為了驗證主備節點伺服器之間的連通性,可以使用tcpump –i eth1 udp port 694


[火星人 ] Linux 系統下雙機HA的實現已經有843次圍觀

http://coctec.com/docs/linux/show-post-51792.html