本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
主動/被動負載平衡器
在此設定中,您會一次在一個執行個體上執行 HAProxy 做為負載平衡器。HAProxy 組態檔案存放在 DRBD 複寫的儲存體中,因此當 Pacemaker 容錯移轉至待命執行個體時,組態會立即可用。
重要
在繼續先決條件和叢集設定之前,請先完成 中的所有步驟。
警告
除非另有說明,否則僅在主要執行個體上執行下列命令。
在所有執行個體上安裝 HAProxy
安裝 HAProxy 並停用服務,讓 Pacemaker 可以管理它。在每個執行個體上執行此操作。
sudo apt install -y haproxy sudo systemctl disable haproxy sudo systemctl stop haproxy
設定 HAProxy 的 DRBD 掛載
將 DRBD 裝置掛載至負載平衡器的目錄。
建立掛載點目錄。在每個執行個體上執行此操作。
sudo mkdir -p /drbd/loadbalancer/
在主要執行個體上掛載 DRBD 裝置。首先從先決條件卸載先前的掛載點。
sudo umount /greengrass/v2 sudo mount /dev/drbd0 /drbd/loadbalancer/
使用 驗證掛載lsblk。您應該會看到drbd0掛載在 /drbd/loadbalancer。
設定 HAProxy
組態檔案必須位於 DRBD 掛載目錄中,才能複寫至容錯移轉執行個體。
-
將 HAProxy 組態複製到 DRBD 掛載目錄。
sudo mkdir -p /drbd/loadbalancer/etc/haproxy/ sudo cp /etc/haproxy/haproxy.cfg /drbd/loadbalancer/etc/haproxy/haproxy.cfg -
編輯 HAProxy 系統化單位檔案,以使用來自 DRBD 掛載路徑的組態。在每個執行個體上執行此操作。
sudo systemctl edit haproxy新增以下行以更新 DRBD 掛載路徑的組態檔案路徑。
[Service] Environment="CONFIG=/drbd/loadbalancer/etc/haproxy/haproxy.cfg" -
重新載入 systemd。在每個執行個體上執行此操作。
sudo systemctl daemon-reload
連接 DRBD 資源
卸載 DRBD 裝置並關閉 DRBD,讓 Pacemaker 可以管理它。在主要執行個體和所有執行個體drbdadm down上執行卸載。
# On the primary instance only sudo umount /drbd/loadbalancer # On all instances sudo drbdadm down greengrass
sudo pcs resource create drbd-greengrass \ ocf:linbit:drbd drbd_resource=greengrass \ op monitor interval=15s role=Promoted \ op monitor interval=30s role=Unpromoted
sudo pcs resource promotable drbd-greengrass \ promoted-max=1 promoted-node-max=1 clone-max=2 clone-node-max=1 notify=true
連接檔案系統資源
sudo pcs resource create fs_loadbalancer Filesystem \ device="/dev/drbd0" \ directory="/drbd/loadbalancer" \ fstype="ext4" \ op start timeout=15s \ op stop timeout=15s \ --disabled
連接 HAProxy 系統化資源
sudo pcs resource create haproxy systemd:haproxy \ op monitor interval=10s \ op start timeout=60s \ op stop timeout=60s \ --disabled
建立資源限制條件
sudo pcs constraint colocation add haproxy with fs_loadbalancer sudo pcs constraint order fs_loadbalancer then start haproxy sudo pcs constraint colocation add fs_loadbalancer with Promoted drbd-greengrass-clone sudo pcs constraint order promote drbd-greengrass-clone then start fs_loadbalancer
現在啟用具有限制的資源。
sudo pcs resource enable fs_loadbalancer sudo pcs resource enable haproxy
停用此教學課程設定的 STONITH。
sudo pcs property set stonith-enabled=false
警告
STONITH 會在此處停用,以簡化本教學課程。在生產環境中,您必須啟用 STONITH 並設定圍欄代理程式 (例如,fence_aws針對 Amazon EC2 執行個體),以防止大腦分割和資料損毀。
驗證容錯移轉
-
檢查初始狀態。確認 HAProxy 在主要執行個體上執行。
sudo pcs status -
模擬容錯移轉。將主節點置於待命模式,強制所有資源離開主節點。
sudo pcs node standbyprimary-node-name -
驗證容錯移轉。在待命執行個體上,檢查叢集狀態。DRBD、檔案系統和 HAProxy 資源現在應在具有up-to-date組態檔案的待命執行個體上執行。
sudo pcs status當失敗的執行個體復原時,負載平衡器服務會保留在待命執行個體上,除非您設定 Pacemaker 來遷移它。
-
讓節點重新上線。
sudo pcs node unstandbyprimary-node-name