瞭解自動調整設定

自動調整設定可協助您確保執行中的資源數量正確,能夠處理變動的應用程式負載。 您可以設定根據指出負載或效能的計量來觸發自動調整設定,或是在排定的日期和時間觸發自動調整設定。

本文將說明自動調整設定。

自動調整規模設定結構描述

下列範例說明具有這些屬性的自動調整設定:

  • 單一預設設定檔。
  • 此設定檔中有兩個計量規則:一個用於擴增,一個用於縮減。
    • 當虛擬機器擴展集的平均「百分比 CPU」計量在過去 10 分鐘大於 85% 時,就會觸發相應放大規則。
    • 當虛擬機器擴展集的平均值在過去 1 分鐘小於 60% 時,就會觸發相應縮小規則。

注意

一項設定可以有多個設定檔。 若要深入了解,請參閱設定檔一節。 一個設定檔也可以定義多個相應放大規則和相應縮小規則。 若要查看這些規則的評估方式,請參閱評估一節。

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Insights/autoscaleSettings",
            "apiVersion": "2015-04-01",
            "name": "VMSS1-Autoscale-607",
            "location": "eastus",
            "properties": {

                "name": "VMSS1-Autoscale-607",
                "enabled": true,
                "targetResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
    "profiles": [
      {
        "name": "Auto created default scale condition",
        "capacity": {
          "minimum": "1",
          "maximum": "4",
          "default": "1"
        },
        "rules": [
          {
            "metricTrigger": {
              "metricName": "Percentage CPU",
              "metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
              "timeGrain": "PT1M",
              "statistic": "Average",
              "timeWindow": "PT10M",
              "timeAggregation": "Average",
              "operator": "GreaterThan",
              "threshold": 85
            },
            "scaleAction": {
              "direction": "Increase",
              "type": "ChangeCount",
              "value": "1",
              "cooldown": "PT5M"
            }
          },
          {
            "metricTrigger": {
              "metricName": "Percentage CPU",
              "metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
              "timeGrain": "PT1M",
              "statistic": "Average",
              "timeWindow": "PT10M",
              "timeAggregation": "Average",
              "operator": "LessThan",
              "threshold": 60
            },
            "scaleAction": {
              "direction": "Decrease",
              "type": "ChangeCount",
              "value": "1",
              "cooldown": "PT5M"
            }
          }
        ]
      }
    ]
  }
}

下表描述上述自動調整設定 JSON 中的元素。

