瞭解自動調整設定
自動調整設定可協助您確保執行中的資源數量正確,能夠處理變動的應用程式負載。 您可以設定根據指出負載或效能的計量來觸發自動調整設定,或是在排定的日期和時間觸發自動調整設定。
本文將說明自動調整設定。
自動調整規模設定結構描述
下列範例說明具有這些屬性的自動調整設定:
- 單一預設設定檔。
- 此設定檔中有兩個計量規則:一個用於擴增,一個用於縮減。
- 當虛擬機器擴展集的平均「百分比 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 秒執行一次。 調整動作發生之後,自動調整作業會先等待冷卻期間,然後再調整一次。 冷卻期間同時適用於擴增和縮減動作。
自動調整將會使用哪個設定檔?
每次執行自動調整服務時,都會依下列順序來評估設定檔:
- 固定日期設定檔
- 週期性設定檔
- 預設設定檔
會使用找到的第一個合適設定檔。
自動調整如何評估多個規則?
自動調整判斷要執行的設定檔之後,會評估設定檔中的所有擴增規則 (即 direction = "Increase")。 如果觸發一或多個擴增規則,則自動調整會計算針對所有這些規則指定之 scaleAction 所決定的新容量。 如果觸發多個擴增規則,則自動調整會調整為最高指定的容量,以確保服務可用性。
例如,假設有兩個規則:規則 1 指定依三個執行個體的擴增,而規則 2 指定依五個執行個體的擴增。 如果這兩個規則都觸發,自動調整會擴增五個執行個體。 同樣地,如果一個規則指定依三個執行個體擴增,而另一個規則指定依 15% 擴增,則將會使用兩個執行個體計數中較高的那個計數。
如果未觸發任何擴增規則,則自動調整會評估縮減規則 (即 direction = "Decrease" 的規則)。 如果觸發所有縮減規則,則自動調整只會縮減。
自動調整會計算出由這每一個規則的 scaleAction 所決定的新容量。 為了確保服務可用性,自動調整會盡可能縮小,以達到指定的容量上限。 例如,假設有兩個縮減規則:一個會減少 50% 的容量,一個則會將容量減少三個執行個體。 如果第一個規則的結果是五個執行個體,而第二個規則的結果是七個,則自動調整會縮減為七個執行個體。
每次自動調整計算縮減動作的結果時,都會評估該動作是否會觸發擴增動作。 調整動作觸發相反調整動作的案例稱為「翻動」。 自動調整可能會延遲縮減動作以避免翻動,或可能會依小於規則中所指定的數目進行調整。 如需翻動的詳細資訊,請參閱自動調整中的翻動。
下一步
深入了解自動調整: