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


Конфигурация 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-адресов с плавающей IP-адресой.

В этом сценарии каждая виртуальная машина во внутреннем пуле имеет три сетевых интерфейса:

  • Внутренний IP-адрес: виртуальная сетевой адаптер, связанная с виртуальной машиной (IP-конфигурация ресурса сетевого адаптера Azure).
  • Интерфейс 1 (FIP1): интерфейс обратного цикла в гостевой ОС, настроенный с IP-адресом FIP1.
  • Интерфейс 2 (FIP2): интерфейс обратного цикла в гостевой ОС, настроенный с IP-адресом FIP2.

Предположим, что интерфейсная конфигурация такая же, как в предыдущем сценарии:

Внешний интерфейс IP-адрес protocol port
зеленый интерфейс 1 65.52.0.1 TCP 80
сиреневый интерфейс 2 65.52.0.2 TCP 80

Мы определяем два правила с плавающей ip-адресой:

Правило Внешний интерфейс Сопоставление с внутренним пулом
1 правило зеленого интерфейса FIP1:80 зеленая серверная часть FIP1:80 (в VM1 и VM2)
2 правило сиреневого интерфейса FIP2:80 фиолетовая серверная часть FIP2:80 (в VM1 и VM2)

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

Правило Интерфейсный IP-адрес protocol port Назначение port
правило зеленого интерфейса 1 65.52.0.1 TCP 80 такое, как у внешнего интерфейса (65.52.0.1) такое, как у внешнего интерфейса (80)
правило сиреневого интерфейса 2 65.52.0.2 TCP 80 такое, как у внешнего интерфейса (65.52.0.2) такое, как у внешнего интерфейса (80)

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

Вы заметили, что порт назначения не изменяется в примере. В сценариях с плавающей ip-адресой Azure Load Balancer также поддерживает определение правила балансировки нагрузки для изменения порта назначения серверной части и его отличия от порта назначения внешнего интерфейса.

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

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

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

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

Примечание.

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

Windows Server

Развертывание

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

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

netsh interface ipv4 show interface 

Для сетевого интерфейса виртуальной машины (под управлением Azure) введите следующую команду.

netsh interface ipv4 set interface "interfacename" weakhostreceive=enabled

(замените "interfacename" именем этого интерфейса)

Для каждого добавленного интерфейса замыкания на себя выполните следующие команды:

netsh interface ipv4 add addr floatingipaddress floatingip floatingipnetmask
netsh interface ipv4 set interface floatingipaddress weakhostreceive=enabled  weakhostsend=enabled 

(замените loopbackinterface именем этого интерфейса loopback и floatingip и floatingipnetmask соответствующими значениями, соответствующими интерфейсному IP-адресу подсистемы балансировки нагрузки)

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

В этом примере конфигурации предполагается, что интерфейсная 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

Ubuntu

Развертывание

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

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

ip addr

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

sudo ip addr add floatingip/floatingipnetmask dev lo:0

(замените floatingip и floatingipnetmask соответствующими значениями, соответствующими интерфейсному IP-адресу подсистемы балансировки нагрузки)

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

В этом примере конфигурация предполагает конфигурацию внешнего 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 не перезаписывает исходящий поток, а поток завершается ошибкой. Рассмотрите сценарии для исходящего трафика.

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