HA高可用搭建

HA高可用搭建

系統環境:

[root@ha1 ha.d]# uname -a

Linux ha1 2.6.18-238.el5 #1 SMP Thu Jan 1315:51:15 EST 2011 x86_64 x86_64 x86_64 GNU/Linux


ha1:192.168.0.2

ha2:192.168.0.3

heartbeat ip192.168.0.4


所用到的安裝包:

wgetftp://ftp.univie.ac.at/systems/linux/dag/redhat/el4/en/x86_64/dag/RPMS/libnet-1.1.2.1-2.2.el4.rf.x86_64.rpm

Reusable-Cluster-Components-glue--glue-1.0.9.tar.bz2

heartbeat-2.1.3.tar.gzHeartbeat-3-0-7e3a82377fa8.tar.bz2用了,但沒有成功,執行沒反應)

××××××××××××××××××××××××××××××××××××××

安裝過程

ha1ha2機器上都安以下執行:

1.#yum install -y flex bisonlibet net-snmp-devel OpenIPMI docbook-style-xsl libtool libxml2-devellibuuid-devel libxslt-devel libtool libtool-devel libtool-ltdl-devellibtool-ltdl  bzip2-devel  glib2-devel

不然在make的時候會出錯

2.#rpm-ivhlibnet-1.1.2.1-2.2.el4.rf.x86_64.rpm

3.#tar jxvf Reusable-Cluster-Components-glue--glue-1.0.9.tar.bz2

#cd Reusable-Cluster-Components-glue--glue-1.0.9

#./ autogen.sh

#./configure && make && make install

4.#tarzxvfheartbeat-2.1.3.tar.gz

#cdheartbeat-2.1.3

#./configure && make && make install

#cpdoc/ha.cf/usr/local/etc/ha.d

# cpdoc/authkeys/usr/local/etc/ha.d

# cpdoc/haresources/usr/local/etc/ha.d


×××××××××××××××××××××××××××××××××××××

配置:

5.首先在/etc/hosts 文件中添加ha1 ha2 信息

cat/etc/hosts

192.168.0.2 ha1

192.168.0.3 ha2

6.heartbeat有三個配置文件:
ha.cf
authkyes
haresources

這些文件在每臺機器都要保持一致.下面將一一介紹.

編輯hertbeat主配置文件ha.cf,2個主機上的內容一樣。
以下是需要打開的配置,ha.cf裏面有詳細說明。

[root@alsme_probe3tmp]# vi /usr/local/etc/ha.d/ha.cf
##ha的日誌文件記錄位置。如沒有該目錄,則需要手動添加
logfile /var/log/ha-log #File to write other messages to
logfacility local0 #這個是設置heartbeat的日誌,這裏是用的系統日誌
##設定心跳(監測)時間時間爲2秒
keepalive 2 #多長時間檢測一次
warntime 5 #連續多長時間聯繫不上後開始警告提示
deadtime 20 #連續多長時間聯繫不上後認爲對方掛掉了(單位是妙)
initdead 120 #這裏主要是給重啓後預留的一段忽略時間段(比如:重啓後啓動

網絡等,如果在網絡還沒有通,keepalive檢測肯定通不過,但這時候並不能切換

#採用ech0的udp廣播用來發送心跳信息
#bcast ech0
#採用網卡ech0的udp單播來通知心跳,ip應爲對方IP,建議採用單播。當一個網

段有多臺這樣cluster話,則一定要採用單播,否則每組cluster都會看到對方的
節點,從而報錯。
ucast eth0 192.168.0.3
##使用udp端口694 進行心跳監測
udpport 694
auto_failback off #恢復正常後是否需要再自動切換回來,一般都設爲off。
##節點1,必須要與 uname -n 指令得到的結果一致。
node ha1
##節點2
node ha2
#通過ping 網關來監測心跳是否正常
ping 192.168.0.254
hopfudge 1
deadping 5
#指定和heartbeat一起啓動、關閉的進程#respawnhacluster

/usr/local/lib64/heartbeat/ipfail#apiauthipfail gid=haclient
uid=hacluster
#
是否採用v2 style模式,在三節點以上時一定要打開
#crm on
從heartbeat的官方文檔來看,目前的ping節點還沒什麼實際用途,只是用於檢測

節點的連通性,並不作爲節點切換的真正依據。在將來的新版本中也許會這麼做



7.編輯雙機互聯驗證文件:authkeys

#vi /usr/local/etc/ha.d/authkeys
auth 1
1 crc

chmod600 /usr/local/etc/ha.d/authkeys

注意authkeys的權限一定要是600

8.編輯集羣資源文件:haresources

#vi /usr/local/etc/ha.d/haresources

ha1 IPaddr::192.168.0.4/24/eth0:1 mysqld keepalived

以上個人理解:

ha1 ha.cf文件中且要作爲primary node

IPaddr:: 192.168.0.4/24/eth0:1 是給ha指定的virtualip(漂移ip),即

