Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: ✔️ Виртуальные машины Windows ✔️ Универсальные масштабируемые наборы
Балансировка нагрузки обеспечивает более высокий уровень доступности, распространяя входящие запросы на несколько виртуальных машин. В этом руководстве описаны различные компоненты подсистемы балансировки нагрузки Azure, которые распределяют трафик и обеспечивают высокий уровень доступности. Вы узнаете, как:
- Создание подсистемы балансировки нагрузки Azure
- Создание пробы работоспособности подсистемы балансировки нагрузки
- Создание правил трафика подсистемы балансировки нагрузки
- Создание базового сайта IIS с помощью расширения пользовательского скрипта
- Создание виртуальных машин и подключение к подсистеме балансировки нагрузки
- Просмотр подсистемы балансировки нагрузки в действии
- Добавление и удаление виртуальных машин из подсистемы балансировки нагрузки
Общие сведения о подсистеме балансировки нагрузки Azure
Подсистема балансировки нагрузки Azure — это подсистема балансировки нагрузки уровня 4 (TCP, UDP), которая обеспечивает высокую доступность путем распределения входящего трафика между работоспособными виртуальными машинами. Проба работоспособности подсистемы балансировки нагрузки отслеживает заданный порт на каждой виртуальной машине и распределяет трафик только на операционную виртуальную машину.
Вы определяете интерфейсную IP-конфигурацию, содержащую один или несколько общедоступных IP-адресов. Эта интерфейсная IP-конфигурация позволяет подсистеме балансировки нагрузки и приложениям быть доступными через Интернет.
Виртуальные машины подключаются к балансировщику нагрузки с помощью виртуального сетевого интерфейса (NIC). Для распространения трафика на виртуальные машины серверный пул адресов содержит IP-адреса виртуальных сетевых адаптеров, подключенных к подсистеме балансировки нагрузки.
Чтобы управлять потоком трафика, необходимо определить правила балансировки нагрузки для определенных портов и протоколов, соответствующих вашим виртуальным машинам.
Запуск Azure Cloud Shell
Azure Cloud Shell — это бесплатная интерактивная оболочка, с помощью которой можно выполнять действия, описанные в этой статье. Он содержит стандартные средства Azure, предварительно установленные и настроенные для использования с вашей учетной записью.
Чтобы открыть Cloud Shell, просто выберите Попробовать в правом верхнем углу блока кода. Cloud Shell можно также запустить в отдельной вкладке браузера, перейдя на страницу https://shell.azure.com/powershell. Нажмите кнопку Копировать, чтобы скопировать блоки кода. Вставьте код в Cloud Shell и нажмите клавишу "ВВОД", чтобы выполнить его.
Создание подсистемы балансировки нагрузки Azure
В этом разделе описано, как создать и настроить каждый компонент подсистемы балансировки нагрузки. Прежде чем создать балансировщик нагрузки, создайте группу ресурсов с New-AzResourceGroup. В следующем примере создается группа ресурсов с именем myResourceGroupLoadBalancer в расположении EastUS :
New-AzResourceGroup `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-Location "EastUS"
Создание общедоступного IP-адреса
Для доступа к приложению в Интернете требуется общедоступный IP-адрес подсистемы балансировки нагрузки. Создайте общедоступный IP-адрес с помощью New-AzPublicIpAddress. В следующем примере создается общедоступный IP-адрес с именем myPublicIP в группе ресурсов myResourceGroupLoadBalancer :
$publicIP = New-AzPublicIpAddress `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-Location "EastUS" `
-AllocationMethod "Static" `
-Name "myPublicIP"
Создание подсистемы балансировки нагрузки
Создайте внешний пул IP-адресов с помощью New-AzLoadBalancerFrontendIpConfig. В следующем примере создается внешний пул IP-адресов с именем myFrontEndPool и подключается адрес myPublicIP :
$frontendIP = New-AzLoadBalancerFrontendIpConfig `
-Name "myFrontEndPool" `
-PublicIpAddress $publicIP
Создайте серверный пул адресов с New-AzLoadBalancerBackendAddressPoolConfig. Виртуальные машины присоединяются в этот внутренний пул на следующих шагах. В следующем примере создается серверный пул адресов с именем myBackEndPool:
$backendPool = New-AzLoadBalancerBackendAddressPoolConfig `
-Name "myBackEndPool"
Теперь создайте подсистему балансировки нагрузки с помощью New-AzLoadBalancer. В следующем примере создается подсистема балансировки нагрузки с именем myLoadBalancer с помощью интерфейсных и внутренних пулов IP-адресов, созданных на предыдущих шагах:
$lb = New-AzLoadBalancer `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-Name "myLoadBalancer" `
-Location "EastUS" `
-FrontendIpConfiguration $frontendIP `
-BackendAddressPool $backendPool
Создание пробы работоспособности
Чтобы разрешить подсистеме балансировки нагрузки отслеживать состояние приложения, используйте пробу работоспособности. Проба работоспособности динамически добавляет или удаляет виртуальные машины из очереди балансировщика нагрузки, основываясь на их ответах на проверки работоспособности. По умолчанию виртуальная машина удаляется из распределения подсистемы балансировки нагрузки после двух последовательных сбоев через 15 секунд. Вы создаете пробу работоспособности на основе протокола или определенной страницы проверки работоспособности приложения.
В следующем примере создается TCP-зонд. Вы также можете создавать пользовательские HTTP-запросы для более точных проверок состояния. При использовании пользовательской пробы HTTP необходимо создать страницу проверки работоспособности, такую как healthcheck.aspx. Проба должна возвращать ответ HTTP 200 OK для балансировщика нагрузки, чтобы узел оставался в ротации.
Чтобы создать пробу работоспособности TCP, используйте Add-AzLoadBalancerProbeConfig. В следующем примере создается проба работоспособности с именем myHealthProbe , которая отслеживает каждую виртуальную машину на TCP-порту80:
Add-AzLoadBalancerProbeConfig `
-Name "myHealthProbe" `
-LoadBalancer $lb `
-Protocol tcp `
-Port 80 `
-IntervalInSeconds 15 `
-ProbeCount 2
Чтобы применить пробу работоспособности, обновите подсистему балансировки нагрузки с помощью Set-AzLoadBalancer:
Set-AzLoadBalancer -LoadBalancer $lb
Создайте правило балансировщика нагрузки
Правило балансировщика нагрузки позволяет определить распределение трафика между виртуальными машинами. Вы определяете интерфейсную конфигурацию IP-адресов для входящего трафика и внутренний пул IP-адресов для приема трафика, а также требуемый порт источника и назначения. Чтобы убедиться, что только здоровые виртуальные машины получают трафик, вы также определяете пробу работоспособности для использования.
Создайте правило балансировщика нагрузки, используя Add-AzLoadBalancerRuleConfig. В следующем примере создается правило подсистемы балансировки нагрузки с именем myLoadBalancerRule и балансирует трафик через TCP-порт80:
$probe = Get-AzLoadBalancerProbeConfig -LoadBalancer $lb -Name "myHealthProbe"
Add-AzLoadBalancerRuleConfig `
-Name "myLoadBalancerRule" `
-LoadBalancer $lb `
-FrontendIpConfiguration $lb.FrontendIpConfigurations[0] `
-BackendAddressPool $lb.BackendAddressPools[0] `
-Protocol Tcp `
-FrontendPort 80 `
-BackendPort 80 `
-Probe $probe
Обновите подсистему балансировки нагрузки с помощью Set-AzLoadBalancer:
Set-AzLoadBalancer -LoadBalancer $lb
Настройка виртуальной сети
Прежде чем развертывать некоторые виртуальные машины и тестировать балансировщик, создайте вспомогательные ресурсы виртуальной сети. Дополнительные сведения о виртуальных сетях см. в руководстве по управлению виртуальными сетями Azure .
Создание сетевых ресурсов
Создайте виртуальную сеть с помощью New-AzVirtualNetwork. В следующем примере создается виртуальная сеть myVnet с подсетью mySubnet.
# Create subnet config
$subnetConfig = New-AzVirtualNetworkSubnetConfig `
-Name "mySubnet" `
-AddressPrefix 192.168.1.0/24
# Create the virtual network
$vnet = New-AzVirtualNetwork `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-Location "EastUS" `
-Name "myVnet" `
-AddressPrefix 192.168.0.0/16 `
-Subnet $subnetConfig
Виртуальные сетевые адаптеры создаются при помощи New-AzNetworkInterface. В следующем примере создаются три виртуальных сетевых адаптера. (по одной виртуальной сетевой карте для каждой виртуальной машины, которую вы создадите для вашего приложения в следующих шагах). Вы можете создавать дополнительные виртуальные сетевые адаптеры и виртуальные машины в любое время и добавлять их в подсистему балансировки нагрузки:
for ($i=1; $i -le 3; $i++)
{
New-AzNetworkInterface `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-Name myVM$i `
-Location "EastUS" `
-Subnet $vnet.Subnets[0] `
-LoadBalancerBackendAddressPool $lb.BackendAddressPools[0]
}
Создание виртуальных машин
Чтобы улучшить высокую доступность приложения, поместите виртуальные машины в группу доступности.
Создайте группу доступности с помощью командлета PowerShell New-AzAvailabilitySet. В следующем примере создается набор доступности с именем myAvailabilitySet.
$availabilitySet = New-AzAvailabilitySet `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-Name "myAvailabilitySet" `
-Location "EastUS" `
-Sku aligned `
-PlatformFaultDomainCount 2 `
-PlatformUpdateDomainCount 2
Задайте имя пользователя и пароль администратора для виртуальных машин с помощью командлета Get-Credential:
$cred = Get-Credential
Теперь вы можете создать виртуальные машины с помощью New-AzVM. В следующем примере создаются три виртуальных машины и необходимые компоненты виртуальной сети, если они еще не существуют:
for ($i=1; $i -le 3; $i++)
{
New-AzVm `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-Name "myVM$i" `
-Location "East US" `
-VirtualNetworkName "myVnet" `
-SubnetName "mySubnet" `
-SecurityGroupName "myNetworkSecurityGroup" `
-OpenPorts 80 `
-AvailabilitySetName "myAvailabilitySet" `
-Credential $cred `
-AsJob
}
Параметр -AsJob
создает виртуальную машину как фоновую задачу, поэтому командная строка PowerShell становится доступной снова. Вы можете просмотреть сведения о фоновых заданиях с помощью командлета Job
. Создание и настройка всех трех виртуальных машин занимает несколько минут.
Установка IIS с расширением пользовательского скрипта
В предыдущем руководстве по настройке виртуальной машины Windows вы узнали, как автоматизировать настройку виртуальной машины с помощью расширения пользовательского скрипта для Windows. Вы можете использовать тот же подход для установки и настройки IIS на виртуальных машинах.
Воспользуйтесь командлетом Set-AzVMExtension, чтобы установить расширение для пользовательских скриптов. Расширение запускается powershell Add-WindowsFeature Web-Server
для установки веб-сервера IIS, а затем обновляет страницу Default.htm для того чтобы отобразить имя узла виртуальной машины.
for ($i=1; $i -le 3; $i++)
{
Set-AzVMExtension `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-ExtensionName "IIS" `
-VMName myVM$i `
-Publisher Microsoft.Compute `
-ExtensionType CustomScriptExtension `
-TypeHandlerVersion 1.8 `
-SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}' `
-Location EastUS
}
Тест балансировщика нагрузки
Получите общедоступный IP-адрес балансировщика нагрузки с Get-AzPublicIPAddress. Следующий пример позволяет получить IP-адрес для созданного ранее myPublicIP.
Get-AzPublicIPAddress `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-Name "myPublicIP" | select IpAddress
Затем вы можете ввести общедоступный IP-адрес в веб-браузере. Отображается веб-сайт, включая имя хоста виртуальной машины, на которую распределяется трафик с помощью балансировщика нагрузки, как в следующем примере:
Чтобы увидеть, как подсистема балансировки нагрузки распределяет трафик на всех трех виртуальных машинах, работающих в приложении, вы можете принудительно обновить веб-браузер.
Добавление и удаление виртуальных машин
Возможно, потребуется выполнить обслуживание на виртуальных машинах под управлением приложения, таких как установка обновлений ОС. Чтобы справиться с увеличением трафика в приложение, может потребоваться добавить дополнительные виртуальные машины. В этом разделе показано, как удалить или добавить виртуальную машину из подсистемы балансировки нагрузки.
Удаление виртуальной машины из подсистемы балансировки нагрузки
Получите карту сетевого интерфейса, а затем установите значение $null для свойства LoadBalancerBackendAddressPools виртуальной сетевой карты с помощью Get-AzNetworkInterface. Наконец, обновите виртуальный сетевой адаптер.
$nic = Get-AzNetworkInterface `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-Name "myVM2"
$nic.Ipconfigurations[0].LoadBalancerBackendAddressPools=$null
Set-AzNetworkInterface -NetworkInterface $nic
Чтобы увидеть, как подсистема балансировки нагрузки распределяет трафик между оставшимися двумя виртуальными машинами, на которых запущено ваше приложение, вы можете принудительно обновить веб-браузер. Теперь вы можете выполнять обслуживание на виртуальной машине, например установку обновлений ОС или перезагрузку виртуальной машины.
Добавление виртуальной машины в подсистему балансировки нагрузки
После выполнения обслуживания виртуальной машины или при необходимости увеличения емкости, задайте свойство LoadBalancerBackendAddressPools виртуальной сетевой карты, используя BackendAddressPool из Get-AzLoadBalancer:
Получите балансировщик нагрузки:
$lb = Get-AzLoadBalancer `
-ResourceGroupName myResourceGroupLoadBalancer `
-Name myLoadBalancer
$nic.IpConfigurations[0].LoadBalancerBackendAddressPools=$lb.BackendAddressPools[0]
Set-AzNetworkInterface -NetworkInterface $nic
Дальнейшие действия
В этом руководстве вы создали подсистему балансировки нагрузки и подключили к ней виртуальные машины. Вы узнали, как:
- Создание подсистемы балансировки нагрузки Azure
- Создание пробы работоспособности подсистемы балансировки нагрузки
- Создать правила трафика для балансировщика нагрузки
- Создание базового сайта IIS с помощью расширения пользовательского скрипта
- Создание виртуальных машин и подключение к подсистеме балансировки нагрузки
- Просмотр подсистемы балансировки нагрузки в действии
- Добавление и удаление виртуальных машин из подсистемы балансировки нагрузки
Перейдите к следующему руководству, чтобы узнать, как управлять сетями виртуальных машин (VM).