Принципы работы Azure Load Balancer
Azure Load Balancer работает на транспортном уровне модели OSI. Эта функция уровня 4 позволяет управлять трафиком на основе определенных свойств трафика. Свойства, включая исходный и целевой адрес, тип протокола TCP или UDP и номер порта.
В Load Balancer есть несколько элементов, которые работают вместе для обеспечения высокой доступности и производительности приложения.
- Интерфейсный IP-адрес
- Правила подсистемы балансировки нагрузки
- Внутренний пул
- Зонды работоспособности
- Правила NAT для входящего трафика
- Порты с высоким уровнем доступности
- Правила для исходящего трафика
Интерфейсный IP-адрес
Интерфейсный IP-адрес — это клиенты адресов, используемые для подключения к веб-приложению. Интерфейсный IP-адрес может быть общедоступным или частным. Подсистемы балансировки нагрузки Azure могут иметь несколько интерфейсных IP-адресов. Выбор общедоступного или частного IP-адреса определяет, какой тип подсистемы балансировки нагрузки необходимо создать:
Общедоступный IP-адрес: общедоступная подсистема балансировки нагрузки: общедоступная подсистема балансировки нагрузки сопоставляет общедоступный IP-адрес и порт входящего трафика с частным IP-адресом и портом виртуальной машины. Применяя правила балансировки нагрузки, можно распределять определенные типы трафика между несколькими различными виртуальными машинами или службами. Например, можно распределить нагрузку от трафика веб-запросов на несколько веб-серверов. Подсистема балансировки нагрузки сопоставляет трафик ответа от частного IP-адреса и порта виртуальной машины к общедоступному IP-адресу и порту подсистемы балансировки нагрузки. Затем он передает ответ обратно клиенту запроса.
Частный IP-адрес: внутренняя подсистема балансировки нагрузки: внутренняя подсистема балансировки нагрузки распределяет трафик к ресурсам, которые находятся в виртуальной сети. Azure ограничивает доступ к интерфейсным IP-адресам виртуальной сети, к которым применяется балансировка нагрузки. IP-адреса внешнего интерфейса и виртуальные сети никогда не предоставляются напрямую конечной точке Интернета. Внутренние бизнес-приложения выполняются в Azure и доступны из Azure или из локальных ресурсов через подключение VPN или ExpressRoute.
Правила Load Balancer
Правило подсистемы балансировки нагрузки определяет режим распределения трафика на серверный пул. Правило сопоставляет указанное сочетание внешнего IP-адреса и порта с набором серверных IP-адресов и портов.
Трафик управляется с помощью хэша из пяти кортежей, сделанных из следующих элементов:
- Исходный IP-адрес: IP-адрес запрашивающего клиента.
- Исходный порт: порт запрашивающего клиента.
- конечный IP-адрес — конечный IP-адрес запроса;
- Порт назначения: конечный порт запроса.
- Тип протокола: указанный тип протокола, TCP или UDP.
- Сходство сеансов: гарантирует, что один и тот же узел пула всегда обрабатывает трафик для клиента.
Load Balancer позволяет выполнять балансировку нагрузки между службами на нескольких портах, нескольких IP-адресах или обоими этими способами. Можно настроить различные правила балансировки нагрузки для каждого внешнего IP-адреса. Конфигурации с несколькими внешними интерфейсами поддерживаются только при использовании виртуальных машин IaaS.
Load Balancer не может применять разные правила на основе внутреннего содержимого трафика, так как он работает на уровне 4 (транспортный слой) модели OSI. Если вам нужно управлять трафиком на основе свойств уровня 7 (уровня приложений), необходимо развернуть решение, например Шлюз приложений Azure.
Внутренний пул
Серверный пул — это группа виртуальных машин или экземпляров в масштабируемом наборе виртуальных машин, который отвечает на входящий запрос. Для экономичного масштабирования до больших объемов входящего трафика обычно рекомендуется добавить дополнительные экземпляры в серверный пул.
При масштабировании экземпляров Load Balancer реализует автоматическую перенастройку для перераспределения нагрузки между измененным числом экземпляров. Например, если в серверный пул добавлено еще два экземпляра виртуальных машин, Load Balancer будет перенастроен для начала балансировки трафика на эти экземпляры на основе уже настроенных правил балансировки нагрузки.
Зонды работоспособности
Пробы работоспособности помогают определить работоспособность экземпляров во внутреннем пуле. Эта проба работоспособности определяет, является ли экземпляр работоспособным и может получать трафик. Вы можете настроить для проб работоспособности пороговое значение состояния неработоспособности. Если проверка не отвечает, балансировщик нагрузки Azure прекращает отправлять новое подключение неработоспособным экземплярам. Сбой пробы не влияет на существующие подключения. Подключение продолжается до тех пор, пока:
- Приложение завершает поток.
- появляется время ожидания простоя;
- виртуальная машина завершает работу.
Load Balancer позволяет настраивать разные типы проб работоспособности для конечных точек: TCP, HTTP и HTTPS.
- Пользовательская проверка TCP. Проверка зависит от успешности установки сеанса TCP к определенному порту проверки. Если существует заданный слушатель на виртуальной машине, проба работоспособности будет выполняться успешно. Если в соединении отказано, проверка работоспособности завершится с ошибкой. Можно указать порт, интервал и пороговое значение неработоспособности.
- Пользовательская проба HTTP или HTTPS: подсистема балансировки нагрузки регулярно проверяет конечную точку (каждые 15 секунд по умолчанию). Экземпляр считается работоспособным, если он возвращает ответ с кодом HTTP 200 за определенное время ожидания (по умолчанию 31 секунда). Все состояния, отличающиеся от HTTP 200, приведут к сбою пробы работоспособности. Вы можете указать порт, универсальный код ресурса для запроса состояния работоспособности от серверной части (URI), количество времени между пробными попытками (интервал) и количество сбоев, которое должно произойти, чтобы экземпляр считался неработоспособным (пороговое значение неработоспособности).
Сохранение сеанса
По умолчанию Load Balancer распределяет сетевой трафик между несколькими экземплярами виртуальных машин равномерно. Он позволяет закреплять IP-адреса только в рамках сеанса транспорта. Сохраняемость сеанса указывает, как должен обрабатываться трафик от клиента. Поведение по умолчанию (None) заключается в том, что любая здоровая виртуальная машина может обрабатывать последовательные запросы от клиента.
Сохраняемость сеансов также называется сходством сеансов, сходством исходного IP-адреса или сходством IP-адресов клиента. Этот режим распределения использует хэш 2-кортеж (IP-адрес источника и IP-адрес назначения) или хэш 3-кортеж (IP-адрес источника, IP-адрес назначения и тип протокола) для направления трафика на серверные экземпляры. При использовании сохраняемости сеансов подключения от одного клиента переходят к тому же внутреннему экземпляру в серверном пуле. Можно настроить один из следующих вариантов сохранения сеанса.
- Нет (по умолчанию): указывает, что любая работоспособная виртуальная машина может справиться с запросом.
- IP-адрес клиента (2-кортеж): указывает, что один и тот же внутренний экземпляр может обрабатывать последовательные запросы из одного IP-адреса клиента.
- IP-адрес клиента и протокол (3-кортеж): указывает, что один и тот же внутренний экземпляр может обрабатывать последовательные запросы из одного и того же IP-адреса клиента и сочетания протоколов.
Это поведение можно изменить, настроив один из параметров, описанных в следующих разделах.
Порты с высоким уровнем доступности
Правило балансировки нагрузки, настроенное с помощью параметров protocol - all and port - 0
, называется правилом портов высокой доступности (HA). Это позволяет указать единое правило балансировки нагрузки для всех потоков TCP и UDP, поступающих на все порты внутренней стандартной подсистемы балансировки нагрузки.
Решение о распределении нагрузки принимается отдельно для каждого потока. Это действие основано на следующем соединении с пятью кортежами:
- Исходный IP-адрес
- Исходный порт
- IP-адрес назначения
- Порт назначения
- Протокол
Правила балансировки нагрузки портов с высоким уровнем доступности помогают в критически важных сценариях. Например, они обеспечивают высокий уровень доступности и масштабирование для виртуальных сетевых модулей в виртуальных сетях. Они позволяют распределять нагрузку между большим количеством портов.
Правила NAT для входящего трафика
Правила балансировки нагрузки можно использовать в сочетании с правилами преобразования сетевых адресов (NAT). Например, можно использовать NAT из общедоступного адреса подсистемы балансировки нагрузки на порту TCP 3389 определенной виртуальной машины. Это сочетание правил позволяет удаленному рабочему столу получать доступ извне Azure.
Правила для исходящего трафика
Правило для исходящего трафика позволяет настроить преобразование сетевых адресов источника (SNAT) для всех виртуальных машин или экземпляров, которые входят в серверный пул. Это правило позволяет экземплярам серверной части отправлять запросы в Интернет или другие общедоступные конечные точки.