Re: load balancing scripts
Algis St пишет:
Хочу сделать load balancing на два канала провайдера, почитал linux
advanced routing howto и есть пара вопросов:
1. Куда правильно бы было записать команды 'ip' :
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 default scope global nexthop via $P1 dev $IF1 weight 1 \
nexthop via $P2 dev $IF2 weight 1
и т.п. в дебиан ?
Я думаю про /etc/network/if-up.d/ . Может есть другой вариант ?
Так делать можно, но не всегда удобно: неясно, какому интерфейсу
сопоставить последний (default global)
маршрут. Если этот интерфейс не поднимается, то маршрута по умолчанию
тоже не будет?
Если линки к провайдерам могут "мерцать" (а это неизбежно), то
/etc/network/interfaces недостаточно:
не отслеживается реальное состояние линков.
Поэтому я делаю в /etc/network/interfaces минимальное конфигурирование,
gateway - на того провайдера,
которому доверия больше. А по cron проверяю состояние линков (ping'ом) и
переустанавливаю таблицы
маршрутов в соответствии с актуальным состоянием линков. Можно обойтись
без cron/ping,
используя вывод "ip monitor", но я пока не готов.
Еще интерестно что делать с /etc/network/interfaces .. Можно ли комбинировать 'ifconfig' с 'ip'
Например локальную сеть поднять из /etc/network/interfaces, а сети провайдера с помошью 'ip' ?
Можно. Я использую ip в /etc/network/interfaces для создания туннелей
(pre-up скрипты).
2. Будет ли ХОРОШО работать балансировка загрузки и переключение на вторую линию в случае сбоя первой на стандартном ядре 2.4.24 ?
В стандартном ядре вроде бы переключение при сбоях линков не делается.
См. выше.
Обсуждаемое - не совсем балансировка загрузки. Входящее по линку
провайдера 1 соединение не будет использовать
линк к провайдеру 2 никогда, т.е. загруженность линков не учитывается. В
этом смысл приведенных Вами команд "ip route"
Исходящие соединения будут распределяться между провайдерами только в
момент установления соединения,
после этого удачный маршрут запоминается в кэше и используется также без
учета загрузки.
Дмитрий Федосеев.
Reply to: