Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

CentOS 7 搭建 Pacemaker/Corosync 高可用叢集 (HA) 完整實戰:雙節點 DRBD + VIP + Nginx

編輯:關於 Linux

企業級高可用 (HA) 叢集需解決單點故障。本文以 CentOS 7 為例,示範雙節點 (node1、node2) 使用 Pacemaker + Corosync + PCS,配合 DRBD 複寫儲存與 VIP 浮動 IP,實現 Nginx Web 服務自動故障切換的完整部署流程。

架構規劃

角色主機名IPDRBD 磁碟VIP
Node 1node1192.168.122.168/dev/drbd0 → /data192.168.122.100
Node 2node2192.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

配置 DRBD 儲存複寫

# /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

配置叢集資源 (VIP + DRBD + Filesystem + Nginx)

# 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 應正常回應

常見問題

  • DRBD Split-brain:啟用 auto-promote、after-sb-0pri 等自動恢復策略,或手動 drbdadm disconnect/connect。
  • 資源卡在 Stopped:pcs resource debug-start <資源> 查看詳細錯誤;常見為權限、路徑、SELinux。
  • Corosync 環網不通:檢查 bindnetaddr、多播/單播埠 (5405)、防火牆。
  • 生產建議

    • 啟用 STONITH (IPMI/ilo/APC/VMware fence agents) 避免雙主。
    • 配置 pcs resource defaults resource-stickiness=100 減少不必要遷移。
    • 監控整合:Prometheus + pcs_exporter、Zabbix 模板。
    • 定期演練故障切換與資料一致性檢查。

    完成上述部署,你將擁有具備自動故障偵測、資料同步、服務秒級切換的企業級 HA 叢集。

    Copyright © Windows教程網 All Rights Reserved