使用 Pacemaker 建構雙節點叢集系統
想要達到系統高可用性 (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 |
安裝 Pacemaker/heartbeat
所需要的 heartbeat 跟 pacemaker 套件已經在 Ubuntu 的套件庫中
1 | # apt-get install -y heartbeat pacemaker |
設定 Heartbeat
檔案 /etc/heartbeat/ha.cf (Node1)
1 | logfacility daemon |
檔案 /etc/heartbeat/ha.cf (Node2)
1 | logfacility daemon |
在 node1 修改或建立檔案 /etc/ha.d/authkeys
1 | auth 1 |
其中 CHANGEME 要改成您自己系統的密碼。
在 node1 的命令列,執行下列指令:
1 | # chmod 600 /etc/ha.d/authkeys |
因為我們只使用兩個節點,所以需要一些特別設定
1 | # crm configure property stonith-enabled=false |
設定浮動 IP 位址
1 | # crm configure primitive ClusterIP ocf:heartbeat:IPaddr2 \ |
結論
由於沒有使用 stonith 裝置,不建議使用在需要同時修改資料的服務, 如資料庫。
只有兩個節點,當兩個節點因為網路問題,彼此無法通訊的話,有可能出現同一個服務在兩個節點都被執行。