Как работает Azure Load Balancer

Завершено

Azure Load Balancer работает на транспортном уровне модели OSI. Эта функция уровня 4 позволяет управлять трафиком на основе определенных свойств трафика. Свойства, включая исходный и целевой адрес, тип протокола TCP или UDP и номер порта.

Load Balancer содержит несколько элементов, которые работают вместе, чтобы обеспечить высокий уровень доступности и производительности приложения:

  • Внешний IP-адрес
  • Правила подсистемы балансировки нагрузки
  • Пул серверов бэкэнда
  • Пробы работоспособности
  • Правила NAT для входящего трафика
  • Порты высокой доступности
  • Правила исходящего трафика

Внешний IP-адрес

Внешний IP-адрес — это адрес, который клиенты используют для подключения к вашему веб-приложению. Внешний IP-адрес может быть общедоступным или частным IP-адресом. Подсистемы балансировки нагрузки Azure могут иметь несколько интерфейсных IP-адресов. Выбор общедоступного или частного IP-адреса определяет, какой тип подсистемы балансировки нагрузки необходимо создать:

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

  • частный IP-адрес: внутренний балансировщик нагрузки: внутренний подсистема балансировки нагрузки распределяет трафик к ресурсам, которые находятся в виртуальной сети. Azure ограничивает доступ к интерфейсным IP-адресам виртуальной сети, которые балансируют нагрузку. Интерфейсные IP-адреса и виртуальные сети никогда не предоставляются непосредственно конечной точке Интернета. Внутренние бизнес-приложения выполняются в Azure и получают доступ из Azure или из локальных ресурсов через VPN-подключение или ExpressRoute.

    Диаграмма, которая показывает, как работают общедоступные и внутренние балансировщики нагрузки в сервисе Azure Load Balancer.

Правила Подсистемы балансировки нагрузки

Правило подсистемы балансировки нагрузки определяет, как трафик распределяется в внутренний пул. Правило сопоставляет заданное сочетание внешних IP-адресов и портов с набором внутренних IP-адресов и сочетания портов.

Диаграмма, которая показывает, как работают правила балансировщика нагрузки в Azure Load Balancer.

Трафик управляется с помощью хэша, сделанного из пяти элементов, полученных из следующих компонентов:

  • IP-адрес источника: IP-адрес запрашивающего клиента.
  • исходный порт: порт запрашивающего клиента.
  • IP-адрес назначения: IP-адрес назначения запроса.
  • порт назначения: конечный порт запроса.
  • тип протокола: указанный тип протокола, TCP или UDP.
  • Привязка сессии: Гарантирует, что один и тот же узел пула всегда обрабатывает трафик для клиента.

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

Load Balancer не может применять разные правила на основе внутреннего содержимого трафика, так как он работает на уровне 4 (транспортный слой) модели OSI. Если вам нужно управлять трафиком на основе свойств уровня 7 (уровня приложения), необходимо развернуть решение, например шлюз приложений Azure.

Серверный пул

Серверный пул — это группа виртуальных машин или экземпляров в масштабируемом наборе виртуальных машин, который отвечает на входящий запрос. Для экономичного масштабирования для обработки больших объемов входящего трафика в руководствах по вычислениям обычно рекомендуется добавлять дополнительные экземпляры в пул серверов back-end.

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

Проверки состояния

Проба работоспособности используется для определения состояния работоспособности экземпляров в внутреннем пуле. Эта проба работоспособности определяет, является ли экземпляр работоспособным и может получать трафик. Вы можете определить порог неработоспособного состояния для проб работоспособности. Если проба не отвечает, подсистема балансировки нагрузки перестает отправлять новые подключения к неработоспособным экземплярам. Сбой пробы не влияет на существующие подключения. Подключение продолжается до тех пор, пока:

  • Приложение завершает поток.
  • Произошел тайм-аут по бездействию.
  • Виртуальная машина завершает работу.

