想要達到系統高可用性 (high availability) 的需求 , 自然免不了需要採用現成的解決方案 。 本文說明如何利用 Pacemaker/heartbeat 來建構一個雙節點的從其系統 。

系統需求

  • 作業系統 : Ubuntu 10.04 LTS 64-bit
  • Pacemaker 版本 : 1.0.8+hg15494-2ubuntu2
  • Heartbeat 版本 : 1:3.0.3-1ubuntu1

目標

完成後 , 兩個節點 (node) 將可以彼此監控狀態 , 當某節點發生錯誤時 , 將在該節點上執行的服務自動轉移到另一個節點 。 同時為了示範目的 , 某個浮動 IP 位址會綁定到其中一個節點 。

假設

假設有兩台伺服器 ( 不管事實體還是虛擬 ), 其名稱

伺服器 ( 一 ) 伺服器 ( 二 )
主機名稱 node1 node2
內部 IP 位址 192.168.1.10 192.168.1.11

浮動 IP 位址 : 192.168.1.100

安裝 Pacemaker/heartbeat

所需要的 heartbeat 跟 pacemaker 套件已經在 Ubuntu 的套件庫中

# apt-get install -y heartbeat pacemaker

設定 Heartbeat

檔案 /etc/heartbeat/ha.cf (Node1)

logfacility daemon
keepalive 2
deadtime 15
warntime 5
initdead 120
udpport 694
ucast eth0 192.168.1.11
auto_failback off
node node1
node node2
use_logd yes
crm respawn

檔案 /etc/heartbeat/ha.cf (Node2)

logfacility daemon
keepalive 2
deadtime 15
warntime 5
initdead 120
udpport 694
ucast eth0 192.168.1.10
auto_failback off
node node1
node node2
use_logd yes
crm respawn

在 node1 修改或建立檔案 /etc/ha.d/authkeys

auth 1
1 sha1 CHANGEME

其中 CHANGEME 要改成您自己系統的密碼 。 在 node1 的命令列 , 執行下列指令 :

# chmod 600 /etc/ha.d/authkeys
# service heartbeat start
# scp /etc/ha.d/authkeys [email protected]:/etc/ha.d/
# ssh [email protected] "chmod 600 /etc/ha.d/authkeys"
# ssh [email protected] "service heartbeat start"

因為我們只使用兩個節點 , 所以需要一些特別設定

 # crm configure property stonith-enabled=false
 # crm configure property no-quorum-policy=ignore

設定浮動 IP 位址

 # crm configure primitive ClusterIP ocf:heartbeat:IPaddr2 \
     params ip=192.168.1.100 cidr_netmask=32 \
     op monitor interval=30s

結論

由於沒有使用 stonith 裝置 , 不建議使用在需要同時修改資料的服務 , 如資料庫 。 只有兩個節點 , 當兩個節點因為網路問題 , 彼此無法通訊的話 , 有可能出現同一個服務在兩個節點都被執行 。


知識不會因為傳播而減少,喜歡這篇文章請幫忙分享。


本篇文章由 Sampot (山姆鍋) 發表,下面是有關他的連結:

評論

您的反饋是我寫作的最大動力,歡迎參與討論。P.S. 我會優先回答張貼在這裡的問題。

comments powered by Disqus