Упражнение. Настройка общедоступной подсистемы балансировки нагрузки
Azure Load Balancer можно настроить с помощью портала Azure, PowerShell или Azure CLI.
В вашей организации здравоохранения вы хотите сбалансировать трафик клиента, чтобы обеспечить согласованный ответ на основе работоспособности веб-серверов на портале пациентов. У вас есть две виртуальные машины (виртуальные машины) в группе доступности, которые будут выступать в качестве веб-приложения портала здравоохранения.
Здесь вы создадите ресурс подсистемы балансировки нагрузки и используете его для распределения нагрузки между виртуальными машинами.
Развертывание веб-приложения портала для пациентов
Сначала разверните приложение на портале пациентов на двух виртуальных машинах в одном наборе доступности. Чтобы сэкономить время, мы выполним скрипт для создания приложения. Сценарий:
- Создает виртуальную сеть и сетевую инфраструктуру для виртуальных машин.
- Создает две виртуальные машины в этой виртуальной сети.
Развертывание веб-приложения портала для пациентов:
Выполните в Azure Cloud Shell приведенную ниже команду
git clone
. Она клонирует репозиторий с исходным кодом приложения и запускает сценарий настройки из GitHub. Затем измените каталог клонированного репозитория.git clone https://github.com/MicrosoftDocs/mslearn-improve-app-scalability-resiliency-with-load-balancer.git cd mslearn-improve-app-scalability-resiliency-with-load-balancer
Как предполагается, сценарий создает две виртуальные машины в одной группе доступности. Выполнение займет около двух минут.
bash create-high-availability-vm-with-sets.sh <rgn>[sandbox resource group name]</rgn>
Когда выполнение скрипта завершится, на портале Microsoft Azure или на домашней странице выберите пункт Группы ресурсов, а затем выберите группу ресурсов
[имя группы ресурсов песочницы] . Просмотрите ресурсы, созданные скриптом.
Создание подсистемы балансировки нагрузки
Теперь создадим подсистему балансировки нагрузки.
В меню портала Azure или на домашней странице в разделе Службы Azure выберите пункт Создать ресурс. Откроется панель Создание ресурса.
В поле поиска Поиск по службам и Marketplace введите Подсистема балансировки нагрузки и нажмите клавишу ВВОД.
В следующем списке выберите Load Balancer — Майкрософт, а затем нажмите кнопку "Создать".
На вкладке Основные сведения введите указанные ниже значения для каждого параметра.
Параметр Значение Сведения о проекте Отток подписок Ваша подписка Группа ресурсов Выберите [имя группы ресурсов песочницы] .Сведения об экземпляре Имя. Введите уникальное имя. Например, Pub-LB-PatientsPortal. Область/регион Выберите расположение, где будут созданы виртуальные машины. Номер SKU Стандартные Тип Открытый Уровень Regional
Добавление IP-конфигурации внешнего интерфейса
Выберите Далее: IP-конфигурация внешнего интерфейса.
Выберите + Добавить интерфейсную IP-конфигурацию. Откроется область Добавление интерфейсной IP-конфигурации.
Введите указанные ниже значения для каждого параметра.
Параметр Значение Имя. Введите уникальное имя для интерфейсной IP-конфигурации. Например, myFrontendIP Версия протокола IP-адресов Выберите IPv4. Тип IP-адреса Выбор IP-адреса Общедоступный IP-адрес Нажмите кнопку "Создать", а затем присвойте IP-адресу имя и нажмите кнопку "Сохранить". Gateway Load Balancer Выберите Нет. Чтобы закрыть диалоговое окно, нажмите кнопку "Сохранить". Откроется область Создание подсистемы балансировки нагрузки.
Добавление внутреннего пула
Выберите Далее: серверные пулы.
Щелкните + Добавить внутренний пул. Откроется область Добавить серверный пул.
Введите указанные ниже значения для каждого параметра.
Параметр Значение Имя. Введите уникальное имя для внутреннего пула. Например, bepool-http. Виртуальная сеть Убедитесь, что выбран параметр bePortalVnet . В разделе IP-конфигураций нажмите кнопку "Добавить". Откроется область Добавление IP-конфигураций в серверный пул.
В разделе Виртуальная машина выберите виртуальные машины webVM1 и webVM2 и нажмите кнопку Добавить.
Снова откроется экран Добавление серверного пула. В разделе IP-конфигурации выберите виртуальные машины webVM1 и webVM2 и нажмите кнопку Сохранить. Откроется экран Создание подсистемы балансировки нагрузки.
Добавление правила балансировки нагрузки
Наконец, создадим правило для подсистемы балансировки нагрузки.
Выберите Далее: правила для входящего трафика.
В разделе Правило балансировки нагрузки выберите + Добавить правило балансировки нагрузки. Откроется область Добавление правила балансировки нагрузки.
Введите указанные ниже значения для каждого параметра.
Параметр Значение Имя. Имя для правила балансировки нагрузки. Например, lbrule-http. Версия IP-адреса IРv4 Интерфейсный IP-адрес Выберите интерфейсный IP-адрес, который вы назвали ранее. Внутренний пул Выберите серверный пул, который вы назвали ранее. Например, bepool-http. Протокол TCP Порт Введите значение 80 (по умолчанию). Серверный порт Введите значение 80 (по умолчанию). Проба работоспособности Щелкните ссылку Создать. Откроется диалоговое окно Добавление пробы работоспособности. Введите указанные ниже значения для каждого параметра.
Параметр Значение Имя. Имя для проверки работоспособности. Например, healthprobe-http. Протокол TCP Порт Введите значение 80 (по умолчанию). Интервал Введите значение 5 (по умолчанию). Это промежуток времени между выполнениями зонда. Нажмите Сохранить, чтобы закрыть диалоговое окно. Снова откроется область Добавление правила балансировки нагрузки.
Введите указанные ниже значения для каждого параметра.
Параметр Значение Сохранение сеанса* None (по умолчанию) Время ожидания простоя (в минутах) Выберите значение 4 (по умолчанию). Это значение — это время, чтобы сохранить протокол управления передачей (TCP) или HTTP-подключение без использования клиентов для отправки сообщений в режиме поддержания активности. Плавающий IP-адрес Отключено (по умолчанию). Нажмите кнопку "Сохранить", чтобы завершить настройку правила балансировки нагрузки.
Откроется экран Создание подсистемы балансировки нагрузки. Выберите Review + create (Просмотреть и создать).
После завершения проверки нажмите кнопку Создать. После завершения развертывания выберите Перейти к ресурсу.
На странице Обзор скопируйте и сохраните общедоступный IP-адрес. Чтобы просмотреть общедоступный IP-адрес, может потребоваться выбрать дополнительные сведения.
Создание IP-адресов
Сначала нам требуется общедоступный IP-адрес для подсистемы балансировки нагрузки.
В Cloud Shell запустите PowerShell, выполнив следующую команду:
pwsh
В PowerShell создайте новый общедоступный IP-адрес:
$Location = $(Get-AzureRmResourceGroup -ResourceGroupName <rgn>[sandbox resource group name]</rgn>).Location $publicIP = New-AzPublicIpAddress ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Location $Location ` -AllocationMethod "Static" ` -Name "myPublicIP"
Создайте интерфейсный IP-адрес с помощью командлета New-AzLoadBalancerFrontendIpConfig. Следующий код создает интерфейсную IP-конфигурацию с именем myFrontEnd и подключает адрес myPublicIP :
$frontendIP = New-AzLoadBalancerFrontendIpConfig ` -Name "myFrontEnd" ` -PublicIpAddress $publicIP
Создание подсистемы балансировки нагрузки
Если для настройки подсистемы балансировки нагрузки используется PowerShell, перед ее созданием необходимо создать внутренний пул адресов, пробу работоспособности и правило.
Создайте серверный пул адресов с помощью командлета New-AzLoadBalancerBackendAddressPoolConfig. Вы собираетесь подключить виртуальные машины к этому внутреннему пулу в заключительных шагах. В следующем примере создается серверный пул адресов myBackEndPool.
$backendPool = New-AzLoadBalancerBackendAddressPoolConfig -Name "myBackEndPool"
Создайте пробу работоспособности, чтобы разрешить подсистеме балансировки нагрузки отслеживать состояние портала здравоохранения. Зонд работоспособности динамически добавляет или удаляет виртуальные машины в подсистеме балансировки нагрузки на основе их ответа на проверки работоспособности.
$probe = New-AzLoadBalancerProbeConfig ` -Name "myHealthProbe" ` -Protocol http ` -Port 80 ` -IntervalInSeconds 5 ` -ProbeCount 2 ` -RequestPath "/"
Теперь требуется правило подсистемы балансировки нагрузки для определения распределения трафика на виртуальных машинах. Вы определяете интерфейсную конфигурацию IP-адресов для входящего трафика и внутренний пул IP-адресов для приема трафика, а также требуемый порт источника и назначения. Чтобы обеспечить получение трафика только работоспособными виртуальными машинами, можно также определить используемый зонд работоспособности.
$lbrule = New-AzLoadBalancerRuleConfig ` -Name "myLoadBalancerRule" ` -FrontendIpConfiguration $frontendIP ` -BackendAddressPool $backendPool ` -Protocol Tcp ` -FrontendPort 80 ` -BackendPort 80 ` -Probe $probe
Теперь можно создать базовую подсистему балансировки нагрузки, выполнив командлет New-AzLoadBalancer :
$lb = New-AzLoadBalancer ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Name 'MyLoadBalancer' ` -Location $Location ` -FrontendIpConfiguration $frontendIP ` -BackendAddressPool $backendPool ` -Probe $probe ` -LoadBalancingRule $lbrule
Подключите виртуальные машины к серверному пулу, обновив сетевые интерфейсы, созданные сценарием, с помощью данных серверного пула.
$nic1 = Get-AzNetworkInterface -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "webNic1" $nic2 = Get-AzNetworkInterface -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "webNic2" $nic1.IpConfigurations[0].LoadBalancerBackendAddressPools = $backendPool $nic2.IpConfigurations[0].LoadBalancerBackendAddressPools = $backendPool Set-AzNetworkInterface -NetworkInterface $nic1 -AsJob Set-AzNetworkInterface -NetworkInterface $nic2 -AsJob
Выполните следующую команду, чтобы получить общедоступный IP-адрес подсистемы балансировки нагрузки и URL-адрес веб-сайта:
Write-Host http://$($(Get-AzPublicIPAddress ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Name "myPublicIP").IpAddress)
Создание подсистемы балансировки нагрузки
Давайте создадим подсистему балансировки нагрузки и связанные с ней ресурсы с помощью Azure CLI.
Создайте общедоступный IP-адрес.
az network public-ip create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --allocation-method Static \ --name myPublicIP
Создайте подсистему балансировки нагрузки.
az network lb create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --name myLoadBalancer \ --public-ip-address myPublicIP \ --frontend-ip-name myFrontEndPool \ --backend-pool-name myBackEndPool
Создайте пробу работоспособности, которая позволяет подсистеме балансировки нагрузки отслеживать состояние портала здравоохранения. Проба работоспособности динамически добавляет или удаляет виртуальные машины из смены подсистемы балансировки нагрузки на основе их ответа на проверки работоспособности.
az network lb probe create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --lb-name myLoadBalancer \ --name myHealthProbe \ --protocol tcp \ --port 80
Теперь необходимо правило подсистемы балансировки нагрузки, чтобы определить, как распределяется трафик на виртуальные машины. Вы определяете интерфейсную конфигурацию IP-адресов для входящего трафика и внутренний пул IP-адресов для приема трафика, а также требуемый порт источника и назначения. Чтобы обеспечить получение трафика только работоспособными виртуальными машинами, можно также определить используемый зонд работоспособности.
az network lb rule create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --lb-name myLoadBalancer \ --name myHTTPRule \ --protocol tcp \ --frontend-port 80 \ --backend-port 80 \ --frontend-ip-name myFrontEndPool \ --backend-pool-name myBackEndPool \ --probe-name myHealthProbe
Подключите виртуальные машины к серверному пулу, обновив сетевые интерфейсы, созданные сценарием, с помощью данных серверного пула.
az network nic ip-config update \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --nic-name webNic1 \ --name ipconfig1 \ --lb-name myLoadBalancer \ --lb-address-pools myBackEndPool az network nic ip-config update \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --nic-name webNic2 \ --name ipconfig1 \ --lb-name myLoadBalancer \ --lb-address-pools myBackEndPool
Выполните следующую команду, чтобы получить общедоступный IP-адрес подсистемы балансировки нагрузки и URL-адрес веб-сайта:
echo http://$(az network public-ip show \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --name myPublicIP \ --query ipAddress \ --output tsv)
Тестирование конфигурации подсистемы балансировки нагрузки
Давайте протестируем настройку подсистемы балансировки нагрузки, показывая, как она может динамически обрабатывать проблемы доступности и работоспособности.
На новой вкладке браузера перейдите по записанному общедоступному IP-адресу. Ответ от одной из виртуальных машин отображается в браузере.
Попробуйте выполнить принудительное обновление, нажав клавиши CTRL+F5 несколько раз, чтобы увидеть, что ответ возвращается случайным образом из обеих виртуальных машин.
В меню портала Microsoft Azure или на домашней странице выберите Все ресурсы. Затем выберите webVM1 и нажмите кнопку Остановить.
Вернитесь на вкладку с веб-сайтом и принудительно обновите страницу. Все запросы возвращаются из webVM2.