Создание экземпляра Load Balancer (цен. категория "Стандартный") с зональным интерфейсным сервером с помощью Azure CLICreate a Standard Load Balancer with zonal frontend using Azure CLI

В этой статье приведены действия по созданию общедоступного экземпляра Load Balancer (цен. категория "Стандартный") с зональным внешним интерфейсом и с использованием общедоступного стандартного IP-адреса.This article steps through creating a public Standard Load Balancer with a zonal frontend using a Public IP Standard address. В этом сценарии нужно указать определенную зону для серверных и интерфейсных экземпляров, чтобы сопоставить ваш путь к данным и ресурсы с определенной зоной.In this scenario, you specify a particular zone for your front-end and back-end instances, to align your data path and resources with a specific zone.

Дополнительные сведения о том, как работают зоны доступности с Load Balancer уровня "Стандартный", см. в статье Azure Load Balancer уровня "Стандартный" и зоны доступности.For more information about using Availability zones with Standard Load Balancer, see Standard Load Balancer and Availability Zones.

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.If you don't have an Azure subscription, create a free account before you begin.

Использование Azure Cloud ShellUse Azure Cloud Shell

В Azure есть Azure Cloud Shell, интерактивная оболочка среды, с которой можно работать в браузере.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Для работы со службами Azure в Cloud Shell можно использовать bash и PowerShell.Cloud Shell lets you use either bash or PowerShell to work with Azure services. Для запуска кода из этой статьи можно использовать предварительно установленные команды Cloud Shell. Ничего дополнительного в локальной среде устанавливать не нужно.You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Чтобы запустить Azure Cloud Shell, выполните следующие действия:To launch Azure Cloud Shell:

ПараметрOption Пример и ссылкаExample/Link
Нажмите кнопку Попробовать в правом верхнем углу блока с кодом.Select Try It in the upper-right corner of a code block. При нажатии кнопки Попробовать код не копируется в Cloud Shell автоматически.Selecting Try It doesn't automatically copy the code to Cloud Shell. Открытие Azure Cloud Shell с помощью кнопки "Попробовать"
Перейдите по адресу https://shell.azure.com или нажмите кнопку Запуск Cloud Shell, чтобы открыть Cloud Shell в браузере.Go to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. Запуск Cloud Shell в новом окнеLaunch Cloud Shell in a new window
На портале Azure в правом верхнем углу в строке меню нажмите кнопку Cloud Shell.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Кнопка "Cloud Shell" на портале Azure

Чтобы выполнить код из этой статьи в Azure Cloud Shell, выполните следующие действия:To run the code in this article in Azure Cloud Shell:

  1. Запустите Cloud Shell.Launch Cloud Shell.

  2. В блоке кода нажмите кнопку Копировать, чтобы скопировать код.Select the Copy button on a code block to copy the code.

  3. Вставьте код в окно сеанса Cloud Shell, нажав клавиши Ctrl+Shift+V в Windows и Linux или Cmd+Shift+V в macOS.Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.

  4. Нажмите клавишу ВВОД, чтобы выполнить код.Press Enter to run the code.

Если вы планируете установить CLI и использовать его локально, обязательно установите последнюю версию Azure CLI и войдите в учетную запись Azure с помощью команды az login.If you choose to install and use the CLI locally, make sure that you have installed the latest Azure CLI and are logged in to an Azure account with az login.

Примечание

Поддержка зон доступности реализована для некоторых ресурсов, регионов и семейств размеров виртуальных машин Azure.Support for Availability Zones is available for select Azure resources and regions, and VM size families. Дополнительные сведения о начале работы и о том, какие ресурсы, регионы и семейства размеров виртуальных машин Azure поддерживаются для зон доступности, см. в разделе Обзор зон доступности.For more information on how to get started, and which Azure resources, regions, and VM size families you can try availability zones with, see Overview of Availability Zones. Чтобы получить поддержку, обратитесь на форум StackOverflow или создайте запрос в службу поддержки Azure.For support, you can reach out on StackOverflow or open an Azure support ticket.

Создание группы ресурсовCreate a resource group

Создайте группу ресурсов с помощью команды az group create.Create a resource group with az group create. Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими.An Azure resource group is a logical container into which Azure resources are deployed and managed.

В следующем примере создается группа ресурсов с именем myResourceGroupLB в расположении westeurope.The following example creates a resource group named myResourceGroupLB in the westeurope location:

az group create \
--name myResourceGroupLB \
--location westeurope

Создание зонального общедоступного стандартного IP-адресаCreate a zonal public IP Standard

Для доступа к приложению через Интернет требуется общедоступный IP-адрес для балансировщика нагрузки.To access your app on the Internet, you need a public IP address for the load balancer. Общедоступный IP-адрес, созданный в определенной зоне, всегда существует только в этой зоне.A Public IP address that is created in a specific zone always exists only in that zone. Невозможно изменить зону общедоступного IP-адреса.It is not possible to change the zone of a Public IP address.

Создайте общедоступный IP-адрес с помощью команды az network public-ip create.Create a public IP address with az network public-ip create. В следующем примере создается зональный общедоступный IP-адрес myPublicIP в группе ресурсов myResourceGroupLoadBalancer в зоне 1.The following example creates a zonal public IP address named myPublicIP in the myResourceGroupLoadBalancer resource group in zone 1.

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

Создание общедоступной подсистемы Azure Load Balancer (цен. категория "Стандартный")Create Azure Standard Load Balancer

В этом разделе описано, как создать и настроить следующие компоненты подсистемы балансировки нагрузки:This section details how you can create and configure the following components of the load balancer:

  • интерфейсный пул IP-адресов, который получает входящий трафик в подсистеме балансировки нагрузки;a frontend IP pool that receives the incoming network traffic on the load balancer.
  • внутренний пул IP-адресов, на который внешний пул отправляет трафик с балансировкой нагрузки;a backend IP pool where the frontend pool sends the load balanced network traffic.
  • зонд работоспособности, определяющий работоспособность серверных экземпляров виртуальной машины;a health probe that determines health of the backend VM instances.
  • правило подсистемы балансировки нагрузки, определяющее порядок распределения трафика между виртуальными машинами.a load balancer rule that defines how traffic is distributed to the VMs.

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

Создайте подсистему балансировки нагрузки уровня "Стандартный" с помощью команды az network lb create.Create a Standard Load Balancer with az network lb create. В следующем примере создается подсистема балансировки нагрузки myLoadBalancer, а адрес myPublicIP назначается внешней IP-конфигурации.The following example creates a load balancer named myLoadBalancer and assigns the myPublicIP address to the front-end IP configuration.

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

Создание проверки работоспособности на порте 80Create health probe on port 80

Проба работоспособности проверяет все экземпляры виртуальной машины, чтобы убедиться, что они могут отправлять сетевой трафик.A health probe checks all virtual machine instances to make sure they can send network traffic. Экземпляр виртуальной машины с неудачной пробой удаляется из балансировщика нагрузки, пока не перейдет в оперативный режим и проба не определит его работоспособность.The virtual machine instance with failed probe checks is removed from the load balancer until it goes back online and a probe check determines that it's healthy. Создайте проверку работоспособности с помощью команды az network lb probe create, чтобы отслеживать работоспособность виртуальных машин.Create a health probe with az network lb probe create to monitor the health of the virtual machines. Чтобы создать пробу работоспособности TCP, используйте команду az network lb probe create.To create a TCP health probe, you use az network lb probe create. В следующем примере создается проба TCP myHealthProbe.The following example creates a health probe named myHealthProbe:

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

Создание правила подсистемы балансировки нагрузки для порта 80Create load balancer rule for port 80

Правило подсистемы балансировки нагрузки определяет интерфейсную конфигурацию IP-адресов для входящего трафика и внутренний пул IP-адресов для приема трафика, а также порты источника и назначения.A load balancer rule defines the front-end IP configuration for the incoming traffic and the back-end IP pool to receive the traffic, along with the required source and destination port. С помощью команды az network lb rule create создайте правило подсистемы балансировки нагрузки с именем myLoadBalancerRuleWeb для прослушивания порта 80, используемого внешним пулом myFrontEndPool, и отправки трафика с балансировкой нагрузки внутреннему пулу адресов myBackEndPool, который также использует порт 80.Create a load balancer rule myLoadBalancerRuleWeb with az network lb rule create for listening to port 80 in the frontend pool myFrontEndPool and sending load-balanced network traffic to the backend address pool myBackEndPool also using port 80.

az network lb rule create \
--resource-group myResourceGroupLB \
--lb-name myLoadBalancer \
--name myLoadBalancerRuleWeb \
--protocol tcp \
--frontend-port 80 \
--backend-port 80 \
--frontend-ip-name myFrontEndPool \
--backend-pool-name myBackEndPool \
--probe-name myHealthProbe

Настройка виртуальной сетиConfigure virtual network

Прежде чем развертывать виртуальные машины и тестировать подсистему балансировки нагрузки, создайте вспомогательные ресурсы виртуальной сети.Before you deploy some VMs and can test your load balancer, create the supporting virtual network resources.

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

С помощью команды az network vnet create в группе ресурсов myResourceGroup создайте виртуальную сеть с именем myVnet, содержащую подсеть mySubnet.Create a virtual network named myVnet with a subnet named mySubnet in the myResourceGroup using az network vnet create.

az network vnet create \
--resource-group myResourceGroupLB \
--location westeurope \
--name myVnet \
--subnet-name mySubnet

Создание группы безопасности сетиCreate a network security group

Создайте группу безопасности сети с именем myNetworkSecurityGroup для определения входящих подключений к виртуальной сети с помощью команды az network nsg create.Create network security group named myNetworkSecurityGroup to define inbound connections to your virtual network with az network nsg create.

az network nsg create \
--resource-group myResourceGroupLB \
--name myNetworkSecurityGroup

Создайте правило группы безопасности сети с именем myNetworkSecurityGroupRule для порта 80 с помощью команды az network nsg rule create.Create a network security group rule named myNetworkSecurityGroupRule for port 80 with az network nsg rule create.

az network nsg rule create \
--resource-group myResourceGroupLB \
--nsg-name myNetworkSecurityGroup \
--name myNetworkSecurityGroupRule \
--protocol tcp \
--direction inbound \
--source-address-prefix '*' \
--source-port-range '*' \
--destination-address-prefix '*' \
--destination-port-range 80 \
--access allow \
--priority 200

Создание сетевых адаптеровCreate NICs

Создайте три виртуальных сетевых адаптера с помощью команды az network nic create и привяжите их к общедоступному IP-адресу и группе безопасности сети.Create three virtual NICs with az network nic create and associate them with the Public IP address and the network security group. В следующем примере создаются три виртуальных сетевых адаптераThe following example creates three virtual NICs. (по одной виртуальной сетевой карте для каждой виртуальной машины, используемой приложением).(One virtual NIC for each VM you create for your app in the following steps). Вы можете в любое время создать дополнительные виртуальные сетевые карты и виртуальные машины и добавить их в балансировщик нагрузки:You can create additional virtual NICs and VMs at any time and add them to the load balancer:

for i in `seq 1 3`; do
    az network nic create \
        --resource-group myResourceGroupLB \
        --name myNic$i \
        --vnet-name myVnet \
        --subnet mySubnet \
        --network-security-group myNetworkSecurityGroup \
        --lb-name myLoadBalancer \
        --lb-address-pools myBackEndPool
done

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

В этом примере описано, как создать три виртуальные машины, расположенные в зоне 1, которые будут использоваться в качестве внутренних серверов для подсистемы балансировки нагрузки.In this example, you create three virtual machines located in zone 1 to be used as backend servers for the load balancer. Чтобы проверить, успешно ли создана подсистема балансировки нагрузки, установите NGINX на виртуальных машинах.You also install NGINX on the virtual machines to verify that the load balancer was successfully created.

Создание конфигурации cloud-initCreate cloud-init config

Тот же самый файл конфигурации cloud-init можно использовать и для установки NGINX, а также для запуска простого приложения Node.js "Hello World" на виртуальной машине Linux.You can use a cloud-init configuration file to install NGINX and run a 'Hello World' Node.js app on a Linux virtual machine. В текущей оболочке создайте файл cloud-init.txt и вставьте в него следующую конфигурацию.In your current shell, create a file named cloud-init.txt and copy and paste the following configuration into the shell. Убедитесь, что весь файл cloud-init скопирован правильно, особенно первая строка.Make sure that you copy the whole cloud-init file correctly, especially the first line:

#cloud-config
package_upgrade: true
packages:
  - nginx
  - nodejs
  - npm
write_files:
  - owner: www-data:www-data
  - path: /etc/nginx/sites-available/default
    content: |
      server {
        listen 80;
        location / {
          proxy_pass http://localhost:3000;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection keep-alive;
          proxy_set_header Host $host;
          proxy_cache_bypass $http_upgrade;
        }
      }
  - owner: azureuser:azureuser
  - path: /home/azureuser/myapp/index.js
    content: |
      var express = require('express')
      var app = express()
      var os = require('os');
      app.get('/', function (req, res) {
        res.send('Hello World from host ' + os.hostname() + '!')
      })
      app.listen(3000, function () {
        console.log('Hello world app listening on port 3000!')
      })
runcmd:
  - service nginx restart
  - cd "/home/azureuser/myapp"
  - npm init
  - npm install express -y
  - nodejs index.js

Создание зональных виртуальных машинCreate the zonal virtual machines

Создайте виртуальные машины с помощью команды az vm create.Create the VMs with az vm create. В следующем примере создаются три виртуальные машины в зоне 1 и ключи SSH при их отсутствии:The following example creates three VMs in zone 1 and generates SSH keys if they do not already exist:

for i in `seq 1 3`; do
 az vm create \
--resource-group myResourceGroupLB \
--name myVM$i \
--nics myNic$i \
--image UbuntuLTS \
--generate-ssh-keys \
--zone 1 \
--custom-data cloud-init.txt
done

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

Получите общедоступный IP-адрес подсистемы балансировки нагрузки, используя команду az network public-ip show.Get the public IP address of the load balancer using az network public-ip show.

  az network public-ip show \
    --resource-group myResourceGroupSLB \
    --name myPublicIP \
    --query [ipAddress] \
    --output tsv

После этого можно ввести общедоступный IP-адрес в веб-браузер.You can then enter the public IP address in to a web browser. Прежде чем подсистема балансировки нагрузки начнет распределять трафик между виртуальными машинами, виртуальные машины должны быть подготовлены. Эта подготовка может занять несколько минут.Remember - it takes a few minutes for the VMs to be ready before the load balancer starts to distribute traffic to them. Отображается приложение, а также имя узла виртуальной машины, на которую балансировщик нагрузки направил трафик, как показано в следующем примере:The app is displayed, including the hostname of the VM that the load balancer distributed traffic to as in the following example:

Запуск приложения Node.js

Чтобы увидеть, как подсистема балансировки нагрузки распределяет трафик на виртуальные машины в зоне 1, на которых выполняется приложение, принудительно обновите веб-браузер.To see the load balancer distribute traffic to VMs within zone 1 that are running your app, you can force-refresh your web browser.

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