Service Fabric 叢集容量規劃考量
叢集容量規劃對於每個 Service Fabric 生產環境而言都很重要。 重要考量包括:
叢集節點類型的初始數目和屬性
每個節點類型的持久性層級,其決定 Azure 基礎結構內的 Service Fabric VM 權限
叢集的可靠性層級,其判斷 Service Fabric 系統服務和整體叢集功能的穩定性
本文將逐步解說其中每個區域的重要決策點。
叢集節點類型的初始數目和屬性
「節點類型」定義叢集中一組節點 (虛擬機器) 的大小、數目和屬性。 在 Service Fabric 叢集中定義的每個節點類型都會對應到一個虛擬機器擴展集。
因為每個節點類型都是獨特的擴展集,所以其可以獨立擴增或縮減、開啟不同組的連接埠,以及具有不同的容量計量。 如需節點類型與虛擬機器擴展集之間關聯性的詳細資訊,請參閱 Service Fabric 叢集節點類型。
每個叢集都需要一個主要節點類型,其會執行重要系統服務,提供 Service Fabric 平台功能。 雖然您也可以使用主要節點類型來執行您的應用程式,但建議您只將它們專用於執行系統服務。
非主要節點類型可以用來定義應用程式角色 (例如「前端」和「後端」服務),以及用來實際隔離叢集內的服務。 Service Fabric 叢集可有零或多個非主要節點類型。
在 Azure Resource Manager 部署範本中,主要節點類型是使用 isPrimary
屬性設定於節點類型定義之下。 如需節點類型屬性的完整清單,請參閱 NodeTypeDescription 物件。 如需範例使用方式,請開啟 Service Fabric 叢集範例中的任何 AzureDeploy.json 檔案,然後在頁面上尋找搜尋 nodeTypes
物件。
節點類型規劃考量
初始節點類型的數目取決於您叢集的用途,以及在其上執行的應用程式和服務。 請考量下列問題:
您的應用程式是否有多個服務,而且其中是否有任何服務必須是公開或網際網路對向的服務?
一般應用程式包含可接收用戶端輸入的前端閘道服務,以及一或多個與前端服務溝通的後端服務,而前端服務與後端服務之間有個別網路。 這些情況通常需要三個節點類型:一個主要節點類型,以及兩個非主要節點類型 (前端服務和後端服務各有一個)。
構成應用程式的服務是否有不同的基礎結構需求,例如,更大的 RAM 或更高的 CPU 週期?
通常,前端服務可以在容量較小 (D2 之類的 VM 大小),且擁有可連線至網際網路之連接埠的 VM 上執行。 需要大量計算的後端服務可能需要在容量較大 (D4、D6、D15 等的 VM 大小),且不連線至網際網路的 VM 上執行。 針對這些服務定義不同的節點類型,可讓您更有效率且更安全地使用基礎 Service Fabric VM,並可讓它們獨立進行調整。 如需估計所需資源量的詳細資訊,請參閱 Service Fabric 應用程式的容量規劃
是否有任何應用程式服務需要擴增超過 100 個節點?
針對 Service Fabric 應用程式,單一節點類型無法擴增每個虛擬機器擴展集超過 100 個節點。 執行超過 100 個節點需要額外的虛擬機器擴展集 (因此,需要額外的節點類型)。
您的叢集會跨越可用性區域嗎?
Service Fabric 支援叢集跨越可用性區域,方法是部署釘選至特定區域的節點類型,確保應用程式的高可用性。 可用性區域需要額外的節點類型規劃和最低需求。 如需詳細資訊,請參閱主要節點類型跨可用性區域的拓撲 (機器翻譯)。
當您在初始建立叢集時,如果要判斷節點類型的數目和屬性時,請記住,一旦部署了叢集,您就可以一直新增、修改或移除 (非主要) 節點類型。 主要節點類型也可以在執行中叢集中擴增或縮減,不過,若要這樣做,您必須建立新的節點類型、將工作負載移回,然後移除原始的主要節點類型。
節點類型屬性的進一步考量是持久性層級,其判斷節點類型的 VM 在 Azure 基礎結構內具有的權限。 使用您為叢集選擇的 VM 大小,以及您為個別節點類型指派的執行個體計數,以協助決定每個節點類型的適當持久性層級,如下所述。
叢集的持久性特性
「持久性層級」會指定 Service Fabric VM 對基礎 Azure 基礎結構具有的權限。 此權限可讓 Service Fabric 暫停任何 VM 層級基礎結構要求 (例如,重新開機、重新安裝映像,或移轉),只要此要求影響 Service Fabric 系統服務和具狀態服務的仲裁需求。
重要
持久性層級是根據每個節點類型所設定。 如果未指定,則會使用「銅級」階層。 生產工作負載需要銀級或金級的持久性層級,以協助避免 VM 層級基礎結構要求遺失資料。
下表列出 Service Fabric 耐久性層級、其需求和預設用途。
耐久性層級 | 所需的 VM 數目下限 | 支援的 VM 大小 | 您對虛擬機器擴展集所做的更新 | Azure 所起始的更新和維護 |
---|---|---|---|---|
金卡 | 5 | 單一客戶專用的完整節點大小 - 可用的 VM 大小 | 可以延遲到 Service Fabric 叢集核准為止 | 每一升級網域可以暫停 2 小時,讓複本有額外時間從先前的失敗中復原 |
銀色 | 5 | 具有至少 50 GB 本機 SSD 的單一核心或多核心 VM | 可以延遲到 Service Fabric 叢集核准為止 | 無法延遲很長的期間 |
青銅卡 | 1 | 至少具有 50 GB 本機 SSD 的 VM | Service Fabric 叢集不會延遲 | 無法延遲很長的期間 |
注意
上面所提的 VM 數目下限是每個持久性層級的必要需求。 我們具有就地驗證,這將會防止建立或修改不符合這些需求的現有虛擬機器擴展集。
警告
若為銅級持久性,則無法進行作業程式映像自動升級。 雖然銀級以上的持久性層級不建議使用修補程式協調流程應用程式 (原僅適用於非 Azure 託管的叢集),但這是讓 Service Fabric 升級網域自動進行 Windows 更新的唯一選項。
重要
無論持久性層級為何,在虛擬機器擴展集上執行解除配置作業都會損毀叢集。
青銅卡
執行 Bronze 持久性的節點類型沒有權限。 這表示不會停止或延遲對具狀態工作負載造成影響的基礎結構作業。 將銅級持久性用於僅執行無狀態工作負載的節點類型。 對於生產工作負載,建議執行 Silver 或以上的層級。
銀級和金級
針對所有裝載您預期會經常縮減的節點類型,使用銀級和金級持久性,其中您想要延遲部署作業並減少容量,以利於簡化流程。 擴增案例不應該影響您選擇的持久性層級。
優點
- 減少縮減作業 (自動呼叫節點停用及 Remove-ServiceFabricNodeState) 的必要步驟數目。
- 降低由於就地 VM 大小變更作業和 Azure 基礎結構作業而造成資料遺失的風險。
缺點
- 將虛擬機器擴展集部署至其他相關 Azure 資源的速度,可能會由於您叢集中或基礎結構層級的問題,而造成逾時、延遲,或是完全封鎖。
- 因 Azure 基礎結構作業期間的自動化節點停用,而增加複本生命週期事件 (例如主要交換) 的數目。
- 當 Azure 平台軟體更新或硬體維護活動正在進行時,使節點停止服務一段期間。 您可能會在這些活動期間看到含有正在停用/已停用狀態的節點。 這會暫時減少叢集的容量,但應該不會影響叢集或應用程式的可用性。
銀級和金級持久性節點類型的最佳做法
請遵循下列建議來管理具有銀級或金級持久性的節點類型:
- 使叢集和應用程式持續保持良好的狀況,並確保應用程式會及時回應所有服務複本生命週期事件 (例如當組建中的複本陷入停滯)。
- 採用更安全的方式來進行 VM 大小變更 (擴增/縮減)。 變更虛擬機器擴展集的 VM 大小需要謹慎的規劃和注意。 如需詳細資料,請參閱擴增 Service Fabric 節點類型
- 針對所有啟用 Gold 或 Silver 持久性的虛擬機器擴展集維持至少五個節點。 如果縮減到低於此閾值,則叢集會陷入錯誤狀態,您將需要手動清除所移除節點的狀態 (
Remove-ServiceFabricNodeState
)。 - 持久性層級為 Silver 或 Gold 的每個虛擬機器擴展集,都必須對應到它自己在 Service Fabric 叢集中的節點類型。 將多個虛擬機器擴展集對應到單一節點類型,將會使 Service Fabric 叢集與 Azure 基礎結構之間的協調無法正常運作。
- 請勿隨機刪除 VM 執行個體,而一律使用虛擬機器擴展集的縮減功能。 刪除隨機的 VM 執行個體可能會在分散於升級網域和容錯網域的 VM 執行個體中產生不平衡。 此不平衡可能會嚴重影響系統對服務執行個體/服務複本正確進行負載平衡的能力。
- 如果您使用自動調整功能,請設定規則使系統一次只會針對一個節點進行縮減 (移除 VM 執行個體) 作業。 一次縮減多個執行個體並不安全。
- 如果刪除或取消配置主要節點類型上的 VM,絕對不能將已配置的 VM 計數減少至可靠性層級所需數量以下。 在持久性層級為 Silver 或 Gold 的擴展集中,這些作業將會無限期地遭到封鎖。
變更持久性層級
在特定條件約束內,可以調整節點類型持久性層級:
- 持久性層級為銀級或金級的節點類型無法降級至銅級。
- 不支援將持久性層級為 Gold 的節點類型降級為 Silver。
- 從 Bronze 升級至 Silver 或 Gold 可能需要幾小時的時間。
- 變更持久性層級時,請務必同時在虛擬機器擴展集資源的 Service Fabric 擴充設定中,和 Service Fabric 叢集資源的節點類型定義中更新層級。 這些值必須相符。
容量規劃時的另一項考量是叢集的可靠性層級,這會決定系統服務和整體叢集的穩定性,如下節所述。
叢集的可靠性特性
叢集「可靠性層級」會決定在叢集主要節點類型上執行的系統服務複本數目。 複本越多,系統服務 (以及整個叢集) 就越可靠。
重要
可靠性層級是在叢集層級設定,並決定主要節點類型的節點數目下限。 生產工作負載需要銀級 (大於或等於五個節點) 或以上的可靠性層級。
可靠性層級可以採用以下的值:
- 白金級 - 系統服務執行時,目標複本集計數為 9
- 金級 - 系統服務執行時,目標複本集計數為 7
- 銀級 - 系統服務執行時,目標複本集計數為 5
- 銅級 - 系統服務執行時,目標複本集計數為 3
以下是選擇可靠性層級的建議。 種子節點數目也會設定為適用於可靠性層的節點數目下限。
節點數目 | 可靠性層級 |
---|---|
1 | 請勿指定 reliabilityLevel 參數:系統會計算此參數。 |
3 | 青銅卡 |
5 或 6 | 銀色 |
7 或 8 | 金卡 |
9 以上 | Platinum |
當您增加或減少叢集大小 (所有節點類型的 VM 執行個體總和) 時,請考慮將叢集的可靠性從一個層級更新到另一個層級。 如此一來就會觸發變更系統服務複本集計數所需的叢集升級。 請先等候升級完成,再對叢集進行任何其他變更,例如新增節點。 您可以在 Service Fabric Explorer 上或執行 Get-ServiceFabricClusterUpgrade 監視升級的進度
可靠性的容量規劃
叢集的容量需求將由您的特定工作負載和可靠性需求決定。 本節提供一般指引來協助您開始進行容量規劃。
虛擬機器大小調整
針對生產工作負載,我們建議使用下列專案作為 VM 大小(SKU):
- 至少 2 個核心。
- 至少 50 GB 的本機 SSD。 不過,某些工作負載,例如執行 Windows 容器的工作負載,需要較大的磁碟。
根據預設,本機 SSD 會設定為 64 GB。 此大小可於叢集設定 [診斷] 區段的 MaxDiskQuotaInMB 設定中進行設定。
如需如何調整裝載於 Azure 之叢集的叢集設定指示,請參閱升級 Azure 中叢集的組態
如需如何調整裝載於 Windows 之獨立叢集的叢集設定指示,請參閱升級獨立叢集的組態
為生產工作負載選擇其他 VM 大小時,請記住下列條件約束:
- 不支援如標準 A0 的局部 / 單一核心 VM 大小。
- 基於效能考慮,不支援「A 系列」VM 大小。
- 不支援低優先順序的 VM。
- 不支援 B 系列可高載 SKU。
主要節點類型
Azure 上的生產工作負載至少需要 5 個主要節點 (VM 執行個體),且可靠性層級為銀級。 建議將叢集主要 NodeType 專用於系統服務,並使用放置條件約束,將應用程式部署到次要節點類型。
Azure 中的測試工作負載最少可執行 1 或 3 個主要節點。 若要設定單一節點叢集,請確定您的 Resource Manager 範本中已省略 reliabilityLevel
設定 (只為 reliabilityLevel
指定空字串值還不夠)。 如果您使用 Azure 入口網站設定單一節點叢集,則此設定會自動完成。
警告
單一節點叢集會以不具可靠性的特殊設定執行,其中不支援擴增。
非主要節點類型
非主要節點類型的節點數目下限取決於節點類型的特定持久性層級。 您應該根據您想要針對節點類型執行的應用程式或服務複本數目,以及視工作負載是具狀態還是無狀態而定,來規劃節點數目 (和持久性層級)。 請記住,在部署了叢集之後,您可以隨時增加或減少節點類型中的 VM 數目。
具狀態工作負載
針對使用 Service Fabric 可靠集合或可靠執行者的具狀態生產工作負載,建議使用下限和目標複本計數 5。 如此一來,在穩定狀態下,最後每個容錯網域和升級網域中會有一個複本 (來自複本集)。 一般而言,對於您用於具狀態服務的複本計數,請使用您針對系統服務所設定的可靠性層級作為其指南。
無狀態工作負載
針對無狀態生產工作負載,支援的最小非主要節點類型大小為 3,以維護仲裁,但建議的節點類型大小為 5。
下一步
在設定叢集之前,請先檢閱Not Allowed
叢集升級原則,以緩解稍後由於無法變更的系統組態設定而必須重新建立叢集的情況。
如需叢集規劃的詳細資訊,請參閱: