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

Начните работу с Azure Load Balancer, используя Azure CLI для создания общедоступного балансировщика нагрузки и двух виртуальных машин. Наряду с этими ресурсами вы развертываете Бастион Azure, шлюз NAT, виртуальную сеть и необходимые подсети.

Схема ресурсов, развернутых для стандартной общедоступной подсистемы балансировки нагрузки.

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

Предварительные условия

  • Для работы с этим кратким руководством требуется Azure CLI версии 2.0.28 или более поздней. Если вы используете Azure Cloud Shell, последняя версия уже установлена.

Создание группы ресурсов

Группа ресурсов Azure — это логический контейнер, в котором развертываются ресурсы Azure и управляют ими.

Создайте группу ресурсов с помощью az group create:

  az group create \
    --name load-balancer-cli-rg \
    --location eastus

Создание виртуальной сети

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

Создайте виртуальную сеть с помощью команды az network vnet create. Виртуальная сеть и подсеть содержат ресурсы, развернутые далее в этой статье.

  az network vnet create \
    --resource-group load-balancer-cli-rg \
    --location eastus \
    --name lb-vnet \
    --address-prefixes 10.1.0.0/16 \
    --subnet-name backend-subnet \
    --subnet-prefixes 10.1.0.0/24

Создание общедоступного IP-адреса

Для доступа к веб-приложению через Интернет подсистеме балансировки нагрузки требуется общедоступный IP-адрес.

Чтобы создать общедоступный IP-адрес для внешнего интерфейса балансировщика нагрузки, используйте команду az network public-ip create.

  az network public-ip create \
    --resource-group load-balancer-cli-rg \
    --name lb-frontend-ip \
    --sku Standard \
    --zone 1 2 3

Чтобы создать зональный общедоступный IP-адрес в зоне 1, используйте следующую команду:

  az network public-ip create \
    --resource-group load-balancer-cli-rg \
    --name lb-frontend-ip \
    --sku Standard \
    --zone 1

Создание подсистемы балансировки нагрузки

В этом разделе объясняется, как создать и настроить следующие компоненты подсистемы балансировки нагрузки:

  • внешний пул IP-адресов, который получает входящий сетевой трафик на балансировщике нагрузки;

  • Пул IP-адресов бэкенда, в который фронтенд пул отправляет трафик с балансировкой нагрузки.

  • Проба работоспособности, определяющая работоспособность экземпляров серверной виртуальной машины

  • правило подсистемы балансировки нагрузки, определяющее распределение трафика между виртуальными машинами.

Создание ресурса подсистемы балансировки нагрузки

С помощью команды az network lb create создайте общедоступную подсистему балансировки нагрузки:

  az network lb create \
    --resource-group load-balancer-cli-rg \
    --name load-balancer \
    --sku Standard \
    --public-ip-address lb-frontend-ip \
    --frontend-ip-name lb-frontend \
    --backend-pool-name lb-backend-pool

При создании зонального общедоступного IP-адреса укажите зону при создании общедоступной подсистемы балансировки нагрузки.

  az network lb create \
    --resource-group load-balancer-cli-rg \
    --name load-balancer \
    --sku Standard \
    --public-ip-address lb-frontend-ip \
    --frontend-ip-name lb-frontend \
    --public-ip-zone 1 \
    --backend-pool-name lb-backend-pool

Создание зонда проверки состояния

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

Виртуальная машина с неудачной пробой удаляется из подсистемы балансировки нагрузки Виртуальная машина добавляется обратно в балансировщик нагрузки после устранения сбоя.

Создайте пробу работоспособности с помощью команды az network lb probe create.

  az network lb probe create \
    --resource-group load-balancer-cli-rg \
    --lb-name load-balancer \
    --name lb-health-probe \
    --protocol tcp \
    --port 80

Создайте правило балансировщика нагрузки

Правило подсистемы балансировки нагрузки определяет:

  • конфигурацию интерфейсных IP-адресов для входящего трафика;

  • серверный пул IP-адресов для приема трафика;

  • требуемые порты источника и назначения.

Создайте правило балансировщика нагрузки с помощью команды az network lb rule create.

  az network lb rule create \
    --resource-group load-balancer-cli-rg \
    --lb-name load-balancer \
    --name lb-HTTP-rule \
    --protocol tcp \
    --frontend-port 80 \
    --backend-port 80 \
    --frontend-ip-name lb-frontend \
    --backend-pool-name lb-backend-pool \
    --probe-name lb-health-probe \
    --disable-outbound-snat true \
    --idle-timeout 15 \
    --enable-tcp-reset true

