Кирилл Хорошилов
Несколько каналов выхода в Интернет уже не редкость для организаций. Как
использовать их более эффективно? Решение есть!
В наше время многие компании имеют более одного подключения к Интернету. Как
правило, один канал используется как основной, второй – как резервный (по
крайней мере, для определенных пользователей либо определенного типа трафика).
Очень часто переключение трафика на другой канал при падении первого
реализуется администратором вручную.
В статье предлагается способ одновременного
использования двух каналов выхода в Интернет с балансировкой нагрузки между
ними, автоматическим контролем работоспособности каналов (Dead Gateway Detection).
Решение полностью основано на Open Source программном обеспечении.
Вводная часть. Исходная точка
Нужно оговорить ситуацию, о которой пойдет речь. В данном случае мы говорим
о так называемом Multihomed подключении локальной сети к двум ISP, когда каждый
провайдер выделяет свой IP (или диапазон IP) для подключения. То есть у
организации нет собственного диапазона IP-адресов (автономной системы), и
протокол динамической маршрутизации (как правило, BGP) не используется. Эта
ситуация наиболее часта для небольших и средних организаций.
Наличие двух внешних IP-адресов для исходящего веб-трафика
накладывает определенные ограничения для обеспечения сессий веб-приложений
(PHP-сессии, cookies). Для поддержания сессионности, которая используется,
например, при входе в веб-почту, форум, то есть там, где есть авторизация, а
также для работы https, нужно на протяжении определенного времени запросы от
одного клиента локальной сети отправлять через один и тот же внешний канал (с
одного исходящего IP).
Таким образом, мы вынуждены балансировать трафик
по клиентам, а не по http-запросам, т.е. привязывать на определенный промежуток
времени каждого клиента к определенному ISP. Следовательно, нагрузка начнет
равномерно распределяться по каналам только при большом количестве
пользователей (хотя бы больше 10).
Оговорюсь, что, если бы не сессионность, можно
сделать балансировку и по запросам, когда даже при наличии одного клиента
http-запросы (GET,POST) будут отправляться поочередно через каждого ISP. Тогда
как при использовании BGP таких ограничений, связанных с веб-сессиями, нет,
т.к. исходящий IP – один при работе через любой из каналов.