EdgeRouter – функции балансировки двух WAN

Специалист
Задать вопрос

Ответ на вопрос

В статье рассмотрены функции балансировки нагрузки WAN между интерфейсами на EdgeRouter на основе версии EdgeOS v1.4.0 и более поздних версий. Версии EdgeOS до v1.8.0 поддерживали только два интерфейса WAN, в версии 1.8.0 - до 8.

Какие функции нужны для такой конфигурации:

1) Раздел баланса нагрузки, который определяет интерфейсы, и, возможно, адреса для пинга, интервалы таймера, тест маршрута и т.д.
2) Набор правил брандмауэра, определяющий критерии соответствия.
3) По крайней мере, один интерфейс LAN, на котором применяется набор правил брандмауэра.

Примечание. Прежде чем настраивать балансировку нагрузки, рекомендуется проверить, что оба интерфейса WAN правильно настроены с помощью nat/firewall/etc. Подключите один интерфейс WAN, убедитесь, что клиенты локальной сети могут получить доступ к Интернету. Затем сделайте то же самое со вторым WAN.

Минимальная конфигурация

Ниже приведен пример конфигурации, который использует в основном значения по умолчанию (используя команду «show» в режиме конфигурации):

ubnt@ER-Pro# show load-balance
group WLB {
interface eth0 {
}
interface pppoe0 {
}
}

ubnt@ER-Pro# show firewall modify
modify WAN_WLB {
rule 10 {
action modify
modify {
lb-group WLB
}
}
}

ubnt@ER-Pro# show interfaces ethernet eth2
description LAN
address 192.168.16.1/24
firewall {
in {
modify WAN_WLB
}
}


При такой конфигурации весь трафик входящего трафика на eth2 будет подчиняться балансу нагрузки (по умолчанию 50/50 для каждой глобальной сети). Эта конфигурация также запускает сторожевой поток (watchdog) для каждого интерфейса WAN, который пингует www.ubnt.com каждые 10 секунд. Если есть 3 последовательных сбоя, весь трафик перейдет на другой интерфейс глобальной сети. Конечно, если Вам не нравятся эти значения по умолчанию, они могут быть перенастроены.

Команда «show»

Во первая команда «show» отображает «статус» интерфейсов, связанных с группой балансировки нагрузки WAN.

ubnt@ER-Pro:~$ show load-balance status
Group WLB
interface : eth7
carrier : up
status : active
gateway : 22.0.0.1
weight : 50
flows
WAN Out : 7451
WAN In : 0
Local Out : 8854

interface : pppoe0
carrier : up
status : active
gateway : pppoe0
weight : 50
flows
WAN Out : 7566
WAN In : 0
Local Out : 3904
Во-вторых команда «show» отображает информацию связанную со «сторожевым потоком» (watchdog), включая статус, неудачные сообщения и пинг шлюза.
ubnt@ER-Pro:~$ show load-balance watchdog
Group G
eth7
status: Running
pings: 98
fails: 1
run fails: 0/2
route drops: 0
ping gateway: ping.ubnt.com - REACHABLE

pppoe0
status: Running
pings: 27
fails: 0
run fails: 0/3
route drops: 0
ping gateway: ping.ubnt.com - REACHABLE
Примечание. Если ваш интерфейс WAN - PPPoE, рекомендуется не получать маршрут с сервера pppoe, а вместо этого добавить маршрут интерфейса:
configure
set interfaces ethernet eth1 pppoe 0 default-route none
set protocols static interface-route 0.0.0.0/0 next-hop-interface pppoe0
commit
save
exit

Параметры конфигурации

Для тех, кто хочет изменить значения по умолчанию, существует несколько параметров конфигурации:

load-balance {
group <name> {
interface <name> {
route {
default
table <name>
}
weight <number>
failover-only
route-test {
type {
default
ping {
target <host>
}
script <name>
}
initial-delay <number>
interval <number>
count {
success <number>
failure <number>
}
}
}
}
}

Раздел маршрутизации

В разделе «route» EdgeOS по умолчанию пытается определить используемый шлюз для интерфейса. Выбранный шлюз будет отображаться в «show watch-balance watchdog». Если он найдет шлюз по умолчанию или если Вы хотите управлять шлюзом, вы можете использовать PBR для определения вашей собственной таблицы маршрутизации, например:

configure set protocols static table <num> route 0.0.0.0/0 next-hop <gateway IP>
set load-balance group <name> interface <name> route table <num>
commit
save
exit

Раздел «Route-test»

