Настройка правил балансировки нагрузки происходит на уровне network-policy load-balancing с использованием языка описания политик UPL. Подробнее о структуре команд читайте в разделе UserGate Policy Language.
Настройка балансировщиков нагрузки TCP/UDP и reverse-прокси рассмотрена далее.
Для отображения информации о всех балансировщиках используется команда:
Admin@nodename# show network-policy load-balancing
Настройка балансировщика TCP/UDP
Настройка данного раздела производится на уровне network-policy load-balancing tcp-udp.
Структура команды создания балансировщика нагрузки TCP/UDP следующая:
Для указания зоны источника, например, Trusted: src.zone = Trusted.
Подробнее о настройке зон с использованием интерфейса командной строки читайте в разделе Зоны.
src.ip
Добавление списков IP-адресов или доменов источника.
Для указания списка IP-адресов: src.ip = lib.network(); в скобках необходимо указать название списка. Подробнее о создании и настройке списков IP-адресов с использованием CLI читайте в разделе Настройка IP-адресов.
Для указания списка доменов источника: src.ip = lib.url(); в скобках необходимо указать название URL, в который были добавлены необходимые домены. Подробнее о создании и настройке списков URL с использованием интерфейса командной строки читайте в разделе Настройка списков URL.
Например: src.ip = lib.network("Test ip-list").
src.geoip
Указание GEO IP в качестве источника.
Например: src.geoip = RU.
url.address
IP-адрес виртуального сервера.
Например: url.address = 10.10.0.20.
url.port
Порт, для которого необходимо производить балансировку нагрузки.
Например: url.port = 1812.
service
Протокол — TCP или UDP, для которого необходимо производить балансировку нагрузки.
Например: service = udp.
scheduler
Методы распределения нагрузки на реальные серверы:
rr — round robin — каждое новое подключение передается на следующий сервер в списке, равномерно загружая все серверы.
wrr — weighted round robin — работает аналогично Round robin, но загрузка реальных серверов осуществляется с учетом весовых коэффициентов, что позволяет распределить нагрузку с учетом производительности каждого сервера.
lc — least connections — новое подключение передается на сервер, на который в данный момент установлено наименьшее число соединений.
wlc — leighted least connections — работает аналогично Least connections, но загрузка реальных серверов осуществляется с учетом весовых коэффициентов, что позволяет распределить нагрузку с учетом производительности каждого сервера.
Например: scheduler(rr).
real_server
Реальные сервера, на которые будет перенаправляться трафик. Для сервера необходимо указать:
ip — IP-адрес сервера.
port — порт сервера, на который будут перенаправлять запросы пользователей.
weight — коэффициент, использующийся для неравномерного распределения нагрузки на реальные серверы.
mode — режим:
gate — режим Шлюз: для перенаправления трафика на виртуальный сервер используется маршрутизация.
masq — режим Маскарадинг: для перенаправления трафика на виртуальный сервер используется DNAT.
masq-snat — режим Маскарадинг с подменой IP-источника: режим аналогичен режиму Маскарадинг, но UserGate подменяет IP-адрес источника на свой.
Например: real_server(masq, 10.10.0.9:1812, 50).
ipvs_fallback
Настройка аварийного режима:
ip — IP-адрес сервера.
port — порт сервера, на который будут пересылаться запросы пользователей.
mode — режим:
gate — режим Шлюз: для перенаправления трафика на виртуальный сервер используется маршрутизация.
masq — режим Маскарадинг: для перенаправления трафика на виртуальный сервер используется DNAT.
masq-snat — режим Маскарадинг с подменой IP-источника: режим аналогичен режиму Маскарадинг, но UserGate подменяет IP-адрес источника на свой.
ping: проверка доступности узла с использованием утилиты ping.
connect: проверка работоспособности узла путём установления TCP-соединения на определённый порт.
negotiate: проверка работоспособности узла посылкой определенного HTTP- или DNS-запроса и сравнением полученного ответа с ожидаемым ответом.
service — необходимо указать (HTTP или DNS) при использовании проверки типа negotiate.
request — запрос необходимо указать при использовании проверки типа negotiate.
response — ожидаемый ответ; необходимо указать при использовании проверки типа negotiate.
interval — интервал времени, через который должна выполняться проверка.
timeout — интервал времени ожидания ответа на проверку.
max-failures — количество попыток проверки реальных серверов, по истечению которого сервер будет считаться неработоспособным и будет исключен из балансировки.
Указание профилей серверов reverse-proxy, на которые будет распределяться нагрузка. Подробнее о создании и настройке серверов reverse-proxy с использованием CLI в разделе Настройка серверов reverse-прокси.
Например, profile("Reverse proxy server1", "Reverse proxy server2").
Команда для редактирования параметров правила балансировки reverse-прокси:
Admin@nodename# set network-policy load-balancing reverse-proxy <position> upl-rule
Параметры, доступные для обновления, аналогичны параметрам, доступным при создании правила балансировки серверов reverse-прокси.
Команды для отображения информации о всех правилах балансировки reverse-proxy:
Admin@nodename# show network-policy load-balancing reverse-proxy
Для отображения информации об определённом правиле балансировки reverse-proxy:
Admin@nodename# show network-policy load-balancing reverse-proxy <position>
Пример создания правила балансировщика нагрузки reverse-proxy с использованием UPL: