Облачная платформаEvolution

Правила балансировки


Правило балансировки определяет, как балансировщик будет обрабатывать входящий трафик и распределять запросы в целевой группе.

Когда соединение устанавливается, балансировщик анализирует порт назначения в запросах и определяет правило, которое надо применить. Затем запросы распределяются по выбранному алгоритму между участниками целевой группы.

Особенности и ограничения

  • На одном балансировщике можно создать несколько правил.

  • Каждое правило связано с только одной целевой группой.

  • Для каждого правила настраивается один алгоритм балансировки: Round Robin, Consistent Hash или Least Request.

  • Для каждого правила настраивается индивидуальная проверка доступности.

  • Для каждого правила настраивается индивидуальная маршрутизация: указывается один или несколько уникальных портов балансировщика, например 80, 443, 8080.

  • Один и тот же Порт балансировщика нельзя использовать в разных правилах внутри одного балансировщика.

  • Для каждого порта в правиле можно задать внутренний порт у участника целевой группы, например 80 → 8080, 443 → 8443.

    Например, в правиле указаны порты 80 и 443. Трафик, поступающий на порт 80, направляется на порт 8080 целевой группы. Трафик, поступающий на порт 443, — на порт 8443 целевой группы.

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

Load Balancer поддерживает четыре алгоритма балансировки, первые три из них можно задать в правилах балансировки:

  1. Round Robin — балансировщик распределяет запросы между участниками целевой группы по кругу. После прохождения круга начинается новый цикл.

    Алгоритм Round Robin подходит, когда у участников одинаковая производительность и нет необходимости учитывать фактическую нагрузку на них.

  2. Least Request — балансировщик отправляет запрос на наименее загруженного участника.

    Алгоритм Least Request подходит, когда у участников разная производительность или важно избежать перегрузки участников группы.

  3. Consistent Hash — балансировщик хеширует IP-адрес клиента и отправляет все запросы этого клиента на одного участника.

    Алгоритм Consistent Hash подходит, когда количество участников непостоянно и важно сохранить сессии клиентов с участником группы.

  1. Weighted Round Robin — балансировщик распределяет запросы между участниками целевой группы пропорционально весу, заданному каждому участнику. Чем больше вес участника, тем чаще он получает запросы по сравнению с остальными участниками группы.

    Алгоритм Weighted Round Robin подходит, когда участники имеют различную производительность или ресурсы и важно учесть реальную способность каждого участника обрабатывать запросы.

    Примечание

    Чтобы применить алгоритм Weighted Round Robin, в правиле балансировки выберите алгоритм Round Robin и измените веса участников целевой группы по умолчанию на необходимые.

Веса участников целевой группы

Веса участников целевой группы позволяют регулировать распределение нагрузки между участниками целевой группы. Чем выше вес, тем большую долю трафика получает участник.

Веса учитываются, если в правиле балансировки выбран алгоритм Round Robin. Поведение алгоритма зависит от того, какие веса назначены участникам группы:

  • Если веса всех участников независимо от их числового значения равны, балансировщик работает по алгоритму Round Robin и запросы распределяются по кругу. Этот алгоритм действует по умолчанию.

    Например, вы сохранили веса всех участников по умолчанию — 1 или задали им вручную одинаковые веса — 2. Сервис Load Balancer в обоих случаях применит алгоритм Round Robin.

  • Если веса участников различаются, автоматически включается алгоритм Weighted Round Robin и запросы распределяются пропорционально весам.

    Например, у одного участника вес 3, у другого — 1. Участник с весом 3 получит в три раза больше запросов, чем участник с весом 1. Сервис Load Balancer самостоятельно рассчитывает долю каждого участника на основе его веса.

Таким образом, вам не нужно выбирать в настройках между Round Robin и Weighted Round Robin. В правиле балансировки выберите алгоритм Round Robin и настройте веса. Балансировщик применит нужный алгоритм балансировки.

Передача IP-адреса источника (Proxy Protocol)

Proxy Protocol — механизм, который добавляет заголовок с реальным IP-адресом клиента в TCP-соединение. Это позволяет участнику видеть истинный источник запроса, а не IP-адрес балансировщика.

Proxy Protocol может быть двух версий:

  • Version 1 — использует легкочитаемый текстовый формат заголовка;

  • Version 2 — использует двоичный формат заголовка, что обеспечивает более высокую скорость обработки соединений.

Примечание

Подробнее о версиях Proxy Protocol в официальной документации HAProxy.

Если версия Proxy Protocol во входящем трафике отличается, балансировщик сконвертирует заголовки в TCP-пакетах в соответствии с выбранной версией.

Балансировщик может одновременно обрабатывать трафик с Proxy Protocol и без него. К трафику, поступающему без заголовков Proxy Protocol, балансировщик добавит заголовки выбранной версии.