View a markdown version of this page

主動/被動負載平衡器 - AWS IoT Greengrass

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

主動/被動負載平衡器

在此設定中,您會一次在一個執行個體上執行 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 掛載目錄中,才能複寫至容錯移轉執行個體。

  1. 將 HAProxy 組態複製到 DRBD 掛載目錄。

    sudo mkdir -p /drbd/loadbalancer/etc/haproxy/ sudo cp /etc/haproxy/haproxy.cfg /drbd/loadbalancer/etc/haproxy/haproxy.cfg
  2. 編輯 HAProxy 系統化單位檔案,以使用來自 DRBD 掛載路徑的組態。在每個執行個體上執行此操作。

    sudo systemctl edit haproxy

    新增以下行以更新 DRBD 掛載路徑的組態檔案路徑。

    [Service] Environment="CONFIG=/drbd/loadbalancer/etc/haproxy/haproxy.cfg"
  3. 重新載入 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 執行個體),以防止大腦分割和資料損毀。

驗證容錯移轉

  1. 檢查初始狀態。確認 HAProxy 在主要執行個體上執行。

    sudo pcs status
  2. 模擬容錯移轉。將主節點置於待命模式,強制所有資源離開主節點。

    sudo pcs node standby primary-node-name
  3. 驗證容錯移轉。在待命執行個體上,檢查叢集狀態。DRBD、檔案系統和 HAProxy 資源現在應在具有up-to-date組態檔案的待命執行個體上執行。

    sudo pcs status

    當失敗的執行個體復原時,負載平衡器服務會保留在待命執行個體上,除非您設定 Pacemaker 來遷移它。

  4. 讓節點重新上線。

    sudo pcs node unstandby primary-node-name