1. 程式人生 > 實用技巧 >【Azure微服務 Service Fabric 】如何轉移Service Fabric叢集中的種子節點(Seed Node)

【Azure微服務 Service Fabric 】如何轉移Service Fabric叢集中的種子節點(Seed Node)

注意:在對Service Fabric的節點做操作之前,請務必確認是否是種子節點(Seed Node)且當前節點的數量是否與SF的持久層要求的數量一致。

可靠性級別是 Service Fabric 群集資源的一個屬性。 對於各個節點型別,此屬性的配置必須相同。 該屬性控制群集系統服務的複製因子,是群集資源級別的設定。
可靠性級別決定了主節點型別必須具有的節點數下限。 可靠性層可以採用以下值:

  • 白金:執行包含 7 個目標副本集和 9 個種子節點的系統服務。
  • 金:執行包含 7 個目標副本集和 7 個種子節點的系統服務。
  • 銀:執行包含 5 個目標副本集和 5 個種子節點的系統服務。
  • 銅:執行包含 3 個目標副本集和 3 個種子節點的系統服務。

建議的最低可靠性級別為“銀”級。

在使用Service Fabric的過程中,有時會遇見某個節點出現問題,一般情況下,SF叢集被設計為高可用叢集,當單個節點停機期間會有其他的節點來接管。但是有時候也需要把種子節點轉移出去,當有這種需求的時候,可以參考一下步驟:

準備條件:

執行步驟:

一:確保node type下的虛機數量滿足reliability tier的最低需求,並同時滿足至少有一個以上的none-seed node

二:使用powershell 或者 sfctl 停用要移除的seed node (以_nt1vm_5為例)

# power shell
Disable-ServiceFabricNode -NodeName _nt1vm_5 -Intent RemoveNode -Force
# sfctl sfctl node disable
--node-name _nt1vm_5 --deactivation-intent RemoveNode

三:等待seed node狀態由 ‘disabling’ 轉換為 ‘disabled’

等待操作觸發的cluster upgrade 完成,以及_nt1vm_5 轉換為none-seed node

四:在VMSS介面直接移除對應的虛機 (執行在Linux上的Service Fabric Cluster不支援sfctl node transition命令)

五:使用powershell 或者 sfctl 移除node state

#power shell
Remove-ServiceFabricNodeState -NodeName "_nt1vm_5"
#sfctl
sfctl node remove-state --node-name _nt1vm_5

參考資料:

導致群集故障的隨機故障https://docs.azure.cn/zh-cn/service-fabric/service-fabric-disaster-recovery#random-failures-that-lead-to-cluster-failures

Service Fabric 具有種子節點的概念 。種子節點可以維護基礎群集的可用性。

種子節點可以與其他節點簽署租約,在發生某些型別的故障時充當斷路器,這樣可確保群集保持啟動狀態。如果隨機故障刪除了群集中的大部分種子節點並且無法快速將其恢復,則群集會自動關閉。群集隨後會發生故障。

在 Azure 中,Service Fabric 資源提供程式管理 Service Fabric 群集配置。預設情況下,資源提供程式在主節點型別的容錯域和升級域之間分配種子節點 。如果將主節點型別標記為“銀”或“金”級耐久性,則在通過縮減主節點型別或手動刪除種子節點的方式刪除種子節點時,群集會嘗試從主節點型別的可用容量中提升另一個非種子節點。如果你的可用容量少於群集可靠性級別對主節點型別的要求,則此嘗試會失敗。

在獨立 Service Fabric 群集和 Azure 中,主節點型別是執行種子的節點型別。定義主節點型別時,Service Fabric 會自動利用為每個系統服務建立最多九個種子節點和七個副本時提供的節點數。如果一組隨機故障同時導致其中的大部分副本關閉,則系統服務會進入仲裁丟失狀態。如果大部分種子節點丟失,群集會在不久之後關閉。

https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-best-practices-capacity-scaling#scaling-in

https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-cluster-capacity

https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-cluster-scale-in-out#manually-remove-vms-from-a-node-typevirtual-machine-scale-set