LINUX.ORG.RU
ФорумAdmin

Проблема с Load Balancing


0

0

Есть небольшой роутер на платформе Fedora Core 1, есть два провайдера и внутрення подсеть, нужно обеспечить стабильный выход в инет по двум каналам с разными приоритетами, при этом обеспечив взаимное резервирование. Просмотрел много инфы в нете, советовался по форумам, и наткнулся на Load Balancing. Кратко суть описана на http://lartc.org/howto/lartc.rpdb.multiple-links.html#AEN298 . Изложу последовательность настройки: 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 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 route add $P0_NET dev $IF0 table T1 ip route add $P2_NET dev $IF2 table T1 ip route add 127.0.0.0/8 dev lo table T1 ip route add $P0_NET dev $IF0 table T2 ip route add $P1_NET dev $IF1 table T2 ip route add 127.0.0.0/8 dev lo table T2 ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \ nexthop via $P2 dev $IF2 weight 1

Здесь: Let $IF1 be the name of the first interface (if1 in the picture above) and $IF2 the name of the second interface. Then let $IP1 be the IP address associated with $IF1 and $IP2 the IP address associated with $IF2. Next, let $P1 be the IP address of the gateway at Provider 1, and $P2 the IP address of the gateway at provider 2. Finally, let $P1_NET be the IP network $P1 is in, and $P2_NET the IP network $P2 is in.

Внимание нужно обратить на последнюю строчку: ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \ nexthop via $P2 dev $IF2 weight 1

она и отвечает за Load Balancing, параметром weight каждому шлюзу указывается его вес, т.е. можно сказать "приоритет". Я указал этот параметр в соотношении 3:7(больший вес у основного провайдера). В принципе все работает, вот только нет резервирования, т.е. при падении основного канала, основная часть траффика все же хочет пойти через него(и естественно обламывается)... Может кто настраивал что то подобное или читал об этом, ПАМАГИТЕ плиз.

>ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \ nexthop via $P2 dev $IF2 weight 1

а это не совсем балансинг. Когда ядно ищет путь для пакета, оно действительно случайным образом выбирает один из них, соответственно weight.

Но пока время жизни этой записи не истечет, весь трафик на адрес, о пути к которому ядро уже знает, пойдет по этому каналу. Или не пойдет, если он лег :)

fagot ★★★★★
()
Ответ на: комментарий от fagot

А как тогда лучше настроить балансинг с возможностью резервирования??? Я читал для простейшего резервирования достаточно указать разные метрики для каналов, вот только как при этом организовать NAT для внутренней подсети, я пока не представляю... Поделитесь советом плиз...

tseytnot
() автор топика
Ответ на: комментарий от tseytnot

> как тогда лучше настроить балансинг с возможностью резервирования?

по правильному - имхо, только с помощью софта типа quagga, или http://www.linuxvirtualserver.org/whatis.html

>как при этом организовать NAT для внутренней подсети

а в чем проблема? На оба и-фейса поднимаешь и все.

fagot ★★★★★
()
Ответ на: комментарий от fagot

>>как при этом организовать NAT для внутренней подсети

>а в чем проблема? На оба и-фейса поднимаешь и все.

Т.е. для простейшего резервирования пойдет такое решение:

route add default gw ${GW1} metric 0 eth0
route add default gw ${GW2} metric 1 eth1

ip rule add from ${IP_NET_внутр.} to 0/0 table T1 pref105
ip rule add from ${IP_NET_внутр.} to 0/0 table T2 pref105

ip route add table T1 via ${GW1}
ip route add table T2 via ${GW2}

ipchains -A foraward -s ${IP_NET_внутр.} -j MASQ (только эту строку нужно реализовать через iptables)

tseytnot
() автор топика
Ответ на: комментарий от tseytnot

нет, имхо, толку от этого (как _резервирования_) мало.

Простой скрипт-пинговалка рулит :)

fagot ★★★★★
()
Ответ на: комментарий от tseytnot

>ipchains -A foraward -s ${IP_NET_внутр.} -j MASQ

Сейчас поискал, вроде в iptables это реализуется след. образом:

iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE

где eth2 - интерфейс внутренней сети.

Так будет работать, как считаете???
Просто у меня очень мало времени для проверки всего этого на сервере...

tseytnot
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.