閱讀828 返回首頁    go 阿裏雲 go 技術社區[雲棲]


容器服務節點重啟操作最佳實踐

直接重啟節點可能會導致集群出現異常。比如,對於 Swarm Mode 集群內的 Manager 節點,如果 Manager 健康節點數小於 2,則可能會導致集群無法自愈,最終導致集群不可用。本文結合阿裏雲曆史案例經驗,說明了在對容器服務進行主動運維等場景下,需要重啟節點時的操作最佳實踐。

檢查業務高可用配置

在重啟容器服務節點前,建議先檢查或修正如下業務配置,以避免節點重啟觸發單點異常,進而導致業務可用性受損:
1. 配置數據持久化策略
建議為日誌、業務配置等重要數據配置外部卷進行數據持久化,以避免容器重建後,原有容器被刪除引發數據丟失。 關於容器服務數據卷的使用,可以參閱 產品文檔
2. 配置重啟策略
建議為相應業務服務配置 restart: always 自重啟策略,以便節點重啟後,相應容器能自動拉起。
3. 配置高可用策略
建議結合產品架構,為相應業務配置 可用區調度(availability:az 屬性)指定節點調度(affinity、constraint 屬性)指定多節點調度(constraint 屬性) 等親和性、互斥性策略,以避免由於相應節點重啟引發單點異常。比如,對於數據庫業務,建議主備或多實例部署,然後結合前述特性,確保不同實例落在不同節點上,並且相關節點不會同時重啟。

操作最佳實踐

建議首先參閱前述說明,檢查業務高可用性配置。然後 在每個節點上(切忌同時對多個節點進行操作),依次按如下步驟操作:
1. 快照備份
建議先對節點所有關聯磁盤創建最新快照進行備份,以避免由於長時間未重啟服務器,導致節點關機後啟動過程中出現異常導致業務可用性受損。
2. 驗證業務容器配置有效性(Swarm Mode 集群忽略):
對於非 Swarm Mode 集群,重啟節點上的相應業務容器,確保容器能正常被重新拉起。

說明
Swarm Mode 集群的最小控製操作單元是*服務*。所以,不能直接在 Swarm Mode 集群節點上通過 docker start/stop 等操作直接處理業務容器,否則會引發相關報錯。正確的做法,是在* 容器服務管理控製台 *通過重新 *調整應用的 REPLICAS *的方式來對業務做自動調整。
3. 修改節點角色(Swarm Mode 集群)
如果相應節點是 Swarm Mode 集群內的 Manager 節點,則先將其 設置為 Worker 節點
4. 驗證 Docker Engine 運行有效性
嚐試重啟 docker daemon ,確保 docker enginger 能正常重新啟動。
5. 執行相關運維操作
執行計劃內的相關運維操作,比如業務代碼更新、係統補丁安裝、係統配置調整等。
6. 重啟節點
在控製台或係統內部,正常重啟節點。
7. 重啟後狀態檢查
重啟完節點後,到* 容器服務管理控製台 *,檢查節點健康狀態,檢查業務容器運行狀態。
8. 回調節點角色(Swarm Mode 集群)
如果相應節點是 Swarm Mode 集群內的 Manager 節點,則先將其重新 設置為 Manager 節點

最後更新:2017-10-17 17:34:42

  上一篇:go  使用 Dawn 構建 React 項目
  下一篇:go  如何實現SchedulerX調用