Руководство. Автоматическое масштабирование масштабируемого набора виртуальных машин с помощью Azure CLI
При создании масштабируемого набора вы определяете количество экземпляров виртуальных машин для запуска. По мере изменения потребностей приложения можно автоматически увеличивать или уменьшать это количество. Возможность автоматического масштабирования позволяет удовлетворить пользовательский спрос или среагировать на изменения производительности приложения на протяжении его жизненного цикла. Из этого руководства вы узнаете, как выполнить следующие задачи:
- автомасштабирование масштабируемого набора;
- создание и использование правил автомасштабирования;
- нагрузочное тестирование экземпляров виртуальных машин и активация правил автомасштабирования;
- обратное автомасштабирование при уменьшении потребности в ресурсах.
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Необходимые компоненты
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.
Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.
Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
- Для работы с этим учебником требуется Azure CLI версии 2.0.32 или более поздней. Если вы используете Azure Cloud Shell, последняя версия уже установлена.
Создание масштабируемого набора
Создайте группу ресурсов с помощью команды az group create.
az group create --name myResourceGroup --location eastus
Теперь создайте масштабируемый набор виртуальных машин с помощью az vmss create. В следующем примере создается масштабируемый набор с числом экземпляров 2 и создается ключИ SSH, если они не существуют.
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--image <SKU image> \
--orchestration-mode Flexible \
--instance-count 2 \
--admin-username azureuser \
--generate-ssh-keys
Определение профиля автомасштабирования
Чтобы включить автомасштабирование в масштабируемом наборе, сначала необходимо определить профиль автомасштабирования. Этот профиль определяет используемую по умолчанию, минимальную и максимальную емкости масштабируемого набора. Эти ограничения позволяют контролировать затраты за счет того, что экземпляры виртуальных машин не создаются непрерывно, и сбалансировать приемлемую производительность с минимальным числом экземпляров, которые остаются в масштабируемом событии. Создайте профиль автомасштабирования с помощью команды az monitor autoscale create. В примере ниже задаются минимальная и максимальная емкости (2 и 10), а также емкость по умолчанию экземпляров виртуальной машины.
az monitor autoscale create \
--resource-group myResourceGroup \
--resource myScaleSet \
--resource-type Microsoft.Compute/virtualMachineScaleSets \
--name autoscale \
--min-count 2 \
--max-count 10 \
--count 2
Создание правила для автоматического горизонтального увеличения масштаба
При увеличении потребностей приложения в масштабируемом наборе увеличивается нагрузка на экземпляры виртуальной машины. Если такая увеличенная нагрузка представляет собой не просто краткий спрос, а является согласованной, можно настроить правила автомасштабирования, чтобы увеличить число экземпляров виртуальной машины в масштабируемом наборе. После создания этих экземпляров виртуальных машин и развертывания приложений масштабируемые наборы запускают распределение трафика между ними через подсистему балансировки нагрузки. Вы управляете тем, какие метрики следует отслеживать, сколько времени нагрузка приложения должна соответствовать заданному пороговому значению и сколько экземпляров виртуальных машин необходимо добавить в масштабируемый набор.
Создайте правило с помощью правила автомасштабирования az monitor, которое увеличивает количество экземпляров виртуальных машин в масштабируемом наборе, если средняя загрузка ЦП превышает 70 % за 5 минут. При активации правила количество экземпляров виртуальных машин увеличивается до трех.
az monitor autoscale rule create \
--resource-group myResourceGroup \
--autoscale-name autoscale \
--condition "Percentage CPU > 70 avg 5m" \
--scale out 3
Создание правила для автоматического горизонтального уменьшения масштаба
В вечерние часы или выходные дни потребность в приложении может снизиться. Если такая сниженная нагрузка является согласованной в течение некоторого периода времени, можно настроить правила автомасштабирования, чтобы уменьшить число экземпляров виртуальных машин в масштабируемом наборе. Это действие снижает стоимость запуска масштабируемого набора, так как вы запускаете только то количество экземпляров, которое необходимо для удовлетворения текущего спроса.
Используя команду az monitor autoscale rule create, создайте другое правило, в соответствии с которым количество экземпляров виртуальной машины в масштабируемом наборе уменьшается, когда средняя загрузка ЦП не превышает 30 % в течение 5 минут. В следующем примере определяется правило горизонтального уменьшения масштаба для уменьшения количества экземпляров виртуальных машин на один экземпляр.
az monitor autoscale rule create \
--resource-group myResourceGroup \
--autoscale-name autoscale \
--condition "Percentage CPU < 30 avg 5m" \
--scale in 1
Создание нагрузки на ЦП в масштабируемом наборе
Чтобы проверить правила автомасштабирования, создайте нагрузку на ЦП в экземплярах виртуальных машин в масштабируемом наборе. В результате этой имитации нагрузки на ЦП происходит автоматическое горизонтальное увеличение масштаба и увеличение числа экземпляров виртуальных машин. Когда имитированная нагрузка на ЦП снижается, в соответствии с правилами автомасштабирования выполняется горизонтальное уменьшение масштаба и снижение числа экземпляров виртуальных машин.
Сведения о подключении к отдельному экземпляру см. в руководстве . Подключение к экземплярам масштабируемого набора виртуальных машин
После входа установите служебную программу stress или stress-ng. Запустите 10 нагрузочных рабочих процессов, которые создают нагрузку на ЦП. Эти рабочие процессы выполняются на протяжении 420 секунд. Этого достаточно, чтобы активировать правила автомасштабирования для реализации нужного действия.
sudo apt-get update
sudo apt-get -y install stress
sudo stress --cpu 10 --timeout 420 &
Когда в служебной программе stress отобразятся выходные данные, аналогичные stress: info: [2688] dispatching hogs: 10 cpu, 0 io, 0 vm, 0 hdd, нажмите клавишу ВВОД, чтобы вернуться к командной строке.
Чтобы убедиться, что программа stress создает нагрузку на ЦП, проверьте активную нагрузку на систему с помощью служебной программы top.
top
Выйдите из программы top и разорвите подключение к экземпляру виртуальной машины. Служебная программа stress продолжает работать на экземпляре виртуальной машины.
Ctrl-c
exit
Подключитесь ко второму экземпляру виртуальной машины, используя номер порта, указанный в предыдущей команде az vmss list-instance-connection-info.
ssh [email protected] -p 50003
Установите и запустите стресс или стресс-ng, а затем запустите десять рабочих ролей на этом втором экземпляре виртуальной машины.
sudo apt-get -y install stress
sudo stress --cpu 10 --timeout 420 &
Опять-таки, когда в служебной программе stress отобразятся выходные данные, аналогичные stress: info: [2713] dispatching hogs: 10 cpu, 0 io, 0 vm, 0 hdd, нажмите клавишу ВВОД, чтобы вернуться к командной строке.
Разорвите подключение ко второму экземпляру виртуальной машины. Служебная программа stress продолжает работать на экземпляре виртуальной машины.
exit
Мониторинг активных правил автомасштабирования
Чтобы отслеживать количество экземпляров виртуальных машин в масштабируемом наборе, используйте watch. Потребуется 5 минут, чтобы в соответствии с правилами автомасштабирования началось увеличение масштаба с учетом нагрузки на ЦП, созданной служебной программой stress на каждом экземпляре виртуальной машины.
watch az vmss list-instances \
--resource-group myResourceGroup \
--name myScaleSet \
--output table
Когда достигается порог нагрузки на ЦП, в соответствии с правилами автомасштабирования увеличивается число экземпляров виртуальных машин в масштабируемом наборе. В следующих выходных данных показано, что при автомасштабировании масштабируемого набора создано три виртуальные машины.
Every 2.0s: az vmss list-instances --resource-group myResourceGroup --name myScaleSet --output table
InstanceId LatestModelApplied Location Name ProvisioningState ResourceGroup VmId
------------ -------------------- ---------- ------------ ------------------- --------------- ------------------------------------
1 True eastus myScaleSet_1 Succeeded myResourceGroup 4f92f350-2b68-464f-8a01-e5e590557955
2 True eastus myScaleSet_2 Succeeded myResourceGroup d734cd3d-fb38-4302-817c-cfe35655d48e
4 True eastus myScaleSet_4 Creating myResourceGroup 061b4c90-0d73-49fc-a066-19eab0b3d95c
5 True eastus myScaleSet_5 Creating myResourceGroup 4beff8b9-4e65-40cb-9652-43899309da27
6 True eastus myScaleSet_6 Creating myResourceGroup 9e4133dd-2c57-490e-ae45-90513ce3b336
После остановки служебной программы stress на начальных экземплярах виртуальной машины восстанавливается нормальная нагрузка на ЦП. На протяжении следующих 5 минут в соответствии с правилами автомасштабирования осуществляется горизонтальное уменьшение масштаба для числа виртуальных машин. При горизонтальном уменьшении масштаба сначала удаляются экземпляры виртуальных машин с более высокими значениями идентификатора. Если в масштабируемом наборе используются группы доступности или зоны доступности, действия горизонтального уменьшения масштаба равномерно распределяются между экземплярами виртуальных машин. В следующем примере выходных данных показано удаление одного экземпляра виртуальной машины при автоматическом уменьшении масштаба масштабируемого набора:
6 True eastus myScaleSet_6 Deleting myResourceGroup 9e4133dd-2c57-490e-ae45-90513ce3b336
Выйдите из программы watch с помощью команды Ctrl-c
. Каждые 5 минут будет происходить горизонтальное уменьшение масштаба масштабируемого набора с удалением одного экземпляра виртуальной машины, пока не будет достигнуто минимальное число экземпляров (2 экземпляра).
Очистка ресурсов
Чтобы удалить масштабируемый набор и дополнительные ресурсы, удалите группу ресурсов и все входящие в нее ресурсы с помощью команды az group delete. При использовании параметра --no-wait
управление возвращается в командную строку без ожидания завершения операции. Параметр --yes
подтверждает, что вы хотите удалить ресурсы без дополнительного запроса.
az group delete --name myResourceGroup --yes --no-wait
Следующие шаги
Из этого руководства вы узнали, как выполнять горизонтальное увеличение или уменьшение масштаба для масштабируемого набора с помощью Azure CLI:
- автомасштабирование масштабируемого набора;
- создание и использование правил автомасштабирования;
- нагрузочное тестирование экземпляров виртуальных машин и активация правил автомасштабирования;
- обратное автомасштабирование при уменьшении потребности в ресурсах.