共用方式為


Service Fabric 受控叢集的自動調整簡介

自動調整提供了絕佳的彈性,並且可讓您在次要節點類型上依需求增加或減少節點。 這樣的自動化和彈性行為可藉由監視和最佳化用來處理工作負載的節點數目,降低管理負擔和潛在的業務衝擊。 您可以設定工作負載的規則,並讓自動調整處理其餘部分。 符合那些定義的閾值時,自動調整規則就會採取動作來調整節點類型的容量。 自動調整可以隨時啟用、停用或設定。 本文提供範例部署,並說明如何啟用或停用自動調整,以及如何設定範例自動調整原則。

需求和支援的計量:

  • Service Fabric 受控叢集資源 apiVersion 應為 2022-01-01 或後續版本。
  • 叢集 SKU 必須是「標準」。
  • 只能設定於叢集中的次要節點類型。
  • 為某個節點類型啟用自動調整後,請在重新部署資源時將 vmInstanceCount 屬性設定為 -1
  • 僅支援 Azure 監視器發佈的計量

注意

如果使用已啟用 Hyper-V 角色的 Windows OS 映像,則會將 VM 設定為可進行巢狀虛擬化,而可用記憶體計量將無法使用,因為 VM 內的動態記憶體驅動程式會處於停止狀態。

其中一個適合使用自動調整的常見案例,就是當特定服務上的負載隨著時間而有所不同的時候。 例如,服務 (例如閘道) 可以根據處理連入要求所需的資源數量進行調整。 我們來看看這些調整規則的範例,本文稍後將加以使用:

  • 如果所有閘道執行個體的平均使用率超過 70%,則再多新增兩個執行個體來擴增閘道服務。 每隔 30 分鐘執行一次,但執行個體總數切勿超過 20 個。
  • 如果所有閘道執行個體平均使用的核心數量少於 40%,則移除一個執行個體來縮減服務。 每隔 30 分鐘執行一次,但執行個體總數切勿少於 3 個。

自動調整部署範例

此範例將逐步解說如何:

  • 依預設使用 NT1NT2 兩種節點類型建立標準 SKU Service Fabric 受控叢集。
  • 將自動調整規則新增至次要節點類型 NT2

注意

節點類型的自動調整會根據受控叢集 VMSS CPU 主機計量來完成。 VMSS 資源自動解析於範本中。

以下將引導您逐步設定叢集及其自動調整。

  1. 在區域中建立資源群組

    Login-AzAccount
    Select-AzSubscription -SubscriptionId $subscriptionid
    New-AzResourceGroup -Name $myresourcegroup -Location $location
    
  2. 建立叢集資源

    下載標準 SKU Service Fabric 受控叢集範例,執行下列命令以部署叢集資源:

    $parameters = @{ 
    clusterName = $clusterName
    adminPassword = $VmAdminPassword
    clientCertificateThumbprint = $clientCertificateThumbprint
    } 
    New-AzResourceGroupDeployment -Name "deploy_cluster" -ResourceGroupName $resourceGroupName -TemplateFile .\azuredeploy.json -TemplateParameterObject $parameters -Verbose
    
  3. 在次要節點類型上設定及啟用自動調整規則

    下載受控叢集自動調整範例範本,以透過下列命令用來設定自動調整:

    $parameters = @{ 
    clusterName = $clusterName
    }
    New-AzResourceGroupDeployment -Name "deploy_autoscale" -ResourceGroupName $resourceGroupName -TemplateFile .\sfmc-deploy-autoscale.json -TemplateParameterObject $parameters -Verbose 
    

注意

此部署完成後,未來的叢集資源部署應在已啟用自動調整規則的次要節點類型上,將 vmInstanceCount 屬性設定為 -1。 這可確保叢集部署不會與自動調整發生衝突。

在次要節點類型上啟用或停用自動調整

根據預設,Service Fabric 受控叢集所部署的節點類型不會啟用自動調整。 已設定且可用的個別節點類型可以隨時啟用或停用自動調整。

若要啟用此功能,請在 ARM 範本中的類型 Microsoft.Insights/autoscaleSettings 底下設定 enabled 屬性,如下所示:

    "resources": [
            {
            "type": "Microsoft.Insights/autoscaleSettings",
            "apiVersion": "2015-04-01",
            "name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
            "location": "[resourceGroup().location]",
            "properties": {
                "name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
                "targetResourceUri": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/',  resourceGroup().name, '/providers/Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'), '/nodetypes/', parameters('nodeType2Name'))]",
                "enabled": true,
            ...

若要停用自動調整,請將值設定為 false

刪除自動調整規則

若要刪除某個節點類型的任何自動調整原則設定,您可以執行下列 PowerShell 命令。

Remove-AzResource -ResourceId "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/microsoft.insights/autoscalesettings/$name" -Force

設定自動調整的原則

Service Fabric 受控叢集依預設不會設定任何自動調整原則。 自動調整原則必須設定於任何要對基礎資源執行的調整動作。

下列範例會將 nodeType2Name 的原則設定為至少 3 個節點,但允許擴大至 20 個節點。 它會在過去 30 分鐘 (資料細微性為 1 分鐘) 的平均 CPU 使用率為 70% 時觸發擴大。 它會在過去 30 分鐘 (資料細微性為 1 分鐘) 的平均 CPU 使用率低於 40% 時觸發縮小。

    "resources": [
            {
            "type": "Microsoft.Insights/autoscaleSettings",
            "apiVersion": "2015-04-01",
            "name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
            "location": "[resourceGroup().location]",
            "properties": {
                "name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
                "targetResourceUri": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/',  resourceGroup().name, '/providers/Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'), '/nodetypes/', parameters('nodeType2Name'))]",
                "enabled": "[parameters('enableAutoScale')]",
                "profiles": [
                    {
                        "name": "Autoscale by percentage based on CPU usage",
                        "capacity": {
                            "minimum": "3",
                            "maximum": "20",
                            "default": "3"
                        },
                        "rules": [
                            {
                                "metricTrigger": {
                                  "metricName": "Percentage CPU",
                                  "metricNamespace": "",
                                  "metricResourceUri": "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/SFC_', reference(resourceId('Microsoft.ServiceFabric/managedClusters', parameters('clusterName')), '2022-01-01').clusterId,'/providers/Microsoft.Compute/virtualMachineScaleSets/',parameters('nodeType2Name'))]",
                                  "timeGrain": "PT1M",
                                  "statistic": "Average",
                                  "timeWindow": "PT30M",
                                  "timeAggregation": "Average",
                                  "operator": "GreaterThan",
                                  "threshold": 70
                                },
                                "scaleAction": {
                                  "direction": "Increase",
                                  "type": "ChangeCount",
                                  "value": "5",
                                  "cooldown": "PT5M"
                                }
                            },
                            {
                                "metricTrigger": {
                                  "metricName": "Percentage CPU",
                                  "metricNamespace": "",
                                  "metricResourceUri": "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/SFC_', reference(resourceId('Microsoft.ServiceFabric/managedClusters', parameters('clusterName')), '2022-01-01').clusterId,'/providers/Microsoft.Compute/virtualMachineScaleSets/',parameters('nodeType2Name'))]",
                                  "timeGrain": "PT1M",
                                  "statistic": "Average",
                                  "timeWindow": "PT30M",
                                  "timeAggregation": "Average",
                                  "operator": "LessThan",
                                  "threshold": 40
                                },
                                "scaleAction": {
                                  "direction": "Decrease",
                                  "type": "ChangeCount",
                                  "value": "1",
                                  "cooldown": "PT5M"
                                }
                            }
                            ]
                    }
                    ]
                }
            }
        
    ]                           

您可以下載此 ARM 範本以啟用自動調整,其中包含上述範例

檢視受控叢集資源已設定的自動調整定義

您可以使用 Azure 資源總管來檢視已設定的自動調整設定。

  1. 移至 Azure 資源總管

  2. 瀏覽至 subscriptions ->SubscriptionName ->resource group ->microsoft.insights ->autoscalesettings -> 自動調整原則名稱:例如 sfmc01-NT2

    您會在導覽樹狀結構上看到如下的內容:

    Azure 資源總管範例樹狀檢視

  3. 您可以在右手邊檢視此自動調整設定的完整定義。

    在此範例中,自動調整是以 CPU% 的擴增和縮減規則設定的。

    Azure 資源總管範例節點類型自動調整詳細資料

疑難排解

需考量的事項:

  • 檢閱對受控叢集次要節點類型觸發的自動調整事件

    1. 移至叢集活動記錄
    2. 檢閱自動調整擴大/縮小完成作業的活動記錄
  • 針對節點類型設定了多少個 VM?工作負載發生在所有還是部分 VM 上?

  • 您的相應縮小和相應放大的臨界值是否有足夠的差異?

    假設您在平均 CPU 於五分鐘後大於 50% 時將規則設為擴增,而在平均 CPU 小於 50% 時將規則設為縮減。 當 CPU 使用量很接近此閾值時,且調整動作經常增加和減少集合的大小,此設定會導致「翻動」問題。 基於此設定,自動調整服務會嘗試防止「翻動」,這可能會顯現為不調整。 因此請確定您的相應放大和相應縮小的臨界值有足夠的差異,以便在調整之間容許一些空間。

  • 您可以縮減或擴增節點類型嗎? 請調整節點類型層級的節點計數,並確認作業順利完成。 如何調整受控叢集上的節點類型

  • 在 Azure 資源總管中查看您的 Microsoft.ServiceFabric/managedclusters/nodetypes 和 Microsoft.Insights 資源

    Azure 資源總管是向您顯示 Azure Resource Manager 資源的狀態不可或缺的疑難排解工具。 按一下您的訂用帳戶,查看您正在進行疑難排解的資源群組。 在 ServiceFabric/managedclusters/clustername 資源提供者中,從 NodeTypes 底下尋找您所建立的節點類型,並檢查屬性以驗證 provisioningStateSucceeded。 然後,進入 clustername 下的 Microsoft.Insights 資源提供者,並確認自動調整規則看起來沒有問題。

  • 您已發出的計量值是否符合預期? 使用 Get-AzMetric PowerShell 模組取得資源的計量值並檢閱

完成這些步驟之後,如果仍有自動調整問題,可以嘗試下列資源:記錄支援要求。 請準備共用範本和效能資料的檢視。

下一步