Создание группы безопасности сети

Для стандартного балансировщика нагрузки виртуальные машины в серверном пуле должны иметь сетевые интерфейсы, принадлежащие группе безопасности сети.

Создайте группу безопасности сети с помощью команды az network nsg create.

  az network nsg create \
    --resource-group load-balancer-cli-rg \
    --name lb-nsg

Создание правила группы безопасности сети

Создайте правило группы безопасности сети с помощью az network nsg rule create.

  az network nsg rule create \
    --resource-group load-balancer-cli-rg \
    --nsg-name lb-nsg \
    --name lb-nsg-rule \
    --protocol '*' \
    --direction inbound \
    --source-address-prefix '*' \
    --source-port-range '*' \
    --destination-address-prefix '*' \
    --destination-port-range 80 \
    --access allow \
    --priority 200

Создайте узел-бастион.

В этом разделе описано, как создать ресурсы для Бастиона Azure. Используйте Бастион Azure для безопасного управления виртуальными машинами в серверном пуле подсистемы балансировки нагрузки.

Внимание

Почасовой тариф начинается с момента развертывания Бастиона, вне зависимости от использования исходящих данных. Дополнительные сведения см. в разделе "Цены и номера SKU". Если вы развертываете Бастион в рамках руководства или теста, рекомендуется удалить этот ресурс после завершения работы с ним.

Создание общедоступного IP-адреса

Чтобы создать общедоступный IP-адрес узла-бастиона, выполните команду az network public-ip create. Хост-бастион использует общедоступный IP-адрес для безопасного доступа к ресурсам виртуальной машины.

  az network public-ip create \
    --resource-group load-balancer-cli-rg \
    --name lb-vnet-bastion-ip \
    --sku Standard \
    --zone 1 2 3

Создайте подсеть бастиона

Используйте команду az network vnet subnet create, чтобы создать подсеть бастиона. Узел бастиона использует подсеть бастиона для доступа к виртуальной сети.

  az network vnet subnet create \
    --resource-group load-balancer-cli-rg \
    --name AzureBastionSubnet \
    --vnet-name lb-vnet \
    --address-prefixes 10.1.1.0/27

Создание узла бастиона

Используйте команду az network bastion create, чтобы создать узел-бастион. Bastion-хост обеспечивает безопасное подключение к ресурсам виртуальных машин, которые вы создадите далее в этой статье.

  az network bastion create \
    --resource-group load-balancer-cli-rg \
    --name lb-vnet-bastion \
    --public-ip-address lb-vnet-bastion-ip \
    --vnet-name lb-vnet \
    --sku Basic \
    --location eastus

Развертывание узла Бастион Azure может занять несколько минут.

Создание внутренних серверов

В этом разделе вы создаете:

  • два сетевых интерфейса для виртуальных машин;

  • Две виртуальные машины, используемые в качестве внутренних серверов для подсистемы балансировки нагрузки

Создание сетевых интерфейсов для виртуальных машин

Создайте два сетевых интерфейса с помощью az network nic create:

  array=(lb-VM1-nic lb-VM2-nic)
  for vmnic in "${array[@]}"
  do
    az network nic create \
        --resource-group load-balancer-cli-rg \
        --name $vmnic \
        --vnet-name lb-vnet \
        --subnet backend-subnet \
        --network-security-group lb-nsg
  done

Создание виртуальных машин

Создайте виртуальные машины с помощью az vm create:

  az vm create \
    --resource-group load-balancer-cli-rg \
    --name lb-VM1 \
    --nics lb-VM1-nic \
    --image Win2022AzureEditionCore \
    --size Standard_D2s_v3 \
    --admin-username azureuser \
    --zone 1 \
    --no-wait
  az vm create \
    --resource-group load-balancer-cli-rg \
    --name lb-VM2 \
    --nics lb-VM2-nic \
    --image Win2022AzureEditionCore \
    --size Standard_D2s_v3 \
    --admin-username azureuser \
    --zone 2 \
    --no-wait

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

Примечание.