Load Balancer позволяет настроить различные типы проб работоспособности для конечных точек: TCP, HTTP и HTTPS.

  • настроенная проба TCP: Эта проба основана на установлении успешного сеанса TCP к заданному порту для пробы. Если указанный прослушиватель на виртуальной машине существует, проба завершается успешно. Если подключение отказано, зонд терпит неудачу. Можно указать "Порт", "Интервал" и "порог неработоспособности".
  • пользовательской пробы HTTP или HTTPS: подсистема балансировки нагрузки регулярно проверяет конечную точку (каждые 15 секунд по умолчанию). Экземпляр работоспособен, если он отвечает с HTTP 200 в течение тайм-аута (по умолчанию — 31 секунда). Любое состояние, отличное от HTTP 200, приводит к сбою пробы. Можно указать порт (порт), URI для запроса состояния работоспособности из внешней системы (URI), временной интервал между попытками пробы (интервал) и число сбоев, которые должны возникать для того, чтобы экземпляр считался неработоспособным (порог неработоспособности).

Сохраняемость сеанса

По умолчанию Load Balancer распределяет сетевой трафик одинаково между несколькими экземплярами виртуальных машин. Он обеспечивает устойчивость соединения только в рамках транспортной сессии. Сохраняемость сеанса указывает, как следует обрабатывать трафик от клиента. Поведение по умолчанию (None) заключается в том, что любая здоровая виртуальная машина может обрабатывать последовательные запросы от клиента.

Сохраняемость сеансов также называется сходством сеансов, сходством исходного IP-адреса или сходством IP-адресов клиента. Этот режим распространения использует хэш двухкортежный (исходный IP-адрес и IP-адрес назначения) или трехкортежный (исходный IP-адрес, конечный IP-адрес и тип протокола) для маршрутизации к внутренним экземплярам. При использовании сохраняемости сеансов подключения от одного клиента переходят к тому же внутреннему экземпляру в серверном пуле. Можно настроить один из следующих параметров сохраняемости сеанса:

  • нет (по умолчанию). Указывает, что любая здоровая виртуальная машина может обрабатывать запрос.
  • IP-адрес клиента (2-элементный кортеж). Указывает, что один и тот же экземпляр серверной части может обрабатывать последовательные запросы с одного IP-адреса клиента.
  • IP-адрес клиента и протокол (3-кортеж). Указывает, что один и тот же серверный экземпляр может обрабатывать последовательные запросы от одного и того же IP-адреса клиента и комбинации протокола.

Это поведение можно изменить, настроив один из параметров, описанных в следующих разделах.

Порты высокой доступности

Правило балансировщика нагрузки, настроенное с помощью protocol - all and port - 0, называется правило порта высокой доступности (HA) . Это правило позволяет сбалансировать все потоки TCP и UDP, поступающие на все порты внутренней стандартной системы балансировки нагрузки.

Решение о балансировке нагрузки принимается для каждого потока. Это действие основано на следующем пятиэлементном соединении:

  • Исходный IP-адрес
  • Исходный порт
  • IP-адрес назначения
  • Конечный порт
  • Протокол

Правила балансировки нагрузки портов высокой доступности помогают вам в критических сценариях, таких как высокий уровень доступности и масштабирование виртуальных сетевых устройств (NVA) в виртуальных сетях. Эта функция может помочь при балансировке нагрузки большого количества портов.

схема, показывающая, как работают порты высокой доступности в Azure Load Balancer.

Правила NAT для входящего трафика

Правила балансировки нагрузки можно использовать в сочетании с правилами преобразования сетевых адресов (NAT). Например, можно использовать NAT из общедоступного адреса подсистемы балансировки нагрузки на TCP 3389 на определенной виртуальной машине. Это сочетание правил открывает возможность удаленного доступа к рабочему столу из-за пределов Azure.

схема, показывающая, как работают правила NAT для входящего трафика в Azure Load Balancer.

Правила исходящего трафика

Исходящее правило настраивает преобразование сетевых адресов источника (SNAT) для всех виртуальных машин или экземпляров, идентифицированных серверным пулом. Это правило позволяет экземплярам в серверной части обмениваться данными (исходящими) с Интернетом или другими общедоступными конечными точками.

схема, показывающая, как работают правила исходящего трафика в Azure Load Balancer.