每個節點類型的後端由虛擬機器擴展集支援,位於 Service Fabric 受控叢集中。 使用受控叢集時,您會透過 Service Fabric 受控叢集資源提供者進行任何必要的變更。 受控叢集提供者會代表您建立並抽象化所有底層的叢集資源。 讓資源提供者管理資源可協助簡化叢集節點類型的部署與管理。 管理可防止作業錯誤,例如刪除種子節點,並協助套用最佳做法,例如驗證虛擬機器 (VM) SKU 可安全使用。
本文件其餘部分說明如何調整各種設定,包括:
- 建立節點類型
- 調整節點類型執行個體計數
- 啟用自動 OS 映像升級
- 變更 OS 映像
- 設定放置屬性
- 設定電腦名稱首碼
本文件著重於使用 Azure 入口網站與 Azure Resource Manager 範本進行變更。
附註
在變更進行中時,您將無法修改節點類型。 建議讓任何要求的變更完成後再進行下一個變更。
新增節點類型
您可以透過入口網站、Azure Resource Manager 範本或 PowerShell,將節點類型新增至 Service Fabric 受控叢集。
使用入口網站新增
附註
您只能使用入口網站新增次要節點類型
登入 Azure 入口網站
瀏覽至您的叢集資源概觀頁面。
在
Settings區段下選取Node types
選取頂端的
Add,填入必要資訊,然後在底部選取「新增」,就完成了!等待新的節點類型新增完成
使用 ARM 範本新增
新增另一個資源類型 Microsoft.ServiceFabric/managedclusters/nodetypes,填入必要值並部署叢集,設定才會生效。
- Service Fabric 受控叢集資源的 apiVersion 應為 2021-05-01 或更新版本。
- 如果您打算取代現有的主要節點類型,請務必將
isPrimary設為true。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeType2Name'))]",
"location": "[resourcegroup().location]",
"dependsOn": [
"[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
],
"properties": {
"isPrimary": false,
"vmImagePublisher": "[parameters('vmImagePublisher')]",
"vmImageOffer": "[parameters('vmImageOffer')]",
"vmImageSku": "[parameters('vmImageSku')]",
"vmImageVersion": "[parameters('vmImageVersion')]",
"vmSize": "[parameters('nodeType2VmSize')]",
"vmInstanceCount": "[parameters('nodeType2VmInstanceCount')]",
"dataDiskSizeGB": "[parameters('nodeType2DataDiskSizeGB')]",
"dataDiskType": "[parameters('nodeType2managedDataDiskType')]"
}
}
如需兩個節點類型組態的範例,請參閱我們的範例雙節點類型 ARM 範本。
使用 PowerShell 新增
若要建立新的節點類型,您需要定義下列屬性:
- 資源群組:叢集所在的資源群組
- 叢集名稱:受控叢集的名稱
- 節點類型名稱:在叢集中與任何既有節點類型都不同的唯一名稱。
- 執行個體計數:新節點類型的初始節點數。
- VM 大小:節點的 VM SKU。 如果未指定,會使用預設值 Standard_D2。
附註
如果要新增主要節點類型,必須使用 -Primary 屬性。
$resourceGroup = "myResourceGroup"
$clusterName = "mysfcluster"
$nodeTypeName = "nt2"
$vmSize = "Standard_D2_v2"
New-AzServiceFabricManagedNodeType -ResourceGroupName $resourceGroup -ClusterName $clusterName -Name $nodeTypeName -InstanceCount 3 -vmSize $vmSize
移除節點類型
您可以使用入口網站或 PowerShell 移除 Service Fabric 受控叢集節點類型。
附註
若要從 Service Fabric 受控叢集中移除主要節點類型,您必須使用 PowerShell,且必須有多個主要節點類型可用。
使用入口網站移除
登入 Azure 入口網站
瀏覽至您的叢集資源概觀頁面。 範例概觀頁面
在
Settings區段下選取Node types
選取您要移除的
Node Type,然後在頂端選取Delete。
使用 PowerShell 移除
附註
如果移除主要節點類型用於升級 SKU 等情境,將需要數小時,且可使用 SFX 監視進度。 種子節點會在每次升級網域 (UD) 走訪時一次移轉一個節點。
若要移除節點類型,您需要定義下列屬性:
- 資源群組:叢集所在的資源群組
- 叢集名稱:受控叢集的名稱
- 節點類型名稱:在叢集中與任何既有節點類型都不同的唯一名稱。
$resourceGroup = "myResourceGroup"
$clusterName = "myCluster"
$nodeTypeName = "nt2"
Remove-AzServiceFabricManagedNodeType -ResourceGroupName $resourceGroup -ClusterName $clusterName -Name $nodeTypeName
調整節點類型的規模
您可以使用入口網站、ARM 範本或 PowerShell 調整 Service Fabric 受控叢集節點類型的規模。 如果您想要完全自動化的解決方案,也可以為次要節點類型設定自動調整規模。
附註
- 主要節點類型無法設定為自動調整規模,您只能將它設定為手動調整規模。
- 對於主要節點類型,Basic SKU 叢集無法低於 3 個節點,Standard SKU 叢集無法低於 5 個節點。
使用入口網站調整規模
在本逐步解說中,您將了解如何使用入口網站修改節點類型的節點計數。
登入 Azure 入口網站
瀏覽至您的叢集資源概觀頁面。
在
Settings區段下選取Node Types選取您要修改的
Node type name如有需要,檢閱並更新節點類型屬性。
選取
Manage node type scaling以設定調整規模設定,並在自訂自動調整規模與手動調整規模選項之間選擇。 自動調整規模是內建功能,可在需求變更時協助應用程式維持最佳效能。 您可以選擇手動將資源調整到特定執行個體計數,或透過自訂自動調整規模原則,根據指標臨界值進行調整。 您也可以排程在指定時段內調整執行個體計數。 深入了解 Azure 自動調整規模或檢視操作說明影片。自訂自動調整規模:選取適當的
scale mode以定義自訂自動調整規模原則Scale to a specific instance count或Scale based on a metric。 後者是以指標觸發規則為基礎,例如當 CPU 百分比高於 70% 時,將執行個體計數增加 1。 定義原則後,在頂端選取Save。
手動調整規模:將
Node count調整為您想要的新值,然後在頂端選取Save。 在此螢幕擷取畫面中,該值原為3,並調整為5。
在底部選取
Apply,以將這些已儲存的設定套用到節點類型。Provisioning state會顯示Updating狀態直到完成。 完成時,它會再次顯示Succeeded。
使用範本調整節點類型的規模
若要使用 ARM 範本調整節點類型的節點計數,請將 vmInstanceCount 屬性調整為新值,並部署叢集,設定才會生效。 叢集會自動開始升級。 完成後,您會看到新增的節點。
- Service Fabric 受控叢集資源的 apiVersion 應為 2021-05-01 或更新版本。
附註
如果調整規模要求違反必要的最低值,受控叢集提供者將會封鎖調整並傳回錯誤。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"properties": {
...
"vmInstanceCount": "[parameters('nodeTypeVmInstanceCount')]",
...
}
}
使用 PowerShell 調整節點類型的規模
變更執行個體計數,以增加或減少您要調整規模之節點類型的節點數。 您可以在叢集部署的 Azure Resource Manager 範本 (ARM 範本) 中找到節點類型名稱,或在 Service Fabric Explorer 中找到。
$resourceGroup = "myResourceGroup"
$clusterName = "mysfcluster"
$nodeTypeName = "FE"
$instanceCount = "7"
Set-AzServiceFabricManagedNodeType -ResourceGroupName $resourceGroup -ClusterName $clusterName -name $nodeTypeName -InstanceCount $instanceCount -Verbose
叢集會自動開始升級。 完成後,您會看到新增的節點。
啟用自動 OS 映像升級
您可以選擇啟用自動 OS 映像升級,以升級執行受控叢集節點的虛擬機器。 雖然虛擬機器擴展集資源由 Service Fabric 受控叢集代表您管理,但是否啟用自動 OS 映像升級取決於您。 如同傳統 Service Fabric 叢集,受控叢集節點預設不會升級,以避免對叢集造成非預期的中斷。
附註
自動 OS 映像升級同時支援 Marketplace 映像與自訂映像。
若要啟用自動 OS 升級:
- 使用
2021-05-01或更新版本的 Microsoft.ServiceFabric/managedclusters 與 Microsoft.ServiceFabric/managedclusters/nodetypes 資源 apiVersion - 將叢集的
enableAutoOSUpgrade屬性設為 true - 將叢集 nodeTypes 的資源屬性
vmImageVersion設為 latest
例如:
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters",
...
"properties": {
...
"enableAutoOSUpgrade": true
},
},
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
...
"properties": {
...
"vmImageVersion": "latest",
...
}
}
}
啟用後,Service Fabric 會開始查詢並追蹤受控叢集中的 OS 映像版本。 如果有新的 OS 版本可用,叢集節點類型 (虛擬機器擴展集) 會一次升級一個。 只有在確認沒有叢集節點 OS 映像升級正在進行時,才會進行 Service Fabric 執行階段升級。
如果升級失敗,Service Fabric 會在 24 小時後重試,最多重試三次。 與傳統 (非受控) Service Fabric 升級相同,不健全的應用程式或節點可能會阻礙 OS 映像升級。
如需更多映像升級資訊,請參閱使用 Azure 虛擬機器擴展集進行自動 OS 映像升級。
修改節點類型的 OS SKU
Service Fabric 受控叢集可讓您就地修改節點類型的 OS SKU。 這個流程適用於從 Windows 2019 移轉到 Windows 2022,或您想從 Server (Core) SKU 切換到含桌面體驗的 Server SKU 等情境。
使用入口網站修改 OS SKU
在本逐步解說中,您將了解如何使用入口網站修改節點類型的 OS 映像。
登入 Azure 入口網站
瀏覽至您的叢集資源概觀頁面。 範例概觀頁面
在
Settings區段下選取Node Types選取您要修改的
Node type name將
OS Image調整為您想要的新值,然後在底部選取Apply。 關於新增自訂作業系統映像的說明,請參閱 自訂映像部署文件。Provisioning state會顯示Updating狀態,並一次處理一個升級網域。 完成時,它會再次顯示Succeeded。
使用範本修改 OS SKU
若要使用 ARM 範本修改節點類型所使用的 OS 映像,請將 vmImageSku 屬性調整為新值,並部署叢集,設定才會生效。 受控叢集提供者會依升級網域重新製作每個執行個體的映像。
- Service Fabric 受控叢集資源的 apiVersion 應為 2021-05-01 或更新版本。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"properties": {
...
"vmImagePublisher": "[parameters('vmImagePublisher')]",
"vmImageOffer": "[parameters('vmImageOffer')]",
"vmImageSku": "[parameters('vmImageSku')]",
"vmImageVersion": "[parameters('vmImageVersion')]",
...
}
}
設定節點類型的放置屬性
放置屬性可用來確保特定工作負載只會在叢集中某些節點類型上執行。 Service Fabric 受控叢集支援透過入口網站、ARM 範本或 PowerShell 設定這些屬性。
使用入口網站設定放置屬性
在本逐步解說中,您將了解如何使用入口網站修改節點類型的放置屬性。
登入 Azure 入口網站
瀏覽至您的叢集資源概觀頁面。 範例概觀頁面
在
Settings區段下選取Node Types選取您要修改的
Node type name在
Placement properties區段中,新增您想要的名稱與值,然後在底部選取Apply。 在此螢幕擷取畫面中,使用了NameSSD_Premium,且Value為true。
Provisioning state會顯示Updating狀態直到完成。 完成時,它會再次顯示Succeeded。
使用範本設定放置屬性
若要使用 ARM 範本調整節點類型的放置屬性,請將 placementProperties 屬性調整為一或多個新值,並部署叢集,設定才會生效。 下列範例顯示為節點類型設定三個值。
- Service Fabric 受控叢集資源的 apiVersion 應為 2021-05-01 或更新版本。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"properties": {
"placementProperties": {
"PremiumSSD": "true",
"NodeColor": "green",
"SomeProperty": "5"
}
}
}
使用 PowerShell 設定放置屬性
下列範例會更新並覆寫指定節點類型的任何既有放置屬性。
$rgName = "testRG"
$clusterName = "testCluster"
$NodeTypeName = "nt1"
Set-AzServiceFabricManagedNodeType -ResourceGroupName $rgName -ClusterName $clusterName -name $NodeTypeName -PlacementProperty @{NodeColor="Red";SomeProperty="6";} -Verbose
修改節點類型的 VM SKU
若要使用 ARM 範本修改節點類型所使用的 VM SKU 大小,請將 vmSize 屬性調整為新值,並部署叢集,設定才會生效。 受控叢集提供者會依升級網域重新製作每個執行個體的映像。 如需 SKU 選項清單,請參閱 VM 大小 - Azure 虛擬機器 | Microsoft Learn。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"properties": {
...
"vmSize": "[parameters('vmImageVersion')]",
...
}
}
設定多個受控磁碟
Service Fabric 受控叢集預設會設定一個受控磁碟。 您可以藉由設定下列選用屬性與值,為叢集中的節點類型新增更多受控磁碟。 您可為每個磁碟指定磁碟機代號、磁碟類型與大小。
若要設定更多受控磁碟,請在 Resource Manager 範本中宣告 additionalDataDisks 屬性與必要參數,如下所示:
功能需求
- Lun 必須對每個磁碟都唯一,且不能使用保留的 lun 0 或 1
- 磁碟機代號不能使用保留代號 C 或 D,而且建立後無法修改。 如果未指定,預設會使用 S。
- 必須指定支援的磁碟類型
- Service Fabric 受控叢集資源的 apiVersion 應為 2022-01-01 或更新版本。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"properties": {
"additionalDataDisks": {
"lun": "2",
"diskSizeGB": "50",
"diskType": "Standard_LRS",
"diskLetter": "S"
}
}
}
查看可用參數的完整清單。
設定 Service Fabric 資料磁碟機代號
Service Fabric 受控叢集預設會設定 Service Fabric 資料磁碟,並在節點類型的所有節點上自動設定磁碟機代號。 您可以藉由設定這個選用屬性與值,指定並取得 Service Fabric 資料磁碟的磁碟機代號,以符合特定的磁碟機代號對應需求。
功能需求
- 磁碟機代號不能使用保留代號 C 或 D,而且建立後無法修改。 如果未指定,預設會使用 S。
- Service Fabric 受控叢集資源的 apiVersion 應為 2022-01-01 或更新版本。
{
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"properties": {
"dataDiskLetter": "S"
}
}
}
設定電腦名稱首碼
需要較長節點類型名稱以取得更詳細描述效益的客戶,會受益於電腦名稱首碼。
附註
電腦名稱首碼僅適用於 Service Fabric API 版本 2024-04-01 or later。
請在 ARM 範本中實作下列變更以設定電腦名稱首碼:
{
"apiVersion": "2024-04-01",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', 'BE-testResourceGroup-testRegion-test')]",
"location": "[parameters('clusterLocation')]",
"dependsOn": [
"[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
],
"properties": {
"isPrimary": false,
"dataDiskSizeGB": "[parameters('dataDiskSizeGB')]",
"vmImagePublisher": "[parameters('vmImagePublisher')]",
"vmImageOffer": "[parameters('vmImageOffer')]",
"vmImageSku": "[parameters('vmImageSku')]",
"vmImageVersion": "[parameters('vmImageVersion')]",
"vmSize": "[parameters('vmSize')]",
"vmInstanceCount": "[parameters('vmInstanceCount')]",
"computerNamePrefix": "computerNamePrefix"
}
}