Azure предоставляет IP-адрес исходящего доступа по умолчанию для виртуальных машин, которые либо не назначены общедоступным IP-адресом, либо находятся в серверном пуле внутренней подсистемы балансировки нагрузки Azure. Механизм IP-адреса исходящего трафика по умолчанию предоставляет исходящий IP-адрес, который нельзя настроить.

IP-адрес исходящего доступа по умолчанию отключен при возникновении одного из следующих событий:

  • Общедоступный IP-адрес назначается виртуальной машине.
  • Виртуальная машина размещается в серверном пуле стандартной подсистемы балансировки нагрузки с правилами исходящего трафика или без нее.
  • Ресурс шлюза NAT Azure назначается подсети виртуальной машины.

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

Дополнительные сведения об исходящих подключениях в Azure см. в статье об исходящем доступе по умолчанию в Azure и использовании преобразования исходящих сетевых адресов (SNAT) для исходящих подключений.

Добавление виртуальных машин во внутренний пул подсистемы балансировки нагрузки

Добавьте виртуальные машины в внутренний пул с помощью az network nic ip-config address-pool add:

  array=(lb-VM1-nic lb-VM2-nic)
  for vmnic in "${array[@]}"
  do
    az network nic ip-config address-pool add \
     --address-pool lb-backend-pool \
     --ip-config-name ipconfig1 \
     --nic-name $vmnic \
     --resource-group load-balancer-cli-rg \
     --lb-name load-balancer
  done

Создание шлюза NAT

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

Создание общедоступного IP-адреса

Используйте команду az network public-ip create, чтобы создать отдельный IP-адрес для исходящего подключения.

  az network public-ip create \
    --resource-group load-balancer-cli-rg \
    --name nat-gw-public-ip \
    --sku Standard \
    --zone 1 2 3

Чтобы создать зональный общедоступный IP-адрес в зоне 1, используйте следующую команду:

  az network public-ip create \
    --resource-group load-balancer-cli-rg \
    --name nat-gw-public-ip \
    --sku Standard \
    --zone 1

Создание ресурса шлюза NAT

Выполните команду az network nat gateway create для создания ресурса шлюза NAT. Общедоступный IP-адрес, созданный на предыдущем шаге, связывается с шлюзом NAT.

  az network nat gateway create \
    --resource-group load-balancer-cli-rg \
    --name lb-nat-gateway \
    --public-ip-addresses nat-gw-public-ip \
    --idle-timeout 10

Сопоставление шлюза NAT с подсетью

Настройте исходную подсеть в виртуальной сети, чтобы использовать конкретный ресурс шлюза NAT в команде az network vnet subnet update.

  az network vnet subnet update \
    --resource-group load-balancer-cli-rg \
    --vnet-name lb-vnet \
    --name backend-subnet \
    --nat-gateway lb-nat-gateway

Установить IIS

Используйте az vm extension set, чтобы установить IIS на виртуальных машинах и назначить имя компьютера в качестве имени веб-сайта по умолчанию.

  array=(lb-VM1 lb-VM2)
    for vm in "${array[@]}"
    do
     az vm extension set \
       --publisher Microsoft.Compute \
       --version 1.8 \
       --name CustomScriptExtension \
       --vm-name $vm \
       --resource-group load-balancer-cli-rg \
       --settings '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}'
  done

Тестирование подсистемы балансировки нагрузки

Чтобы получить общедоступный IP-адрес подсистемы балансировки нагрузки, используйте команду az network public-ip show.

Скопируйте общедоступный IP-адрес и вставьте его в адресную строку браузера.

  az network public-ip show \
    --resource-group load-balancer-cli-rg \
    --name lb-frontend-ip \
    --query ipAddress \
    --output tsv

Снимок экрана: окно браузера с страницей тестирования подсистемы балансировки нагрузки.

Очистка ресурсов

Если ресурсы больше не нужны, используйте команду az group delete , чтобы удалить группу ресурсов, подсистему балансировки нагрузки и все связанные ресурсы.

  az group delete \
    --name load-balancer-cli-rg

Следующие шаги

В этом кратком руководстве:

  • Вы создали общедоступный балансировщик нагрузки уровня «Стандартный».

  • Вы подключили две виртуальные машины.

  • Вы настроили правило маршрутизации трафика балансировщика нагрузки и проверку работоспособности.

  • Вы проверили подсистему балансировки нагрузки.

Чтобы узнать больше об Azure Load Balancer, ознакомьтесь со следующей статьей: