Поделиться через


Руководство. Автоматическое масштабирование масштабируемого набора виртуальных машин с помощью Azure CLI

При создании масштабируемого набора вы определяете количество экземпляров виртуальных машин для запуска. По мере изменения потребностей вашего приложения, можно автоматически увеличивать или уменьшать число экземпляров виртуальных машин. Возможность автоматического масштабирования позволяет удовлетворить пользовательский спрос или среагировать на изменения производительности приложения на протяжении его жизненного цикла. В этом руководстве описано, как:

  • автомасштабирование масштабируемого набора;
  • создание и использование правил автомасштабирования;
  • Имитация загрузки ЦП для активации правил автомасштабирования
  • Мониторинг действий автоматического масштабирования по мере изменения спроса

Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.

Предпосылки

  • Для работы с этим учебником требуется Azure CLI версии 2.0.32 или более поздней. Если вы используете 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

Определение профиля автомасштабирования

Чтобы включить автомасштабирование в масштабируемом наборе, сначала необходимо определить профиль автомасштабирования. Этот профиль определяет используемую по умолчанию, минимальную и максимальную емкости масштабируемого набора. Эти ограничения позволяют контролировать затраты за счет того, что экземпляры виртуальных машин не создаются непрерывно, и сбалансировать приемлемую производительность с минимальным числом экземпляров, которые остаются в масштабируемом событии. Создайте профиль автомасштабирования с помощью команды az monitor autoscale create. В следующем примере устанавливается стандартная и минимальная емкость, равная 2 экземплярам виртуальных машин, и максимальная емкость, равная 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

Создание правила для автоматического горизонтального увеличения масштаба

При увеличении потребностей вашего приложения увеличивается нагрузка на экземпляры виртуальных машин в наборе масштабирования. Если эта повышенная нагрузка постоянна, а не просто кратковременная потребность, можно настроить правила автомасштабирования, чтобы увеличить количество экземпляров виртуальных машин. При создании этих экземпляров и развертывании приложения масштабируемый набор начинает распространять трафик к ним через подсистему балансировки нагрузки. Вы контролируете, какие метрики следует отслеживать, сколько времени нагрузка должна соответствовать заданному пороговому значению и сколько экземпляров виртуальных машин необходимо добавить.

Создайте правило с помощью команды az monitor autoscale rule create, которое увеличивает количество экземпляров виртуальных машин, когда средняя загрузка ЦП превышает 70% за 5 минут. При активации правила количество экземпляров виртуальных машин увеличивается до трех.

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

Создание правила для автоматического горизонтального уменьшения масштаба

При уменьшении спроса на приложение нагрузка на экземпляры виртуальной машины снижается. Если эта снижение нагрузки сохраняется в течение определенного периода времени, можно настроить правила автомасштабирования, чтобы уменьшить количество экземпляров виртуальных машин в масштабируемом наборе. Это масштабирование помогает сократить затраты, запуская только необходимое количество экземпляров для удовлетворения текущего спроса.

Создайте другое правило с помощью правила автомасштабирования az monitor , которое уменьшает количество экземпляров виртуальных машин, когда средняя загрузка ЦП снижается до 30% за 5 минут. В следующем примере увеличивается количество экземпляров виртуальной машины на один.

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

Имитация загрузки ЦП в масштабируемом наборе

Чтобы протестировать правила автомасштабирования, необходимо имитировать устойчивую нагрузку ЦП на экземпляры виртуальных машин в масштабируемом наборе. В этом минималистском подходе мы избегаем установки дополнительных пакетов с помощью встроенной yes команды для создания загрузки ЦП. Следующая команда запускает 3 фоновых процесса, которые непрерывно выводят данные в /dev/null течение 60 секунд, а затем завершают их.

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

Эта команда имитирует загрузку ЦП без возникновения ошибок установки пакета.

Мониторинг активных правил автомасштабирования

Чтобы отслеживать количество экземпляров виртуальных машин в наборе масштабирования watch, используйте команду. Может потребоваться до 5 минут, чтобы правила автоматического масштабирования начали процесс горизонтального масштабирования в ответ на загрузку процессора. Тем не менее, как только это произойдет, вы можете выйти из режима наблюдения, используя клавиши CTRL+C.

К тому же масштабируемый набор автоматически увеличит количество экземпляров виртуальных машин для удовлетворения спроса. Следующая команда содержит список экземпляров виртуальных машин в масштабируемом наборе:

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

Когда достигается порог нагрузки на ЦП, в соответствии с правилами автомасштабирования увеличивается число экземпляров виртуальных машин в масштабируемом наборе. В выводе будет показан список экземпляров виртуальных машин по мере создания новых.

  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

После утихания загрузки ЦП средняя загрузка ЦП возвращается в нормальное состояние. На протяжении следующих 5 минут в соответствии с правилами автомасштабирования осуществляется горизонтальное уменьшение масштаба для числа виртуальных машин. Действия по уменьшению масштаба сначала удаляют экземпляры виртуальных машин с самыми большими идентификаторами. Если масштабируемый набор использует группы доступности или зоны доступности, действия масштабирования равномерно распределяются между экземплярами виртуальных машин. В следующем примере выводимых данных показано, как один экземпляр виртуальной машины удаляется в процессе уменьшения размера масштабируемого набора.

6  True                  WestUS2     myScaleSet_6  Deleting             myResourceGroupxxxxx  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Очистите ресурсы

Чтобы удалить набор масштабируемых ресурсов и связанные с ним ресурсы, вручную удалите группу ресурсов, используя предпочтительный метод.

Дальнейшие шаги

Из этого руководства вы узнали, как выполнять горизонтальное увеличение или уменьшение масштаба для масштабируемого набора с помощью Azure CLI:

  • автомасштабирование масштабируемого набора;
  • создание и использование правил автомасштабирования;
  • Имитация загрузки ЦП для активации правил автомасштабирования
  • Мониторинг действий автоматического масштабирования по мере изменения спроса