共用方式為


教學課程:使用 Azure CLI 自動調整虛擬機器擴展集

當建立擴展集時,您會定義您想要執行的 VM 執行個體數目。 當您的應用程式需求變更時,您可以自動增加或減少 VM 執行個體數目。 自動調整的能力可讓您在整個應用程式的生命週期中,跟上客戶的需求或對應用程式效能變更做出回應。 在本教學課程中,您將瞭解如何:

  • 使用擴展集的自動調整
  • 建立及使用自動調整規則
  • 模擬 CPU 負載以觸發自動調整規則
  • 隨著需求變更監視自動調整動作

如果您沒有 Azure 帳戶,請在開始之前建立 免費帳戶

先決條件

  • 本教學課程需要 2.0.32 版或更新版本的 Azure CLI。 如果使用 Azure Cloud Shell,則已安裝最新版本。

建立擴展集

使用 az group create 來建立資源群組。

export RANDOM_SUFFIX=$(openssl rand -hex 3)
export REGION="WestUS2"
export MY_RESOURCE_GROUP_NAME="myResourceGroup$RANDOM_SUFFIX"
az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION

現在使用 az vmss create 建立虛擬機擴展集。 下列範例會建立執行個體計數為 2 的擴展集、產生 SSH 金鑰 (如果不存在),並使用有效的映像 Ubuntu2204

export MY_SCALE_SET_NAME="myScaleSet$RANDOM_SUFFIX"
az vmss create \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --name $MY_SCALE_SET_NAME \
  --image Ubuntu2204 \
  --orchestration-mode Flexible \
  --instance-count 2 \
  --admin-username azureuser \
  --generate-ssh-keys

定義自動調整設定檔

若要對擴展集啟用自動調整,您必須先定義自動調整設定檔。 此設定檔會定義預設、最小和最大擴展集容量。 這些限制可讓您藉由不繼續建立 VM 執行個體來控制成本,並且在可接受的效能與保留在相應縮小事件中的執行個體數目下限之間取得平衡。 使用 az monitor autoscale create 建立自動調整設定檔。 下列範例會設定 2 個 VM 實例的預設和最小容量,以及最多 10 個:

az monitor autoscale create \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --resource $MY_SCALE_SET_NAME \
  --resource-type Microsoft.Compute/virtualMachineScaleSets \
  --name autoscale \
  --min-count 2 \
  --max-count 10 \
  --count 2

建立自動擴增的規則

如果您的應用程式需求增加,您擴展集內 VM 執行個體上的負載也會跟著增加。 如果增加的負載是一致的,而不只是短暫的需求,您可以設定自動調整規則來增加 VM 實例的數目。 當創建這些實例並部署您的應用程式後,縮放組會開始透過負載平衡器將流量分配到它們上。 您可以控制要監視的計量、負載必須符合指定閾值的時間,以及要新增多少個 VM 實例。

使用 az monitor autoscale rule create 建立 規則,以在 5 分鐘的期間內平均 CPU 負載大於 70% 時,增加 VM 實例數目。 當此規則觸發時,VM 執行個體數目會增加三個。

az monitor autoscale rule create \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --autoscale-name autoscale \
  --condition "Percentage CPU > 70 avg 5m" \
  --scale out 3

建立自動縮減的規則

當應用程式需求減少時,VM 實例上的負載就會下降。 若這樣的負載減少會持續一段時間,您即可設定自動調整規則來減少擴展集中的 VM 執行個體數目。 這項縮減動作只執行滿足目前需求所需的必要執行個體數目,以降低成本。

使用 az monitor autoscale rule create 建立 另一個規則,當平均 CPU 負載在 5 分鐘期間下降到低於 30% 時,就會減少 VM 實例數目。 以下範例會將 VM 實例的數量增加一個。

az monitor autoscale rule create \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --autoscale-name autoscale \
  --condition "Percentage CPU < 30 avg 5m" \
  --scale in 1

模擬擴展集上的 CPU 負載

若要測試自動調整規則,您需要模擬擴展集中 VM 執行個體上的持續性 CPU 負載。 在此極簡方法中,我們會使用內 yes 建命令來產生CPU負載,以避免安裝其他套件。 下列命令會啟動 3 個背景進程,持續將資料輸出至 /dev/null 60 秒,然後終止它們。

for i in {1..3}; do
  yes > /dev/null &
done
sleep 60
pkill yes

此命令會模擬 CPU 負載,而不會引入套件安裝錯誤。

監視作用中的自動調整規則

若要監視擴展集中的 VM 實例數目,請使用 watch 命令。 自動調整規則可能需要 5 分鐘的時間,才能開始擴增流程,以回應 CPU 負載。 不過,一旦發生,您可以使用 CTRL + C 鍵結束監看。

屆時,擴展集會自動增加符合需求的 VM 執行個體數目。 下列命令顯示擴展集中的 VM 實例清單:

az vmss list-instances \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --name $MY_SCALE_SET_NAME \
  --output table

達到 CPU 閾值時,自動調整規則就會增加擴展集中的 VM 執行個體數目。 輸出會在建立新的實例時顯示 VM 實例清單。

  InstanceId  LatestModelApplied    Location    Name              ProvisioningState    ResourceGroup         VmId
------------  --------------------  ----------  ---------------   -------------------  --------------------  ------------------------------------
           1  True                  WestUS2     myScaleSet_1      Succeeded            myResourceGroupxxxxx  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
           2  True                  WestUS2     myScaleSet_2      Succeeded            myResourceGroupxxxxx  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
           4  True                  WestUS2     myScaleSet_4      Creating             myResourceGroupxxxxx  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
           5  True                  WestUS2     myScaleSet_5      Creating             myResourceGroupxxxxx  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
           6  True                  WestUS2     myScaleSet_6      Creating             myResourceGroupxxxxx  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

一旦 CPU 負載消退,平均 CPU 負載就會恢復正常。 再經過 5 分鐘之後,自動調整規則會縮減 VM 執行個體數目。 縮減動作會先移除具有最高識別碼的 VM 執行個體。 當擴展集使用可用性設定組或可用性區域時,縮減動作會平均散發到 VM 執行個體上。 下列範例輸出顯示擴展集自動縮減時所刪除的一個 VM 執行個體:

6  True                  WestUS2     myScaleSet_6  Deleting             myResourceGroupxxxxx  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

清理資源

若要移除擴展集和相關聯的資源,請使用您慣用的方法手動刪除資源群組。

後續步驟

在此教學課程中,您已了解如何使用 Azure CLI 自動縮減或擴增擴展集:

  • 使用擴展集的自動調整
  • 建立及使用自動調整規則
  • 模擬 CPU 負載以觸發自動調整規則
  • 隨著需求變更監視自動調整動作