Поделиться через


Конфигурация Azure Load Balancer с плавающим IP-адресом

Load Balancer предоставляет указанные ниже возможности для приложений TCP и UDP.

Плавающий IP-адрес

Некоторые сценарии приложений предпочитают или требуют использования одного порта несколькими экземплярами приложений на одной виртуальной машине в серверном пуле. К распространенным примерам повторного использования портов относятся виртуальные сетевые устройства, кластеризация для обеспечения высокой доступности и размещение нескольких конечных точек TLS без повторного шифрования. Если вы хотите, чтобы внутренний порт повторно использовался в нескольких правилах, то в определении правила необходимо активировать плавающий IP-адрес. Включение плавающего IP-адреса обеспечивает большую гибкость.

Статус плавающего IP-адреса Результат
Включенный плавающий IP-адрес Azure изменяет сопоставление IP-адресов с IP-адресом внешнего интерфейса подсистемы балансировки нагрузки
Отключенный плавающий IP-адрес Azure предоставляет IP-адрес экземпляров виртуальных машин

На схемах показано, как работает сопоставление IP-адресов до и после включения плавающего IP-адреса: На этой схеме показан сетевой трафик через подсистему балансировки нагрузки перед включением плавающего IP-адреса.

На этой схеме показан сетевой трафик через подсистему балансировки нагрузки после включения плавающего IP-адреса.

Вы настраиваете плавающий IP-адрес в правиле Load Balancer с помощью портал Azure, REST API, CLI, PowerShell или другого клиента. Чтобы использовать плавающий IP-адрес, кроме настройки правил необходимо также задать конфигурацию гостевой ОС виртуальной машины.

Тип правил с плавающим IP-адресом лежит в основе нескольких шаблонов конфигураций балансировщика нагрузки. Одним из примеров, доступных в настоящее время, является настройка одного или нескольких прослушивателей группы доступности Always On. Со временем мы задокументируем больше этих сценариев.

Конфигурация гостевой ОС для плавающего IP-адреса

Чтобы функционировать, вы настроите гостевую ОС для виртуальной машины, чтобы получить весь трафик, привязанный к интерфейсному IP-адресу и порту подсистемы балансировки нагрузки. Для настройки виртуальной машины требуется:

  • добавление сетевого интерфейса loopback
  • Настроить интерфейс обратной связи с указанием внешнего IP-адреса балансировщика нагрузки.
  • обеспечение того, что система может отправлять и получать пакеты в интерфейсах, у которых нет IP-адреса, назначенного данному интерфейсу. Для систем Windows необходимо, чтобы интерфейсы были настроены на использование модели "слабый узел". Для систем Linux эта модель обычно используется по умолчанию.
  • Настройка брандмауэра хоста для разрешения трафика на внешнем IP-порту.

Примечание.

В приведенных ниже примерах используется протокол IPv4; для использования протокола IPv6 замените "ipv6" на "ipv4".

Windows Server

Развернуть

Для каждой виртуальной машины во внутреннем пуле выполните указанные ниже команды в командной строке Windows на сервере.

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

    netsh interface ipv4 show interface 
    
  2. Для сетевой карты виртуальной машины (управляемая Azure) введите следующую команду после замены имени интерфейса именем интерфейса, который вы хотите использовать:

    netsh interface ipv4 set interface <interface-name> weakhostreceive=enabled
    
  3. Для каждого добавленного интерфейса обратной связи введите эти команды после замены loopback-interface-name именем интерфейса обратной связи и floating-IP и floating-IPnetmask на соответствующие значения, которые соответствуют IP-адресу внешнего интерфейса балансировщика нагрузки.

    netsh interface ipv4 add addr <loopback-interface-name> <floating-IP> <floating-IPnetmask>
    netsh interface ipv4 set interface <loopback-interface-name> weakhostreceive=enabled  weakhostsend=enabled 
    
  4. Наконец, если гостевой узел использует брандмауэр, убедитесь, что правило настроено, чтобы трафик можно было связаться с виртуальной машиной на соответствующих портах. В этом примере конфигурации предполагается IP-конфигурация интерфейса фронтенда балансировщика нагрузки 1.2.3.4, а также правило балансировки нагрузки для порта 80.

    netsh int ipv4 set int "Ethernet" weakhostreceive=enabled
    netsh int ipv4 add addr "Loopback Pseudo-Interface 1" 1.2.3.4 255.255.255.0
    netsh int ipv4 set int "Loopback Pseudo-Interface 1" weakhostreceive=enabled weakhostsend=enabled
    netsh advfirewall firewall add rule name="http" protocol=TCP localport=80 dir=in action=allow enable=yes
    

Убунту

Развернуть

Для каждой виртуальной машины во внутреннем пуле выполните указанные следующие команды в сеансе SSH.

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

    ip addr
    
  2. Для каждого добавленного интерфейса обратной связи введите эти команды после замены loopback-interface-name именем интерфейса обратной связи и floating-IP и floating-IPnetmask на соответствующие значения, которые соответствуют IP-адресу внешнего интерфейса балансировщика нагрузки.

    sudo ip addr add <floating-IP>/<floating-IPnetmask> dev lo:0
    
  3. Наконец, если гостевой узел использует брандмауэр, убедитесь, что правило настроено, чтобы трафик можно было связаться с виртуальной машиной на соответствующих портах. В этом примере конфигурации предполагается, что IP-конфигурация фронтенда балансировщика нагрузки составляет 1.2.3.4, правило балансировки нагрузки для порта 80 и использование UFW (Простой брандмауэр) в Ubuntu.

    sudo ip addr add 1.2.3.4/24 dev lo:0
    sudo ufw allow 80/tcp
    

Ограничения

  • При включении плавающего IP-адреса в правиле балансировки нагрузки приложение должно использовать основную IP-конфигурацию сетевого интерфейса для исходящего трафика.
  • Если ваше приложение привязывается к IP-адресу фронтенда, настроенному на интерфейсе обратной петли в гостевой ОС, исходящее соединение Azure не перенаправляет исходящий поток, и этот поток завершается ошибкой. Рассмотрите сценарии для исходящего трафика.
  • Не удается использовать IP-адрес с плавающей запятой в дополнительных IP-конфигурациях для сценариев балансировки нагрузки. Это ограничение не применяется к общедоступным подсистемам балансировки нагрузки, в которых вторичная IP-конфигурация является IPv6 и частью конфигурации с двумя стеками, или к архитектурам, используюющим шлюз NAT для исходящего подключения.

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