區段​​ 元素名稱 入口網站名稱 描述
設定 識別碼 自動調整設定的資源識別碼。 自動調整規模設定是 Azure Resource Manager 資源。
設定 NAME 自動調整設定名稱。
設定 location 自動調整設定的位置。 此位置可以與要調整規模的資源位置不同。
內容 targetResourceUri 要調整規模之資源的資源識別碼。 一個資源只能有一個自動調整設定。
內容 設定檔 調整條件 自動調整設定是由一或多個設定檔所組成。 每次執行自動調整引擎時,都會執行一個設定檔。 每個自動調整設定可設定最多 20 個設定檔。
設定檔 NAME 設定檔的名稱。 您可以選擇任何有助於識別設定檔的名稱。
設定檔 capacity.maximum 執行個體限制 - 最大值 允許的最大容量。 執行此設定檔時,這可確保自動調整不會將資源調整到大於此數字。
設定檔 capacity.minimum 執行個體限制 - 最小值 允許的最小容量。 執行此設定檔時,這可確保自動調整不會將資源調整到小於此數字
設定檔 capacity.default 執行個體限制 - 預設值 如果讀取資源計量時發生問題,而且目前的容量低於預設值,則自動調整會擴增為預設值。 此動作可確保資源的可用性。 如果目前的容量已高於預設容量,則自動調整不會進行縮減。
設定檔 規則 規則 自動調整會使用設定檔中的規則,在最大容量與最小容量之間進行調整。 設定檔中可定義最多 10 個個別規則。 規則通常會以成對方式定義:一個用於決定何時要擴增,另一個用於決定何時要縮減。
rule metricTrigger 縮放規則 定義規則的計量條件。
metricTrigger metricName 度量名稱 計量的名稱。
metricTrigger metricResourceUri 發出計量之資源的資源識別碼。 在大多數情況下,會與要調整規模的資源相同。 在某些情況下,則可能不同。 例如,您可以根據儲存體佇列中的訊息數目來調整虛擬機器擴展集的規模。
metricTrigger timeGrain 時間精細度 (分鐘) 計量取樣持續時間。 例如 timeGrain = "PT1M" 表示應該使用 statistic 元素中所指定的彙總方法,每分鐘彙總一次計量。
metricTrigger statistic 時間粒紋統計資料 timeGrain 期間內的彙總方法。 例如 statistic = "Average"timeGrain = "PT1M" 表示應該每分鐘計算一次計量平均值來彙總計量。 此屬性會指定進行計量取樣的方式。
metricTrigger timeWindow 期間 回顧計量的時間長度。 例如,timeWindow = "PT10M" 表示每次執行自動調整時,都會查詢過去 10 分鐘的計量。 時間範圍可讓您的計量正規化,而避免對暫時性尖峰做出反應。
metricTrigger timeAggregation 時間彙總 用來彙總所取樣計量的彙總方法。 例如 timeAggregation = "Average" 應該會透過計算平均值來彙總所取樣的計量。 在前述案例中會採用 10 個 1 分鐘樣本,然後計算其平均值。
rule scaleAction 動作 觸發 metricTrigger 時要採取的動作。
scaleAction direction 作業 "Increase" 用於擴增,或 "Decrease" 用於縮減。
scaleAction value 執行個體計數 要增加或減少多少資源容量。
scaleAction cooldown 緩和時間 (分鐘) 在進行調整作業之後、再次調整之前,所要等待的時間長度。 冷卻期間會在縮減或擴增事件之後生效。 例如,如果 cooldown = "PT10M",則自動調整在接下來的 10 分鐘內不會再次嘗試進行調整。 cooldown 是用來在新增或移除執行個體之後,讓計量穩定。

自動調整規模設定檔

每個自動調整設定可最多定義 20 個不同的設定檔。
自動調整設定檔有三種類型:

  • 預設設定檔:如果您不需要根據特定日期和時間或星期幾來調整資源,則請使用預設設定檔。 目前日期和時間沒有其他適用的設定檔時,會執行預設設定檔。 您只能有一個預設設定檔。

  • 固定日期設定檔:單一日期和時間與固定日期設定檔相關。 使用固定日期設定檔來設定特定事件的調整規則。 設定檔只會在事件的日期和時間上執行一次。 針對所有其他時間,自動調整會使用預設設定檔。

        ...
        "profiles": [
            {
                "name": " regularProfile",
                "capacity": {
                    ...
                },
                "rules": [
                    ...
                ]
            },
            {
                "name": "eventProfile",
                "capacity": {
                ...
                },
                "rules": [
                    ...
                ],
                "fixedDate": {
                    "timeZone": "Pacific Standard Time",
                    "start": "2017-12-26T00:00:00",
                    "end": "2017-12-26T23:59:00"
                }
            }
        ]
    
  • 週期設定檔:週期設定檔用於某個星期幾或一組星期幾。 週期性設定檔的結構描述未包括結束日期。 週期性設定檔的結束日期和時間是由下列設定檔的開始時間所設定。 使用入口網站來設定週期性設定檔時,會自動更新預設設定檔,以在您為週期性設定檔所指定的結束時間開始。 如需設定多個設定檔的詳細資訊,請參閱使用多個設定檔進行自動調整

    此處的部分結構描述範例會顯示週期性設定檔。 從週六和周日的 06:00 開始到 19:00 結束。 預設設定檔已修改為在星期六和星期日的 19:00 開始。

        {
            "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
            "contentVersion": "1.0.0.0",
            "resources": [
                {
                    "type": "Microsoft.Insights/    autoscaleSettings",
                    "apiVersion": "2015-04-01",
                    "name": "VMSS1-Autoscale-607",
                    "location": "eastus",
                    "properties": {
    
                        "name": "VMSS1-Autoscale-607",
                        "enabled": true,
                        "targetResourceUri": "/subscriptions/    abc123456-987-f6e5-d43c-9a8d8e7f6541/    resourceGroups/rg-vmss1/providers/    Microsoft.Compute/    virtualMachineScaleSets/VMSS1",
                        "profiles": [
                            {
                                "name": "Weekend profile",
                                "capacity": {
                                    ...
                                },
                                "rules": [
                                    ...
                                ],
                                "recurrence": {
                                    "frequency": "Week",
                                    "schedule": {
                                        "timeZone": "E. Europe     Standard Time",
                                        "days": [
                                            "Saturday",
                                            "Sunday"
                                        ],
                                        "hours": [
                                            6
                                        ],
                                        "minutes": [
                                            0
                                        ]
                                    }
                                }
                            },
                            {
                                "name": "{\"name\":\"Auto created default scale condition\",\"for\":\"Weekend profile\"}",
                                "capacity": {
                                   ...
                                },
                                "recurrence": {
                                    "frequency": "Week",
                                    "schedule": {
                                        "timeZone": "E. Europe     Standard Time",
                                        "days": [
                                            "Saturday",
                                            "Sunday"
                                        ],
                                        "hours": [
                                            19
                                        ],
                                        "minutes": [
                                            0
                                        ]
                                    }
                                },
                                "rules": [   
                                  ...
                                ]
                            }
                        ],
                        "notifications": [],
                        "targetResourceLocation": "eastus"
                    }
    
                }
            ]
                }
    
    

自動調整評估

自動調整設定可以有多個設定檔。 每個設定檔都可以有多個規則。 每次執行自動調整工作時,都會從選擇該次適用的設定檔開始。 自動調整接著會評估最小值和最大值以及設定檔中的任何計量規則,然後決定是否需要調整動作。 根據資源類型,自動調整工作會每隔 30 到 60 秒執行一次。 調整動作發生之後,自動調整作業會先等待冷卻期間,然後再調整一次。 冷卻期間同時適用於擴增和縮減動作。

自動調整將會使用哪個設定檔?

每次執行自動調整服務時,都會依下列順序來評估設定檔:

  1. 固定日期設定檔
  2. 週期性設定檔
  3. 預設設定檔

會使用找到的第一個合適設定檔。

自動調整如何評估多個規則?

自動調整判斷要執行的設定檔之後,會評估設定檔中的所有擴增規則 (即 direction = "Increase")。 如果觸發一或多個擴增規則,則自動調整會計算針對所有這些規則指定之 scaleAction 所決定的新容量。 如果觸發多個擴增規則,則自動調整會調整為最高指定的容量,以確保服務可用性。

例如,假設有兩個規則:規則 1 指定依三個執行個體的擴增,而規則 2 指定依五個執行個體的擴增。 如果這兩個規則都觸發,自動調整會擴增五個執行個體。 同樣地,如果一個規則指定依三個執行個體擴增,而另一個規則指定依 15% 擴增,則將會使用兩個執行個體計數中較高的那個計數。

如果未觸發任何擴增規則,則自動調整會評估縮減規則 (即 direction = "Decrease" 的規則)。 如果觸發所有縮減規則,則自動調整只會縮減。

自動調整會計算出由這每一個規則的 scaleAction 所決定的新容量。 為了確保服務可用性,自動調整會盡可能縮小,以達到指定的容量上限。 例如,假設有兩個縮減規則:一個會減少 50% 的容量,一個則會將容量減少三個執行個體。 如果第一個規則的結果是五個執行個體,而第二個規則的結果是七個,則自動調整會縮減為七個執行個體。

每次自動調整計算縮減動作的結果時,都會評估該動作是否會觸發擴增動作。 調整動作觸發相反調整動作的案例稱為「翻動」。 自動調整可能會延遲縮減動作以避免翻動,或可能會依小於規則中所指定的數目進行調整。 如需翻動的詳細資訊,請參閱自動調整中的翻動

下一步

深入了解自動調整: