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

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

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

Если у вас еще нет подписки 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.28 или более поздней. Если вы используете Azure Cloud Shell, последняя версия уже установлена.

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

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

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

  az group create \
    --name CreatePubLBQS-rg \
    --location eastus

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

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

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

  az network vnet create \
    --resource-group CreatePubLBQS-rg \
    --location eastus \
    --name myVNet \
    --address-prefixes 10.1.0.0/16 \
    --subnet-name myBackendSubnet \
    --subnet-prefixes 10.1.0.0/24

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

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

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

  az network public-ip create \
    --resource-group CreatePubLBQS-rg \
    --name myPublicIP \
    --sku Standard \
    --zone 1 2 3

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

  az network public-ip create \
    --resource-group CreatePubLBQS-rg \
    --name myPublicIP \
    --sku Standard \
    --zone 1

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

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

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

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

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

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

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

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

  az network lb create \
    --resource-group CreatePubLBQS-rg \
    --name myLoadBalancer \
    --sku Standard \
    --public-ip-address myPublicIP \
    --frontend-ip-name myFrontEnd \
    --backend-pool-name myBackEndPool

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

  az network lb create \
    --resource-group CreatePubLBQS-rg \
    --name myLoadBalancer \
    --sku Standard \
    --public-ip-address myPublicIP \
    --frontend-ip-name myFrontEnd \
    --public-ip-zone 1 \
    --backend-pool-name myBackEndPool

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

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

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

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

  az network lb probe create \
    --resource-group CreatePubLBQS-rg \
    --lb-name myLoadBalancer \
    --name myHealthProbe \
    --protocol tcp \
    --port 80

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

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

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

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

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

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

  az network lb rule create \
    --resource-group CreatePubLBQS-rg \
    --lb-name myLoadBalancer \
    --name myHTTPRule \
    --protocol tcp \
    --frontend-port 80 \
    --backend-port 80 \
    --frontend-ip-name myFrontEnd \
    --backend-pool-name myBackEndPool \
    --probe-name myHealthProbe \
    --disable-outbound-snat true \
    --idle-timeout 15 \
    --enable-tcp-reset true

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

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

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

  az network nsg create \
    --resource-group CreatePubLBQS-rg \
    --name myNSG

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

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

  az network nsg rule create \
    --resource-group CreatePubLBQS-rg \
    --nsg-name myNSG \
    --name myNSGRuleHTTP \
    --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 CreatePubLBQS-rg \
    --name myBastionIP \
    --sku Standard \
    --zone 1 2 3

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

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

  az network vnet subnet create \
    --resource-group CreatePubLBQS-rg \
    --name AzureBastionSubnet \
    --vnet-name myVNet \
    --address-prefixes 10.1.1.0/27

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

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

  az network bastion create \
    --resource-group CreatePubLBQS-rg \
    --name myBastionHost \
    --public-ip-address myBastionIP \
    --vnet-name myVNet \
    --location eastus

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

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

В этом разделе показано, как создать:

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

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

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

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

  array=(myNicVM1 myNicVM2)
  for vmnic in "${array[@]}"
  do
    az network nic create \
        --resource-group CreatePubLBQS-rg \
        --name $vmnic \
        --vnet-name myVNet \
        --subnet myBackEndSubnet \
        --network-security-group myNSG
  done

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

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

  az vm create \
    --resource-group CreatePubLBQS-rg \
    --name myVM1 \
    --nics myNicVM1 \
    --image win2019datacenter \
    --admin-username azureuser \
    --zone 1 \
    --no-wait
  az vm create \
    --resource-group CreatePubLBQS-rg \
    --name myVM2 \
    --nics myNicVM2 \
    --image win2019datacenter \
    --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=(myNicVM1 myNicVM2)
  for vmnic in "${array[@]}"
  do
    az network nic ip-config address-pool add \
     --address-pool myBackendPool \
     --ip-config-name ipconfig1 \
     --nic-name $vmnic \
     --resource-group CreatePubLBQS-rg \
     --lb-name myLoadBalancer
  done

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

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

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

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

  az network public-ip create \
    --resource-group CreatePubLBQS-rg \
    --name myNATgatewayIP \
    --sku Standard \
    --zone 1 2 3

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

  az network public-ip create \
    --resource-group CreatePubLBQS-rg \
    --name myNATgatewayIP \
    --sku Standard \
    --zone 1

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

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

  az network nat gateway create \
    --resource-group CreatePubLBQS-rg \
    --name myNATgateway \
    --public-ip-addresses myNATgatewayIP \
    --idle-timeout 10

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

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

  az network vnet subnet update \
    --resource-group CreatePubLBQS-rg \
    --vnet-name myVNet \
    --name myBackendSubnet \
    --nat-gateway myNATgateway

Установить IIS

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

  array=(myVM1 myVM2)
    for vm in "${array[@]}"
    do
     az vm extension set \
       --publisher Microsoft.Compute \
       --version 1.8 \
       --name CustomScriptExtension \
       --vm-name $vm \
       --resource-group CreatePubLBQS-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 CreatePubLBQS-rg \
    --name myPublicIP \
    --query ipAddress \
    --output tsv

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

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

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

  az group delete \
    --name CreatePubLBQS-rg

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

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

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

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

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

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

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