Режимы и алгоритмы балансировки

Режимы балансировки

VMware NSX® Edge™ предлагает поддержку двух режимов развертывания балансировщика: режим прокси (one-arm) и прозрачный режим (inline).

Режим прокси (one-arm)

В этом режиме NSX Edge при отправке запроса на один из бэкендов использует свой IP-адрес в качестве адреса источника. Таким образом, балансировщик выполняет одновременно функции Source и Destination NAT. Бэкенд видит весь трафик как отправленный с балансировщика и отвечает ему напрямую. В такой схеме балансировщик должен быть в одном сетевом сегменте с внутренними серверами. При этом происходит следующее:

  1. Пользователь отправляет запрос на VIP-адрес (адрес балансировщика), который сконфигурирован на Edge.
  2. Edge выбирает один из бэкендов и выполняет destination NAT, заменяя VIP-адрес на адрес выбранного бэкенда.
  3. Edge выполняет source NAT, заменяя адрес отправившего запрос пользователя на свой собственный.
  4. Пакет отправляется к выбранному бэкенду.
  5. Бэкенд отвечает не напрямую пользователю, а Edge, так как изначальный адрес пользователя был изменен на адрес балансировщика.
  6. Edge передает ответ сервера пользователю.

Прозрачный режим (inline)

В этом сценарии балансировщик имеет интерфейсы во внутренней и внешней сети. При этом к внутренней сети нет прямого доступа из внешней. Встроенный балансировщик нагрузки действует как шлюз NAT для виртуальных машин во внутренней сети. Механизм работы следующий:

  1. Пользователь отправляет запрос на VIP-адрес (адрес балансировщика), который сконфигурирован на Edge.
  2. Edge выбирает один из бэкендов и выполняет destination NAT, заменяя VIP-адрес на адрес выбранного бэкенда.
  3. Пакет отправляется к выбранному бэкенду.
  4. Бэкенд получает запрос с изначальным адресом пользователя (source NAT не выполнялся) и отвечает ему напрямую.
  5. Трафик снова принимается балансировщиком нагрузки, так как в inline схеме он обычно выступает в качестве шлюза по умолчанию для фермы серверов.
  6. Edge выполняет source NAT для отправки трафика пользователю, используя свой VIP в качестве source IP-адреса.

Алгоритмы балансировки

NSX Edge поддерживает алгоритмы:

  • IP_HASH — выбор сервера на основе результатов выполнения хеш-функции для source и destination IP каждого пакета;
  • LEASTCONN — балансировка входящих соединений, в зависимости от количества уже имеющихся на конкретном сервере. Новые соединения будут направлены на сервер с наименьшим количеством соединений;
  • ROUND_ROBIN — новые соединения отправляются на каждый сервер по очереди, в соответствии с заданным ему весом;
  • URI — левая часть URI (до вопросительного знака) хешируется и делится на общий вес серверов в пуле. Результат указывает, какой сервер получает запрос, гарантируя, что запрос всегда направляется на один и тот же сервер, до тех пор, пока все серверы остаются доступными;
  • HTTPHEADER — балансировка на основе определенного заголовка HTTP, который можно указать в качестве параметра. Если заголовок отсутствует или не имеет какого-либо значения, применяется алгоритм ROUND_ROBIN;
  • URL — в каждом запросе HTTP GET выполняется поиск по параметру URL, указанному в качестве аргумента. Если за параметром следует знак равенства и значение, то значение хешируется и делится на общий вес запущенных серверов. Результат указывает, какой сервер получает запрос. Этот процесс используется для отслеживания идентификаторов пользователей в запросах и обеспечения того, чтобы один и тот же user id всегда отправлялся на один и тот же сервер, до тех пор, пока все серверы остаются доступными.