Балансировка нагрузки на WAN-интерфейсах
Подсистема балансировки нагрузки автоматически добавляет маршруты для каждого пути в таблицу маршрутизации и балансирует трафик между настроенными интерфейсами в зависимости от работоспособности и веса интерфейса.
Минимально необходимая конфигурация для балансировки WAN-интерфейса должна включать в себя следующие элементы:
требуется добавить как минимум один сетевой интерфейс маршрутизатора с заданным адресом и адресом следующего узла;
необходимо добавить хотя бы одно правило с балансируемыми интерфейсами.
Примечание
Балансировка нагрузки не используется совместно с динамической маршрутизацией. Сервис создаёт настраиваемые таблицы маршрутизации и правила брандмауэра, что делает его несовместимым с протоколами динамической маршрутизации.
Основные настройки
Основные настройки предназначены для изменения глобальных параметров балансировки на WAN-интерфейсах. Изменение глобальных настроек выполняется в конфигурационном режиме.
Примечание
Изменение глобальных настроек требует наличия хотя бы одного интерфейса, для которого настроена проверка состояния (см. Проверка состояния интерфейсов).
Отключить механизм автоматической генерации правил SNAT:
set load-balancing wan disable-source-natПо умолчанию интерфейсы, используемые в пуле балансировки нагрузки, заменяют IP-адрес источника исходящего пакета на свой собственный адрес, что гарантирует поступление ответов на один и тот же интерфейс. Это работает с помощью автоматически сгенерированных правил SNAT, которые применяются только к сбалансированному трафику. В тех случаях, когда такое поведение нежелательно, автоматическую генерацию правил SNAT возможно отключить.
Включить балансировку нагрузки WAN для локального трафика:
set load-balancing wan enable-local-traffic
Включить очистку таблиц отслеживания подключений при изменении состояния соединения:
set load-balancing wan flush-connectionsПримечание
Очистка таблицы соединений приведёт к тому, что будет выполняться балансировка пакетов вместо балансировки потоков до момента повторного установления соединений.
Указать пользовательский скрипт, который будет запускаться при изменении состояния балансируемого интерфейса:
set load-balancing wan hook /config/scripts/<file.script>где <file.script> - имя файла скрипта в каталоге /config/scripts/.
Примечание
В названии файла скрипта недопустимо использовать символы: пробел, «“», «\». Максимальный размер файла не более 1 мегабайта.
Скрипт должен возвращать «0» для обозначения успешного результата и значение отличное от «0» - для неудачных результатов. Система перестанет отвечать на запросы, если выполнение скрипта не завершится!
Разрешить «липкие» сессии - возможность отправки ответных пакетов с сетевого интерфейса, входящего в группу балансировочных интерфейсов, откуда поступил запрос:
set load-balancing wan sticky-connections inbound
Проверка состояния интерфейсов
Работоспособность WAN-каналов, используемых сервисом балансировки, периодически проверяется несколькими способами:
Отправка сообщения ICMP Echo Request на удалённые хосты.
Мониторинг времени жизни сетевого пакета (TTL).
Выполнение специального пользовательского скрипта.
Если канал не проходит проверку, он исключается из списка используемых сервисом балансировки.
Каждая проверка настраивается для отдельного хоста-получателя и предполагает выполнение соответствующего теста. В случае необходимости проверки нескольких хостов-получателей необходимо настроить несколько тестов, каждый из которых будет выполняться в определённом порядке.
Примечание
Для корректной работы проверки состояния необходимо задать статический маршрут до следующего узла для каждого из проверяемых интерфейсов (см. Настройка статического маршрута).
Пример команды для настройки статического маршрута:
set protocols static route 8.8.8.8/32 next-hop 192.168.43.100 interface eth1
Для настройки параметров проверки состояния интерфейсов возможно использовать следующие команды:
Добавить проверяемый интерфейс:
set load-balancing wan interface-health <interface>где <interface> - имя проверяемого интерфейса.
Задать количество проваленных ICMP-запросов после которого считается, что интерфейс не работоспособен:
set load-balancing wan interface-health <interface> failure-count <f_count>.где <f_count> - количество ошибок. Возможно указать значение в диапазоне от «1» до «10». По умолчанию используется значение «1».
Задать количество успешных ICMP-запросов после которого считается, что интерфейс работоспособен:
interface-health <имя_интерфейса> success-count <s_count>где <s_count> - количество успешных запросов. Возможно указать значение в диапазоне от «1» до «10». По умолчанию используется значение «1».
Задать адрес узла, через который будет осуществляться доступ к хосту-получателю:
set load-balancing wan interface-health <interface> nexthop <IPv4_address | dhcp>Возможно указать «IPv4-адрес» узла или «DHCP».
Указать номер правила в соответствии с его очерёдностью:
set load-balancing wan interface-health <interface> test <rule_number>где <rule_number> - номер правила. Возможно указать значение в диапазоне от «0» до «4294967295».
Указать тип проверки доступности узла:
set load-balancing wan interface-health <interface> test <rule_number> type <check_type>где <check_type> - тип проверки доступности узла. Возможно указать значение из списка:
«ping»;
«TTL»;
«user-defined» - указать пользовательский скрипт, описывающий характер проверки.
Указать пользовательский скрипт, описывающий характер проверки, если в качестве типа проверки доступности выбрано «user-defined»:
set load-balancing wan interface-health <interface> test <rule_number> test-script <script_path>где <script_path> - путь к файлу скрипта и его имя.
Указать значение максимального времени ожидания ответа на сообщение ICMP в секундах:
set load-balancing wan interface-health <interface> test <rule_number> resp-time <time>где <time> - время отклика в секундах. Возможно указать значение в диапазоне от «1» до «30». По умолчанию используется значение «5».
Задать предельное время жизни (число узлов):
set load-balancing wan interface-health <interface> test <rule_number> ttl-limit <h_count>где <h_count> - число прыжков. Возможно указать значение в диапазоне от «1» до «254». По умолчанию используется значение «1».
Примечание
Параметр определяет количество переходов между каждой парой шлюзов на пути к хосту-получателю. Он используется для тестирования с протоколом UDP, когда выбирается тип тестирования «TTL». Успешным результатом является получение в ответ сообщения ICMP Time Expired.
Задать IPv4-адрес хоста-получателя, на который будут отправляться сообщения ICMP Echo Request:
set load-balancing wan interface-health <interface> test <rule_number> target <IPv4-address>
Правила балансировки
Балансировка нагрузки представляет собой совокупность правил, определяющих тип трафика, подлежащего распределению, а также перечень таблиц маршрутизации и их значимости.
Каждое правило включает в себя критерии соответствия и таблицы маршрутизации с присвоенной значимостью. Правила пронумерованы и выполняются в установленном порядке, начиная с «1» и заканчивая «9999».
Примечание
Номер правила является уникальным идентификатором, который не может быть изменён. Для изменения номера правила необходимо удалить его и создать заново с новым номером. Рекомендуется назначать номера правил балансировки нагрузки, оставляя свободные интервалы. Например, возможно создать набор правил с номерами 10, 20, 30 и т. д. Это позволит в случае необходимости добавить новое правило в определённое место в текущей последовательности без удаления текущего набора правил.
Общие настройки балансировки
Для изменгения общих настроек балансировки введите в конфигурационном режиме следующие команды:
Задать приоритет правила балансировки:
set load-balancing wan rule <priority>где <priority> - приоритет правила. Возможно указать значение в диапазоне от «1» до «9999».
Задать описание правила:
set load-balancing wan rule <priority> description <text>где <text> - описание правила.
Задать режим резервирования канала в качестве режима балансировки:
set load-balancing wan rule <priority> failoverПо умолчанию испольуется режим балансировки трафика - система выполняет распределение трафика пропорционально отношению значимости интерфейса.
При включении режима резервирования канала - весь трафик идёт через основной интерфейс, а в случае его отказа - через резервный. В этом случае вместо балансировки трафика между всеми работоспособными WAN каналами трафик передаётся только по активному. В случае отказа активного WAN канала на эту роль выбирается другой из списка резервных на основе состояния и значимости интерфейса. Оставшиеся WAN каналы становятся резервными по отношению к новому активному.
Примечание
Роли WAN-каналов и соответствующих им интерфейсов могут быть выбраны на основе порядка правил балансировки. В связи с тем, что автоматическое перераспределение установленных ранее сессий между активными и резервными каналами WAN не осуществляется, необходимо включить параметр «Очищать таблицы отслеживания подключений при изменении состояния соединения» (см. Основные настройки).
Задать пакетный тип проверки трафика:
set load-balancing wan rule <priority> per-packet-balancingПо умолчанию испольузется потоковый тип проверки - для исходящего трафика по умолчанию применяется балансировка потоков в полном объёме. Для функционирования в данном режиме используется механизм отслеживания соединений на основе IP-адресов отправителя и получателя, а также номеров портов отправителя и получателя. Каждый поток связывается с определённым сетевым интерфейсом в соответствии с установленными правилами балансировки, в результате чего все сетевые пакеты, относящиеся к данному потоку, перенаправляются через этот интерфейс. Преимуществом данного режима работы является сохранение последовательности пакетов при использовании различных скоростей передачи данных для различных подключений.
Включение пакетного типа проверки балансировка пакетов для исходящего трафика позволяет достичь лучших показателей, но только при условии, что нарушение порядка пакетов не повлияет на функционирование сетевой инфраструктуры.
Включить режим, при котором трафик, соответствующий правилу, не будет перенаправляться:
set load-balancing wan rule <priority> exclude«Небалансируемый трафик» - трафик, который соответствует правилу, не балансируется, а маршрутизируется в соответствии с записями в системной таблице маршрутизации. Задать параметр возможно, если используется режим балансировки трафика.
Настройка балансируемых интерфейсов
Для настройки балансируемых интерфейсов введите в конфигурационном режиме следующие команды:
Задать интерфейс, который будет использоваться правилом:
set load-balancing wan rule <priority> interface <interface>где <interface> - имя интерфейса. Допускается указание как физических, так и виртуальных интерфейсов.
Указать значимость интерфейса:
set load-balancing wan rule <priority> interface <interface> weight <weight>где <weight> - значимость интерфейса. Возможно указать значение в диапазоне от «1» до «255»
Примечание
Отношение значимостей интерфейсов будет применяться с помощью алгоритма взвешенного случайного распределения в балансировке трафика. Пример, значимости 2 и 1 балансируемых интерфейсов означают, что через первый пойдёт 66% трафика, а через второй - 33%.
Указать входящий интерфейс:
set load-balancing wan rule <priority> inbound-interface <interface>
Ограничение скорости
Примечание
Настройки ограничения скорости применяются в том случае, если параметр «Небалансируемый трафик» не задан. Правило будет срабатывать, если скорость трафика будет соответствовать заданной.
Для настройки ограничения скорости введите в конфигурационном режиме следующие команды:
Задать вариант сравнения, выше или ниже заданного лимита скорости.
set load-balancing wan rule <priority> limit threshold <above|below>где <above|below> - выше или ниже лимита соответственно.
Задать количество сетевых пакетов, которое используется для расчета скорости:
set load-balancing wan rule <priority> limit rate <lim_rate>где <lim_rate> - количество сетевых пакетов. Возможно указать значение в диапазоне от «0» до «4294967295».
Задать период времени, в течение которого производится расчёт скорости:
set load-balancing wan rule <priority> limit period <lim_period>где <lim_period> - период времени, в течение которого производится расчёт. Возможно указать значение из списка:
«hour» - в течение часа;
«minute» - в течение минуты;
«second» - в течение секунды.
Задать количество пакетов, допустимое для превышения лимита в течение указанного периода времени:
set load-balancing wan rule <priority> limit burst <lim_burst>где <lim_burst> - допустимое превышение лимита. Возможно указать значение в диапазоне от «0» до «4294967295»
Транспортный протокол
Для настройки балансировки протоколов транспортного уровня, инкапсулируемых в IP протокол, введите в конфигурационном режиме следующие команды:
Указать номер или наименование протокола:
set load-balancing wan rule <priority> protocol <prot_num|prot_name>где:
<prot_num> - номер протокола. Возможно указать значение в диапазоне от «0» до «255».
<prot_name> - наименование протокола. Пример допустимых значений:
«all»;
«tcp_udp»;
«ethernet».
Примечание
При указании наименования протокола возможно использовать клавишу «Tab» на клавиатуре для вывода информации о доступных к использованию параметров.
Балансировка всех, кроме указанных протоколов:
set load-balancing wan rule <priority> protocol <!prot_num|!prot_name>
Параметры отправителя
Параметры отправителя позволяют настроить параметры правил в зависимости от источника трафика. Для настройки введите в конфигурационном режиме следующие команды:
Задать адрес отправителя:
set load-balancing wan rule <priority> source address <source_address>где <source_address> - адрес отправителя. Возможно указать значения в следующих форматах:
<x.x.x.x> - IPv4 адрес;
<x.x.x.x/x> - IPv4 подсеть;
<x.x.x.x>-<x.x.x.x> - диапазон IPv4 адресов;
!<x.x.x.x> - все, кроме указанного адреса;
!<x.x.x.x/x> - все, кроме указанной подсети;
!<x.x.x.x>-<x.x.x.x> - все, кроме указанного диапазона адресов
Задать порт отправителя:
set load-balancing wan rule <priority> source port <source_port>где <source_port> - порт отправителя. Возможно указать значение в диапазоне от «1» до «65535» в следующих форматах:
<xxxxx> - порт отправителя;
<xxxxx>-<xxxxx> - диапазон портов;
!<xxxxx> - все, кроме указанного порта;
!<xxxxx>-<xxxxx> - все, кроме указанного диапазона портов.
Указать используемый протокол:
set load-balancing wan rule <priority> source port <protocol>где <protocol> - наименование протокола. Пример допустимых значений:
«echo»;
«ssh»;
«https».
Примечание
При указании наименования протокола возможно использовать клавишу «Tab» на клавиатуре для вывода информации о доступных к использованию параметрах.
Параметры получателя
Параметры получателя позволяют настроить параметры правил в зависимости от адресата трафика. Для настройки введите в конфигурационном режиме следующие команды:
Задать адрес получателя трафика:
set load-balancing wan rule <priority> destination address <destination_address>где <destination_address> - адрес получателя трафика. Возможно указать значения в следующих форматах:
<x.x.x.x> - IPv4 адрес;
<x.x.x.x/x> - IPv4 подсеть;
<x.x.x.x>-<x.x.x.x> - диапазон IPv4 адресов;
!<x.x.x.x> - все, кроме указанного адреса;
!<x.x.x.x/x> - все, кроме указанной подсети;
!<x.x.x.x>-<x.x.x.x> - все, кроме указанного диапазона адресов.
Задать порт поулчателя трафика:
set load-balancing wan rule <priority> destination port <destination_port>где <destination_port> - порт получателя трафика. Возможно указать значение в диапазоне от «1» до «65535» в следующих форматах:
<xxxxx> - порт получателя трафика;
<xxxxx>-<xxxxx> - диапазон портов;
!<xxxxx> - все, кроме указанного порта;
!<xxxxx>-<xxxxx> - все, кроме указанного диапазона портов.
Указать используемый протокол:
set load-balancing wan rule <priority> destination port <protocol>где <protocol> - наименование протокола. Пример допустимых значений:
«echo»;
«ssh»;
«https».
Примечание
При указании наименования протокола возможно использовать клавишу «Tab» на клавиатуре для вывода информации о доступных к использованию параметрах.
Пример настройки
В качестве примера используется настройка резервирования канала и схема стенда, представленная на рисунке (см. Рисунок – Схема стенда для настройки резервирования канала).
Рисунок – Схема стенда для настройки резервирования канала
Предварительно система ARMA Стена настроена следующим образом:
Созданы группы и заданы адреса для ethernet интерфейсов:
set firewall group interface-group WAN interface 'eth0' set firewall group interface-group WAN interface 'eth1' set interfaces ethernet eth0 address '192.168.1.100/24' set interfaces ethernet eth1 address '192.168.2.100/24' set interfaces ethernet eth2 address '192.168.3.1/24 commit saveНастроены правила NAT:
set nat source rule 10 outbound-interface group 'WAN' set nat source rule 10 translation address 'masquerade' commit save
Список команд для настройки:
set load-balancing wan interface-health eth0 nexthop '192.168.1.1' set load-balancing wan interface-health eth1 nexthop '192.168.2.1' set load-balancing wan rule 10 failover set load-balancing wan rule 10 inbound-interface 'eth2' set load-balancing wan rule 10 interface eth0 set load-balancing wan rule 10 interface eth1 commit save