Edge Load Balancer, по сути, является HAProxy и поддерживает различные способы балансировки трафика между серверами. В том числе, балансировку HTTP-запросов по URI - веб-адресу страницы, которую мы и рассмотрим в этой статье.
Такой способ балансировки используется, когда нужно отделить "тяжёлые" запросы от остального трафика и перенаправить его на отдельный пул серверов.
Тестовая инфраструктура
Для демонстрации этого способа балансировки были развёрнуты три виртуальные машины в отдельном vApp: web1, web2, web3.
web2 в нашем случае займётся обработкой тяжелого, а web1 и web3 - всего остального трафика.
Для отладки и проверки работы веб-серверов были добавлены временные fw
и dnat
правила.
Firewall - разрешён трафик на внешний IP по портам с 80 по 83.
NAT - каждый порт перенаправляется на свой сервер
В качестве веб-серверов использовался nginx, помимо домашней страницы были добавлены ещё две страницы light.html
и heavy.html
.
Конфигурации виртуальных машин и веб-серверов идентичны.
Отличаются имена хостов, внутренние IP адреса и сами веб-страницы: заголовок для наглядности отображает имя хоста веб-сервера.
Настройка Load Balancer
Global Configuration
Включаем балансировку
Application Profiles
Добавляем профиль приложения, который будет использоваться виртуальным сервером.
Service Monitoring
Добавляем мониторинг веб-серверов. Это не обязательно, но позволит следить за работоспособностью и использовать только "живые" сервера пула.
Монитор или None выбирается на следующем шаге.
Pools
Добавляем два пула серверов: для "тяжёлого" и для всего остального трафика
Application Rules
Добавляем правило, которое как раз и позволит балансировщику распределять трафик по пулам в зависимости от URI:
acl site_heavy path_beg -i /heavy
use_backend pool-web2 if site_heavy
Страницы с адресами /heavy
будут переданы на обработку серверам pool-web2
пула.
Правил может быть больше, чем использует виртуальный сервер.
Virtual Servers
Добавляем Virtual Server. На вкладке General
включаем его, выбираем профиль приложения, внешний IP адрес, протокол и пул по умолчанию.
На вкладке Advanced
выбираем ранее определённые правила приложений.
В результате получилась такая настройка:
Проверяем
Домашняя страница
Переход по light-ссылке
Переход по heavy-ссылке
Балансировка по URI работает, настройка завершена.
Примеры различных правил можно посмотреть в официальной документации.