本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
主動/被動 AWS IoT Greengrass V2 服務
在此設定中,您一次在一個執行個體上以系統化服務 AWS IoT Greengrass V2 的形式執行。Pacemaker 會以排序資源的形式管理 DRBD 複寫、檔案系統掛載 AWS IoT Greengrass V2 和服務。如果主要執行個體失敗,Pacemaker 會將待命執行個體的 DRBD 提升為主要執行個體、掛載檔案系統並啟動 AWS IoT Greengrass V2。
重要
在繼續先決條件和叢集設定之前,請先完成 中的所有步驟。
警告
除非另有說明,否則僅在主要執行個體上執行下列命令。
連接 DRBD 資源
在繼續之前,請確認 Pacemaker 正在執行。
sudo systemctl status pacemaker
在建立任何資源之前停用 STONITH。如果未設定圍欄裝置,如果啟用 STONITH (預設值),則 Pacemaker 會拒絕啟動資源。
sudo pcs property set stonith-enabled=false
警告
STONITH 會在此處停用,以簡化本教學課程。在生產環境中,您必須啟用 STONITH 並設定圍欄代理程式 (例如,fence_aws針對 Amazon EC2 執行個體),以防止大腦分割和資料損毀。
在主要執行個體上卸載 DRBD 裝置,並將 DRBD 放在所有執行個體上,以便 Pacemaker 能夠完全控制 DRBD 生命週期。
# On the primary instance only sudo umount /greengrass/v2 # On all instances sudo drbdadm down greengrass
在 Pacemaker 中建立 DRBD 資源。
sudo pcs resource create drbd-greengrass \ ocf:linbit:drbd drbd_resource=greengrass \ op monitor interval=15s role=Promoted \ op monitor interval=30s role=Unpromoted
將資源設定為可提升,以便一次只有一個執行個體是主要執行個體。將 clone-max設定為叢集中的執行個體數目。
sudo pcs resource promotable drbd-greengrass \ promoted-max=1 promoted-node-max=1 clone-max=2 clone-node-max=1 notify=true
連接檔案系統資源
所有 AWS IoT Greengrass V2 資源都存放在 下/greengrass/v2。此步驟會告知 Pacemaker 將 DRBD 裝置掛載到提升執行個體上的該路徑。這可確保在容錯移轉期間複寫和提供 AWS IoT Greengrass V2 資料目錄。
建立處於停用狀態的檔案系統資源。所有限制條件都就緒後,您將啟用此功能。
sudo pcs resource create fs_greengrass Filesystem \ device="/dev/drbd0" \ directory="/greengrass/v2" \ fstype="ext4" \ op start timeout=15s \ op stop timeout=15s \ --disabled
驗證資源
確認已建立資源並傳播至所有執行個體。
sudo pcs status
佈建和連接 AWS IoT Greengrass V2 系統化資源
-
佈建 AWS IoT Greengrass V2。由於您先前已卸載 DRBD 裝置,請啟用維護模式並重新掛載以進行佈建:
# Enable maintenance mode to prevent Pacemaker from interfering sudo pcs property set maintenance-mode=true # Check which node Pacemaker promoted to Primary sudo pcs status | grep drbd-greengrass # On the Promoted node, mount the DRBD device sudo mount /dev/drbd0 /greengrass/v2使用自動佈建在主要執行個體 AWS IoT Greengrass V2 上佈建 。遵循使用自動資源佈建安裝 AWSAWS IoTAWS IoT Greengrass V2 核心軟體中的指示。
確定 AWS IoT Greengrass V2 已安裝至
/greengrass/v2目錄 (DRBD 掛載路徑)。佈建後,卸載裝置並停用維護模式:sudo umount /greengrass/v2 sudo pcs property set maintenance-mode=false -
停用 AWS IoT Greengrass V2 服務,讓 Pacemaker 可以管理它,而不是系統化。
sudo systemctl disable greengrass sudo systemctl stop greengrass -
在所有待命執行個體上安裝執行期先決條件。 AWS IoT Greengrass V2 需要自動佈建器在 DRBD 複寫目錄之外安裝的 Java 和其他相依性。在每個待命執行個體上安裝相同的 JDK 版本。如需先決條件的完整清單,請參閱 AWS IoT Greengrass V2 需求。
-
在其他執行個體上建立系統化單位檔案。將 AWS IoT Greengrass V2 系統化單元檔案複製到待命執行個體,讓 Pacemaker 可以在容錯移轉期間在任何執行個體上啟動服務。
# On the primary instance, view the unit file location systemctl show -p FragmentPath greengrass將該檔案複製到彼此執行個體上的相同路徑。然後,在每個待命執行個體上重新載入系統化,以便識別新的單位檔案。
# On each standby instance sudo systemctl daemon-reload -
連接 AWS IoT Greengrass V2 資源。
sudo pcs resource create greengrass systemd:greengrass \ op monitor interval=10s \ op start timeout=60s \ op stop timeout=60s \ --disabled
建立資源限制條件
建立限制順序,讓 Pacemaker 在容錯移轉期間以正確的順序管理資源。
sudo pcs constraint order promote drbd-greengrass-clone then start fs_greengrass sudo pcs constraint colocation add fs_greengrass with Promoted drbd-greengrass-clone score=INFINITY sudo pcs resource group add greengrass-group fs_greengrass greengrass sudo pcs constraint location greengrass-group prefersinstance1=200
現在啟用具有限制的資源。
sudo pcs resource enable fs_greengrass sudo pcs resource enable greengrass
驗證資源限制的最終狀態。
sudo pcs constraint show
輸出應會顯示下列限制:
-
位置限制 –
greengrass-group資源群組偏好主要執行個體。 -
主機代管限制 – 使用提升的
fs_greengrass執行drbd-greengrass-clone,並使用greengrass執行fs_greengrass。 -
順序限制 – DRBD 會在檔案系統啟動之前提升,而檔案系統也在之前啟動 AWS IoT Greengrass V2。
驗證容錯移轉
模擬容錯移轉以驗證設定是否正常運作。
-
檢查初始狀態。驗證 AWS IoT Greengrass V2 是否在主要執行個體上執行。
sudo pcs status -
模擬主要執行個體失敗。將主節點置於待命模式以觸發資源遷移。
sudo pcs node standbyprimary-node-name -
驗證容錯移轉。在待命執行個體上,檢查叢集狀態。DRBD、檔案系統 AWS IoT Greengrass V2 和資源現在應該在待命執行個體上執行。
sudo pcs status -
復原失敗的執行個體。
sudo pcs node unstandbyprimary-node-name當節點重新上線時,它會將叢集重新加入為待命執行個體。在容錯移轉期間提升的執行個體仍是主要執行個體。
疑難排解
如果資源進入失敗狀態,您可以使用下列命令進行清除並重新啟動。
sudo pcs resource cleanup