Режимы и алгоритмы балансировки
Режимы балансировки
VMware NSX® Edge™ (Edge-роутер) предлагает поддержку двух режимов развертывания балансировщика: режим прокси (one-arm) и прозрачный режим (inline).
Режим прокси (one-arm)
При отправке запроса на один из бэкендов в режиме прокси Edge использует свой IP-адрес в качестве адреса источника — балансировщик выполняет одновременно функции Source и Destination NAT. Бэкенд видит весь трафик как отправленный с балансировщика и отвечает ему напрямую. В такой схеме балансировщик должен быть в одном сетевом сегменте с внутренними серверами.
Пользователь отправляет запрос на VIP-адрес (адрес балансировщика), который сконфигурирован на Edge. Edge выбирает один из бэкендов и выполняет Destination NAT, заменяя VIP-адрес на адрес выбранного бэкенда. Edge выполняет Source NAT, заменяя адрес отправившего запрос пользователя на свой собственный, и пакет отправляется к выбранному бэкенду.
Бэкенд отвечает не напрямую пользователю, а Edge, так как изначальный адрес пользователя был изменен на адрес балансировщика. Edge передает ответ сервера пользователю.
Прозрачный режим (inline)
В прозрачном режиме балансировщик имеет интерфейсы во внутренней и внешней сети, но к внутренней сети нет прямого доступа из внешней. Встроенный балансировщик нагрузки действует как шлюз NAT для виртуальных машин во внутренней сети.
Пользователь отправляет запрос на VIP-адрес (адрес балансировщика), который сконфигурирован на Edge. Edge выбирает один из бэкендов и выполняет Destination NAT, заменяя VIP-адрес на адрес выбранного бэкенда, и пакет отправляется к выбранному бэкенду.
Бэкенд получает запрос с изначальным адресом пользователя (Source NAT не выполнялся) и отвечает ему напрямую. Трафик снова принимается балансировщиком нагрузки, так как в inline схеме он обычно выступает в качестве шлюза по умолчанию для фермы серверов. Edge выполняет Source NAT для отправки трафика пользователю, используя свой VIP в качестве Source IP-адреса.
Алгоритмы балансировки
- IP Hash — сервер выбирается на основе результатов выполнения хеш-функции для Source и Destination IP каждого пакета;
- Least Connections — входящие соединения балансируются в зависимости от количества уже имеющихся на конкретном сервере. Новые соединения будут направлены на сервер с наименьшим количеством соединений;
- Round Robin — новые соединения отправляются на каждый сервер по очереди в соответствии с заданным весом сервера;
- URI — левая часть URI (до вопросительного знака) хешируется и делится на общий вес серверов в пуле. Результат указывает, какой сервер получает запрос. Запрос направляется на один и тот же сервер до тех пор, пока все серверы остаются доступными;
- HTTP Header — балансировка на основе заголовка HTTP, который можно указать в качестве параметра. Если заголовок отсутствует или у него не задано значение, применяется алгоритм Round Robin;
- URL — в каждом запросе HTTP GET выполняется поиск по параметру URL, указанному в качестве аргумента. Если за параметром следует знак равенства и значение, то значение хешируется и делится на общий вес запущенных серверов. Результат указывает, какой сервер получает запрос. Этот процесс используется для отслеживания идентификаторов пользователей в запросах. User ID отправляется на один и тот же сервер до тех пор, пока все серверы остаются доступными.