問題背景:
在系統中有乙個資料收集服務(facebook scribe)的彙總節點,這個節點必須保證較高的可靠性。為了防止伺服器down掉影響整個資料收集流程,必須消除這個收集單點。並且資料傳送方只信任彙總節點上的乙個ip位址,我們的收集服務必須監聽在這個ip位址上。由於這些限制,我們需要選擇一種ip漂移機制來實現資料收集服務的單點消除;經過調研,我們最終選擇了比較成熟的heartbeat來實現這種機制。
伺服器系統環境:centos release 5.8 (final)
伺服器名:
aggr00 (主節點)
report (備用節點)
首先,我們必須在主節點和備用節點上都安裝heartbeat軟體:
yum install heartbeat
將heartbeat預設的配置檔案拷貝到heartbeat的配置目錄下:
cp /usr/share/doc/heartbeat-2.1.4/ha.cf /etc/ha.d/
cp /usr/share/doc/heartbeat-2.1.4/haresources /etc/ha.d/
cp /usr/share/doc/heartbeat-2.1.4/authkeys /etc/ha.d/
修改ha.cf
在ha.cf中找到以下的配置項,去掉注釋符(#)即可:
#u***ort 694
#bcast eth0 # linux
這樣,你將使用udp694埠來進行廣播或單播通訊;你將使用裝置eth0來傳送廣播心跳,一般會使用繫結了內網ip位址的一塊網絡卡,我這裡的設定修改為eth1。當然,這裡也可以寫多個裝置,例如:bcast eth0 eth1。
繼續在ha.cf中找到以下配置項,並去掉其注釋符號:keepalive, deadtime, initdead。它們預設的配置如下:
keepalive 2
deadtime 30
initdead 120
其中,initdead指定了在heartbeat後台程序啟動之後,它會在等待120秒之後才會啟動主節點上的資源,或者做一些備用節點上出現問題的設想;keepalive指定了heartbeat之間的秒數;deadtime則指定了備用節點30秒內沒有收到主節點的心跳,則備用節點就認為主節點死掉了。
然後,我們在ha.cf中指明,主節點和備用節點,在ha.cf的最後一行加入:
node aggr00 report
至此,我們對ha.cf的修改已經結束了。
修改haresources
這個檔案標明了主節點應該擁有的各種資源名。什麼是資源?我們伺服器的ip就是乙個資源;我們監聽在這個ip之上的服務也是資源!在這個目錄下你會發現一堆資源:
/etc/ha.d/resource.d
ip漂移就是油其中的ipaddr來實現的!而我們scribe的資源並沒有在其中,所以我們按照規定的格式,將scribe也加入其中,以下是scribe資源指令碼的內容:
#!/bin/bash
logger $0 called with $1
case $1 in
start)
/usr/local/services/biutility/management start
;;stop)
/usr/local/services/biutility/management stop
;;status)
a=`/bin/netstat -ntlp | grep scribed`
if [ -z "$a" ]; then
echo "down"
else
echo "running"
fi;;
esac
將這個儲存到乙個叫做scribe的檔案中,將檔案儲存在/etc/ha.d/resource.d下,還有,別忘記加上執行許可權。至此你已經描述了你的scribe資源,下面就需要將這些資源配置到haresources中了,開啟haresources,在檔案的最後追加以下兩行:
aggr00 scribe
aggr00 ***.***.***.***
當然,其中的scribe就是我們剛剛加入的資源;後面的那個ip位址就是需要動態漂移的共享ip!
修改authkeys
在authkeys的最後新增如下:
auth 1
1 sha1 testlab
修改完之後,將配置目錄下的所有檔案和資料夾同步到備份節點上。至此所有的配置工作都已經完成。分別在主節點和備份節點上啟動heartbeat後台服務:
/etc/init.d/heartbeat start
然後,可以在主節點上通過ip addr 檢視eth0應該多出了乙個ip位址,這個ip位址就是我們在haresources中配置的***.***.***.***,如果關閉主節點上的heartbeat服務,則這個ip會在備份節點的eth0上出現,實現ip漂移。
heartbeat高可用軟體服務應用指南
目錄第8章 heartbeat高可用軟體服務及實戰配置 1 8.1 heartbeat介紹 3 8.1.1 heartbeat作用 3 8.1.2 heartbeat工作原理 3 8.1.3 heartbeat的心跳連線 3 8.1.4 heartbeat裂腦 4 8.1.4.1什麼是裂腦?4 8....
使用 DISTINCT 消除重複項
例如,如果在titleauthor中選擇所有作者 id 時未使用 distinct,那麼將會返回下列行 其中包括一些重複的行 use pubs select au id from titleauthor下面是結果集 au id 172 32 1176 213 46 8915 213 46 8915 ...
使用 DISTINCT 消除重複項
distinct 關鍵字可從 select 語句的結果中除去重複的行。如果沒有指定 distinct,那麼將返回所有行,包括重複的行。例如,如果在titleauthor中選擇所有作者 id 時未使用 distinct,那麼將會返回下列行 其中包括一些重複的行 use pubs select au i...