Skip to content

使用Pacemaker 建構雙節點叢集系統

Published: 4 分鐘

想要達到系統高可用性(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 root@node2:/etc/ha.d/
# ssh root@node2 "chmod 600 /etc/ha.d/authkeys"
# ssh root@node2 "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 裝置,不建議使用在需要同時修改資料的服務, 如資料庫。 只有兩個節點,當兩個節點因為網路問題,彼此無法通訊的話,有可能出現同一個服務在兩個節點都被執行。

郭信義 (Sam Kuo)

奔騰網路科技技術長,專長分散式系統、Web 應用與雲端服務架構、設計、開發、部署與維運。工作之餘,喜歡關注自由軟體的發展與應用,偶爾寫一下部落格文章。

你可能會有興趣的文章