ip Load Balancing в Linux


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

С данным правилом трафик будут распределяться между провайдерами с учетом весов.



Читайте про балансировку запросов к веб-серверу.

Сказать спасибо