heartbeat 啓動時通過heartbeat /usr/local/etc/ha.d/resource.d/IPaddr 爲服務器配置虛擬ip

後面的mysqld 則是要求heartbeat 在啓動時執行 service mysqld start heartbeat關掉時執行service mysqld stop 命令

Keepalived等同於mysqld


9.如何配置,可以參見haresources,裏面也有詳細的說明。
有幾個注意事項:
1).資源組的第一列是我們在ha.cf配置文件中的node之一,而且應該是當前準備
作爲primary節點的那一個node。
2).每一行代表一個資源組,如果一行寫不下可以用換行
3).資源組啓動順序是從左往右,關閉的順序是從右往左
4).腳本的參數通過::來分隔和傳遞
5).一個資源組裏面不同資源之間以空格分隔
6).不同的資源組之間沒有必然關係
7).每個資源都是一個角本,可以是在/etc/init.d目錄下面的,也可以

是/usr/local/etc/ha.d/resource.d目錄下面的角本。這些角本必須要支持xxx
start;xxxstop;模式。
8).關於service IP的資源設置格式詳見haresources文件。

9).如果mysql是編譯安裝的話,則需要修改/etc/init.d/mysql文件中的basedir
和datadir兩個參數

10.服務啓動/關閉

/etc/init.d/heartbeat start/stop

service heartbeat start/stop

11.測試

測試切換不外乎以下幾種:1).手工調用heartbeat的節點切換腳本
2).拔掉網線,測試在primary節點的網絡斷開後的切換情況,通過測試,在拔掉
網線後,當主節點發現無法和standby節點無法通信後,會在log中記錄warn信息
,如果延續時間達到在ha.cf中設定的時長後,會開始釋放資源,standby節點發
現無法和主節點通信一段時間(ha.cf設定)後,開始嘗試啓動資源並將自己
active成primary節點。切換過程除ha.cf中設定的時長之外的時間段同樣非常短
。這裏容易出現custer腦分裂的問題。如果採用雙master的話,就不存在這個問
題。
3).shutdown primary主機,測試是否能夠正常切換。4). 主節點機器掉電,是
否能夠正常切換。
第一種和第三種測試方法一定要測一下。

12.管理
啓動和關閉heartbeat的方法:
/etc/init.d/hearbeat start或service heartbeat start

/etc/init.d/hearbeat stop或service heartbeat stop

手工切換:
[root@alsme_probe3rc.d]# /usr/local/share/heartbeat/hb_standby
2008/07/19_20:01:21Going standby [all].
[root@alsme_probe3rc.d]# service heartbeat status
heartbeatOK [pid 13763 et al] is running on alsme_probe3
[alsme_probe3]
手工接管
[root@alsme_probe3 rc.d]# /usr/local/share/heartbeat/hb_takeover

查看heartbeat狀態
[root@alsme_probe3rc.d]# service heartbeat status
heartbeatOK [pid 13763 et al] is running on alsme_probe3
[alsme_probe3]

用ifconfig 查看

primary ,我做的實驗顯示eth0:0 不知道爲何不是顯示的eth0:1

eth0:0    Link encap:Ethernet  HWaddr 08:00:27:A1:D1:28  
         inet addr:61.233.30.218  Bcast:61.233.30.223  Mask:255.255.255.240
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

13.其他
實際測試結果表明:如果採用myisam存儲引擎,則在primary節點當掉的時候,總
會丟失數據;而採用innodb存儲引擎時,如果 primary節點本身沒有程序往本機
寫數據的話,那麼基本上不會發生數據丟失;而如果primary節點本身有程序在寫
數據,則在當機瞬間,本機上的程序可能還會寫入部分數據,而如果是其他主機
程序連接過來的話,基本上不會發生丟數據的情況。
建議:在drbd+hb的環境中,最好是採用innodb存儲引擎,並且設置
innodb_flush_log_at_trx_commit= 1,這使得幾乎每個提交的事務都能記錄在
ib_logfile*中,在 secondary 節點上能得到恢復,減小損失。
heartbeat有兩種模式,默認的模式只支持兩個節點。如果cluster裏面有2個以上
節點的話,則需要採用cib模式,即v2 style:
1).把三個節點都加到ha.cf裏,然後在ha.cf里加上crm1
2).然後用/usr/local/lib64/heartbeat/haresources2cib.py把原來
的/usr/local/etc/ha.d/haresources 轉換成
/usr/local/var/lib/heartbeat/crm/cib.xml.
/usr/local/lib64/heartbeat/haresources2cib.pyharesources
/usr/local/var/lib/heartbeat/crm/cib.xml
3).
把haresources清空
另外如果只起一個節點的話,則service IP地址需要2分鐘才能生效。這個時間不

知道是如何控制的。


參考:http://bbs.linuxtone.org/forum.php?mod=viewthread&tid=8067


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章