В разделе «Route-test» Вы можете изменить поведение по умолчанию сторожевого потока «watchdog route-test» в соответствии с приведенными ниже параметрами: - Опция «ping target» позволяет установить хост для пингования.
- Опция «script» позволяет вам полностью решить, следует ли считать интерфейс WAN активным или неактивным. Сценарий будет вызываться с тремя параметрами (имя группы, имя интерфейса и текущий статус - «ОК» или «DOWN»). Если сценарий завершен с 0, то тест маршрута считается хорошим, а любое другое значение считается неудачным.

Примечание. Несмотря на то, что таймеры сторожевого потока являются многопоточными, было бы неплохо, если бы скрипт работал в течение длительного периода времени.

DNS

Если Вы получаете свой адрес WAN через dhcp или pppoe, ваш провайдер, скорее всего, даёт Вам адрес DNS-сервера, который будет работать только с этим интерфейсом WAN. Балансировщик нагрузки требует, чтобы все DNS-серверы в /etc/resolv.conf могли использоваться обеими WAN. И dhcp, и pppoe имеют возможность игнорировать DNS-сервер провайдера:

configure
set interfaces ethernet ethX dhcp-options name-server no-update
commit
save
exit
configure
set interfaces ethernet ethX pppoe <num> name-server none
commit
save
exit
Конечно, Вам требуется добавить глобальный DNS-сервер для системного использования.
configure
set system name-server 8.8.8.8
commit
save
exit

Тест работоспособности

По умолчанию система будет использовать ping, чтобы определить, включен ли интерфейс WAN. Хост-узел по умолчанию, который получает ping-сообщение, - ping.ubnt.com, тем не менее, имеет смысл делать пинг на любой другой хост, который ближе к вам. Кроме того, если вы используете иной адрес, то интерфейс удаляется из записи об dns.

configure
set load-balance group <name> interface <name> route-test type ping target 8.8.8.8
commit
save
exit

Исключение LAN-to-LAN

Способ работы с балансировкой нагрузки - создание новых таблиц маршрутизации для использования интерфейсов WAN. Это отлично работает для трафика LAN для WAN, но мы же не хотим его балансировать, когда он идет от локальной сети в локальную сеть. Самый простой способ избежать этого - создать группу в брандмауэре с сетями LAN и добавить правило в набор «modify», чтобы использовать основную таблицу маршрутизации для пунктов назначения.
Примечание. Это правило необходимо выполнить перед правилом баланса нагрузки.

configure
set firewall group network-group LAN_NETS network 192.168.0.0/24
set firewall group network-group LAN_NETS network 192.168.1.0/24
set firewall group network-group LAN_NETS network 172.16.0.0/24
commit
set firewall modify WAN_WLB rule 10 destination group network-group LAN_NETS
set firewall modify WAN_WLB rule 10 action modify
set firewall modify WAN_WLB rule 10 modify table main
commit
ubnt@WLB# show firewall modify
modify WAN_WLB {
rule 10 {
action modify
destination {
group {
network-group LAN_NETS
}
}
modify {
table main
}
}
rule 20 {
action modify
modify {
lb-group WLB
}
}
}
[edit]

Port Forwarding

Мы также не хотим балансировать трафик с port-forwarding. Поэтому добавьте другое правило, чтобы исключить общий адрес маршрутизатора.
Поскольку общий адрес может быть динамическим, используйте псевдоним адреса. В этом примере правила переадресации идут на pppoe0:

firewall {
modify WAN_WLB {
rule 10 {
action modify

description "do NOT load balance lan to lan"
destination {
group {
network-group LAN_NETS
}
modify {
table main
}
}
rule 20 {
action modify
description "do NOT load balance destination public address"
destination {
group {
address-group ADDRv4_pppoe0
}
}
modify {
table main
}
}
rule 30 {
action modify
modify {
lb-group WLB
}
}
}

Создание стабильных сессий при нескольких WAN

Некоторые веб-сайты, например, банковские, выходят из сессии, когда видят другой IP-адрес. В версии v1.7.0 к функции баланса нагрузки добавлена «липкая» функция, так что пользователь может определить, какие поля в пакетах используются для хэша данного WAN. Например:

configure
set load-balance group G sticky source-addr enable
set load-balance group G sticky dest-addr enable
set load-balance group G sticky dest-port enable
commit
save
exit
«Липкий» означает, что распределение баланса может быть не таким точным, как без «липких», поскольку сеанс блокируется для данного WAN. Со временем и с достаточным количеством потоков нагрузка имеет тенденцию выравниваться.

Комментариев пока нет Добавить комментарий

Другие темы

UniFiAirFiber
AirMaxAirVision
EdgeMax

Другие вопросы