企業級高可用 (HA) 叢集需解決單點故障。本文以 CentOS 7 為例,示範雙節點 (node1、node2) 使用 Pacemaker + Corosync + PCS,配合 DRBD 複寫儲存與 VIP 浮動 IP,實現 Nginx Web 服務自動故障切換的完整部署流程。
| 角色 | 主機名 | IP | DRBD 磁碟 | VIP |
|---|---|---|---|---|
| Node 1 | node1 | 192.168.122.168 | /dev/drbd0 → /data | 192.168.122.100 |
| Node 2 | node2 | 192.168.122.169 | /dev/drbd0 → /data |
# 1. 關閉 SELinux & Firewalld (或開放必要埠)
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
systemctl disable --now firewalld
# 或開放:firewall-cmd --permanent --add-service=high-availability && firewall-cmd --reload
# 2. 設定主機名解析
cat >> /etc/hosts <
# 在 node1 執行
pcs cluster auth node1 node2 -u hacluster -p hacluster
pcs cluster setup --name mycluster node1 node2
pcs cluster start --all
pcs cluster enable --all
# 驗證
pcs status
corosync-cmapctl | grep members
# /etc/drbd.d/r0.res (兩節點相同)
resource r0 {
device /dev/drbd0;
disk /dev/sdb; # 假設兩節點各有一顆 /dev/sdb 專用
meta-disk internal;
on node1 { address 192.168.122.168:7789; }
on node2 { address 192.168.122.169:7789; }
net { protocol C; }
}
# 初始化
drbdadm create-md r0
systemctl enable --now drbd
drbdadm primary --force r0 # 僅 node1 執行一次
mkfs.ext4 /dev/drbd0
mkdir /data
mount /dev/drbd0 /data
# 1. VIP 浮動 IP
pcs resource create vip ocf:heartbeat:IPaddr2 \
ip=192.168.122.100 cidr_netmask=24 op monitor interval=10s
# 2. DRBD 主從資源 (需 master 角色)
pcs resource create drbd_r0 ocf:linbit:drbd \
drbd_resource=r0 op monitor interval=30s
pcs resource promotable drbd_r0 promoted-max=1 promoted-node-max=1 clone-max=2 clone-node-max=1 notify=true
# 3. Filesystem 掛載 (依賴 DRBD Master)
pcs resource create fs_r0 ocf:heartbeat:Filesystem \
device="/dev/drbd0" directory="/data" fstype="ext4" \
op monitor interval=20s
# 4. Nginx 服務 (依賴 Filesystem)
pcs resource create nginx systemd:nginx \
op monitor interval=15s
# 5. 資源群組與順序/共置約束
pcs resource group add webgroup vip fs_r0 nginx
pcs constraint colocation add fs_r0 with drbd_r0-clone INFINITY with-rsc-role=Master
pcs constraint order promote drbd_r0-clone then start fs_r0
pcs constraint order fs_r0 then nginx
# 6. STONITH (生產環境必須,此處示範關閉)
pcs property set stonith-enabled=false
pcs property set no-quorum-policy=ignore
# 觀察資源狀態
watch -n 2 pcs status
# 模擬 node1 故障
# node1: systemctl stop pacemaker
# 或: pcs cluster stop node1
# 應在 node2 看到 VIP、DRBD、FS、Nginx 依序啟動
# 存取 https://192.168.122.100 應正常回應
auto-promote、after-sb-0pri 等自動恢復策略,或手動 drbdadm disconnect/connect。pcs resource debug-start <資源> 查看詳細錯誤;常見為權限、路徑、SELinux。bindnetaddr、多播/單播埠 (5405)、防火牆。pcs resource defaults resource-stickiness=100 減少不必要遷移。pcs_exporter、Zabbix 模板。完成上述部署,你將擁有具備自動故障偵測、資料同步、服務秒級切換的企業級 HA 叢集。
Ubuntu 設置系統更新提醒:從 LTS 只提醒 LTS 改為任何版本皆提醒
Linux 安裝 VMware Tools 完整步驟:掛載、編譯與共享資料夾啟用
Linux grep 指令實戰範例匯總:從套件搜尋到設定檔過濾註解
CentOS 關閉 Ctrl+Alt+Del 重啟熱鍵完整設定指南 (CentOS 5/6/7/8/9)
Ubuntu 12.04 安裝 XScreenSaver 取代預設螢幕保護程式
Linux uniq 指令完全攻略:去除重複行、統計頻率與進階欄位過濾
CentOS 7 搭建 Pacemaker/Corosync 高可用叢集 (HA) 完整實戰:雙節點 DRBD + VIP + Nginx