IP Load Balancing в Linux может заключаться в распределении запросов пользователей по серверам — web или почтовым серверами.
Также Load Balancing может быть на уровне сети. Он будет рассмотрен далее. В частности подключение локальной сети к двум провайдерам одновременно.
Схему работу можно представить так:
Local Network — Router — Provider1
|______ Provider2
Принцип маршрутизации трафика неизменен. Маршрут включает в себя интерфейс на роутере, IP адрес, заданный для интерфейса и ip адрес gateway на стороне провайдера.
Правила могут иметь такой вид (имена и структура позаимствованы отсюда)
ip route add $P1_NET dev $IF1 src $IP1 table T1 ip route add default via $P1 table T1 ip route add $P2_NET dev $IF2 src $IP2 table T2 ip route add default via $P2 table T2
Для каждого провайдера должна быть своя таблица iptables.
Правила для входящего трафика теперь добавлены.
Правила для исходящего трафика.
Сначала определяем адрес для трафика, уходящего с определенного интерфейса.
ip route add $P1_NET dev $IF1 src $IP1 ip route add $P2_NET dev $IF2 src $IP2
Маршрут по умолчанию
ip route add default via $P1
Теперь правила маршрутизации
ip rule add from $IP1 table T1 ip rule add from $IP2 table T2
Получена простая схема раздельного доступа.
Настройка IP Load Balancing в Linux
Сама настройка балансировки заключается в замене дефолтного маршрута правилом, дающим системе гибкость.
ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \ nexthop via $P2 dev $IF2 weight 1
С данным правилом трафик будут распределяться между провайдерами с учетом весов.
Читайте про балансировку запросов к веб-серверу.