Управление серверным пулом

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

У вас есть два способа настроить внутренний пул:

  • с помощью сетевой карты;

  • IP-адрес

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

Настройка внутреннего пула по IP-адресу и виртуальной сети

В сценариях с использованием предварительно заполненных внутренних пулов следует применять сочетание IP-адресов и виртуальной сети.

Управление серверным пулом настраивается в объекте серверного пула, как демонстрируется в следующих примерах.

PowerShell

Создайте новый внутренний пул:

$be = @{
    ResourceGroupName = 'myResourceGroup'
    LoadBalancerName = 'myLoadBalancer'
    Name = 'myBackendPool'
}
$backendPool = New-AzLoadBalancerBackendAddressPool @be

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

$vnet = @{
    Name = 'myVnet'
    ResourceGroupName = 'myResourceGroup'
}
$virtualNetwork = Get-AzVirtualNetwork @vnet

$add1 = @{
    IpAddress = '10.0.0.5'
    Name = 'TestVNetRef'
    VirtualNetworkId = $virtualNetwork.Id
}
$ip1 = New-AzLoadBalancerBackendAddressConfig @add1
 
$backendPool.LoadBalancerBackendAddresses.Add($ip1) 

Set-AzLoadBalancerBackendAddressPool -InputObject $backendPool

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

$pool = @{
    ResourceGroupName = 'myResourceGroup'
    LoadBalancerName = 'myLoadBalancer'
    Name = 'myBackendPool'
}
Get-AzLoadBalancerBackendAddressPool @pool

Создайте сетевой интерфейс и добавьте его во внутренний пул. Присвойте IP-адрес одному из внутренних адресов:

$net = @{
    Name = 'myNic'
    ResourceGroupName = 'myResourceGroup'
    Location = 'eastus'
    PrivateIpAddress = '10.0.0.5'
    Subnet = $virtualNetwork.Subnets[0]
}
$nic = New-AzNetworkInterface @net

Создайте виртуальную машину и подключите к ней сетевую карту с IP-адресом из внутреннего пула:

# Create a username and password for the virtual machine
$cred = Get-Credential

# Create a virtual machine configuration
$net = @{
    Name = 'myNic'
    ResourceGroupName = 'myResourceGroup'
}
$nic = Get-AzNetworkInterface @net

$vmc = @{
    VMName = 'myVM1'
    VMSize = 'Standard_DS1_v2'
}

$vmos = @{
    ComputerName = 'myVM1'
    Credential = $cred
}

$vmi = @{
    PublisherName = 'MicrosoftWindowsServer'
    Offer = 'WindowsServer'
    Skus = '2019-Datacenter'
    Version = 'latest'
}
$vmConfig = 
New-AzVMConfig @vmc | Set-AzVMOperatingSystem -Windows @vmos | Set-AzVMSourceImage @vmi | Add-AzVMNetworkInterface -Id $nic.Id


# Create a virtual machine using the configuration
$vm = @{
    ResourceGroupName = 'myResourceGroup'
    Zone = '1'
    Location = 'eastus'
    VM = $vmConfig

}
$vm1 = New-AzVM @vm

CLI

С помощью CLI вы можете заполнить внутренний пул, указав аргументы командной строки либо применив файл конфигурации в формате JSON.

Создайте и заполните внутренний пул с помощью аргументов командной строки:

az network lb address-pool create \
--resource-group myResourceGroup \
--lb-name myLB \
--name myBackendPool \
--vnet {VNET resource ID} \
--backend-address name=addr1 ip-address=10.0.0.4 \
--backend-address name=addr2 ip-address=10.0.0.5

Создайте и заполните внутренний пул, используя файл конфигурации в формате JSON:

az network lb address-pool create \
--resource-group myResourceGroup \
--lb-name myLB \
--name myBackendPool \
--vnet {VNET resource ID} \
--backend-address-config-file @config_file.json

Файл конфигурации в формате JSON:

        [
          {
            "name": "address1",
            "virtualNetwork": "/subscriptions/{subscriptionId}/resourceGroups/{resource-group-name}/providers/Microsoft.Network/virtualNetworks/{vnet-name}",
            "ipAddress": "10.0.0.4"
          },
          {
            "name": "address2",
            "virtualNetwork": "/subscriptions/{subscriptionId}/resourceGroups/{resource-group-name}/providers/Microsoft.Network/virtualNetworks/{vnet-name}",
            "ipAddress": "10.0.0.5"
          }
        ]

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

az network lb address-pool show \
--resource-group myResourceGroup \
--lb-name MyLb \
--name MyBackendPool

Создайте сетевой интерфейс и добавьте его во внутренний пул. Присвойте IP-адрес одному из внутренних адресов:

az network nic create \
  --resource-group myResourceGroup \
  --name myNic \
  --vnet-name myVnet \
  --subnet mySubnet \
  --network-security-group myNetworkSecurityGroup \
  --lb-name myLB \
  --private-ip-address 10.0.0.4

Создайте виртуальную машину и подключите к ней сетевую карту с IP-адресом из внутреннего пула:

az vm create \
  --resource-group myResourceGroup \
  --name myVM \
  --nics myNic \
  --image Ubuntu2204 \
  --admin-username azureuser \
  --generate-ssh-keys

Ограничения

  • Внутренние пулы на основе IP-адресов могут использоваться только для Load Balancer цен. категории "Стандартный".
  • Ресурсы внутреннего пула должны находиться в той же виртуальной сети, что и Load Balancer на основе IP-адресов.
  • Серверные экземпляры подсистем балансировки нагрузки на основе IP-адресов по-прежнему должны быть виртуальными машинами или масштабируемыми наборами виртуальных машин. Присоединение других служб PaaS к внутреннему пулу подсистемы балансировки нагрузки на основе IP-адресов не поддерживается.
  • Подсистема балансировки нагрузки с внутренним пулом на основе IP-адресов не может выполнять роль службы Приватного канала.
  • Ресурсы частной конечной точки не могут размещаться в серверном пуле на основе IP-адресов.
  • Подсистемы балансировки нагрузки на основе IP-адресов не поддерживают контейнеры ACI
  • Подсистемы балансировки нагрузки или службы, такие как Шлюз приложений, нельзя помещать во внутренний пул подсистемы балансировки нагрузки
  • Правила NAT для входящего трафика не могут определяться IP-адресом.
  • Вы можете настроить серверные пулы на основе IP и сетевых карт для одной и той же подсистемы балансировки нагрузки. Вы не можете создать один серверный пул, в котором сочетаются адреса с поддержкой сетевых карт и отдельные IP-адреса.
  • Виртуальная машина в той же виртуальной сети, что и внутренняя подсистема балансировки нагрузки, не может одновременно получить доступ к интерфейсной части подсистемы балансировки нагрузки и ее внутренним виртуальным машинам.
  • Ip-адреса, предпочитаемые через Интернет, в настоящее время не поддерживаются серверными пулами на основе IP-адресов. Все IP-адреса маршрутизации в пулах серверных серверов на основе IP-адресов будут выставляться и направляться через глобальную сеть Майкрософт по умолчанию.
  • Если серверные пулы постоянно меняются (из-за постоянного добавления или удаления внутренних ресурсов). Это может привести к сбросу сигналов, отправляемых обратно источнику из внутреннего ресурса. В качестве обходного решения можно использовать повторные попытки.

Внимание

Если серверный пул настроен по IP-адресу, он будет вести себя как Load Balancer категории "Базовый" с включенным исходящим трафиком по умолчанию. Для безопасной по умолчанию конфигурации и приложений с большим объемом исходящего трафика настройте серверный пул по сетевой карте.

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

Из этой статьи вы узнали об управлении внутренним пулом Azure Load Balancer и о настройке внутреннего пула с использованием IP-адреса и виртуальной сети.

Дополнительные сведения об Azure Load Balancer.

Изучите REST API для управления серверным пулом на основе IP-адресов.