VPN cluster

Linux, безопасность, сети и все что с этим связано
Аватара пользователя
tes+or
Неотъемлемая часть форума
Сообщения: 535
Зарегистрирован: 16 дек 2004, 17:47
Откуда: minsk
Контактная информация:

VPN cluster

Сообщение tes+or »

можно ли средствами IPtables за одним айпишником и одним портом прятать 2-3 pptp сервера и каким либо образом балансировать загрузку между ними - минимально - по количеству соединений, идеально - через обратную связь по загрузке процессора, у кого ресурсов больше свободных, тому юзер и отправляется. и чтобы после того, как юзер соединился с серваком, чтобы трэкер следил за соединением и ассоциировать юзера с одним из серваков, само собой.

кажется это легко решается через IPtables, за который прячутся все VPNы?

если нет, то как?

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

Ну самое тупое - в DNAT указать дипазон адресов, а вот как орагнизовать обратную связь... При достаточно большом количестве соединений - должно сложиться досточно равномерное распределенеие ИМХО.
Опыт растет прямо пропорционально выведенному из строя оборудованию

Hermit
Неотъемлемая часть форума
Сообщения: 354
Зарегистрирован: 22 сен 2004, 13:47
Откуда: Minsk
Контактная информация:

Сообщение Hermit »

Поскольку pppt требует и tcp и gre протоколы, стандартными средствами вряд ли получится балансировать.

Имхо балансировать можно только по source address, т.е. траф из сети А и В отправлять на сервер 1, остальное на сервер 2.

Аватара пользователя
tes+or
Неотъемлемая часть форума
Сообщения: 535
Зарегистрирован: 16 дек 2004, 17:47
Откуда: minsk
Контактная информация:

Сообщение tes+or »

трэкингом обратную, но как сделать чтобы оно хотябы на рэндоме выбирало один из трех адресов?

Аватара пользователя
tes+or
Неотъемлемая часть форума
Сообщения: 535
Зарегистрирован: 16 дек 2004, 17:47
Откуда: minsk
Контактная информация:

Сообщение tes+or »

Hermit, дело в том, что важно даже не столько балансирование, а чтобы отказ одного из серваков не приостановил сервис. а так просто, части юзеров прописываем один адрес, части - другой и никакой кластер ненужен.

если не получится стандартными, то какими получится?

можно тупо вариант со скриптом на DNATе, который следит за серваком, и если он ложится, то просто релоудит свои таблицы чтобы траффик валил на запасной. но при этом:
1.один сервак простаивает 99.9 процентов времени
2.и пока он это делает в момент отказа оказывается что там "что-то не так"
3.машина с натом может свалится также, как и сервак, поэтому в целом надежность понижается.

таким образом я разнес собственную мыслю в хлам. отсюда вопрос - что делать?

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

tes+or, а как насчет DNS roundrobin ?
А что касается отказоусточивости - то можно ведь просто дублировать сервера - см. в сторону лИнксовых реализаций CARP, VRRP и т.п. вещей, например HA - т.е. если только отказоусточивость на основе дублирования то *CARP должно хватить.
Опыт растет прямо пропорционально выведенному из строя оборудованию

Аватара пользователя
tes+or
Неотъемлемая часть форума
Сообщения: 535
Зарегистрирован: 16 дек 2004, 17:47
Откуда: minsk
Контактная информация:

Сообщение tes+or »

1.незнаю что такое, но вобщем-то догадываюсь что бы это могло быть. да, оно сохраняет соединения безо всякого трэкера.

2.пока вообще не в курсе, подойдет вопрос вплотную - посмотрю

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

tes+or, вариант с CARP/VRRP получается примерно следующий:
1) На обоих серверах надо поддерживать актуальную базу аккаунтов - т.е. кластеризовать БД видимо придется.
2) При падении одного из компов - второй продолжает выполнять его функции.
3) Но балансировку нагрузки так сделать не получится.
Опыт растет прямо пропорционально выведенному из строя оборудованию

Hermit
Неотъемлемая часть форума
Сообщения: 354
Зарегистрирован: 22 сен 2004, 13:47
Откуда: Minsk
Контактная информация:

Сообщение Hermit »

Балансировка не будет работать без специальных модулей, которые отслеживат соответствие tcp и gre сессий. Если попытаться балансировать стандартными средствами (типа DNAT на несколько IP) возможны ситуация, когда от одного клиента tcp сессия придет на один vpn сервер, а gre пакеты попадут на другой. Кроме того, нужен модуль conntrack-pptp, т.к. без него даже пакеты в рамках одной сессии будут попадать на разные серверы.

Вариант с dns round robin вряд ли в данном случае, т.к. обычно клиенты не имеют доступа к DNS серверам, либо они не указаны в настройках у клиента. Во-вторых неясно, "догадается" ли операционная система отправить и tcp и gre сессии на один ip.

Подытаживая все вышесказанное - наиболее приемлемое решение использовать VRRP с количеством групп равным количеству серверов. Т.е. если есть 2 vpn сервера, поднимается 2 vrrp группы, половине клиентом отдаем один ip, другой половине - второй. Настраиваем VRRP таким образом, чтобы мастером для первой группы был один сервер, для второй группы - другой. Таким образом при нормально работающей системе половина клиентов ходит на один сервер, вторая половина на другой, а в случае выхода из строя одного из серверов благодаря VRRP его функции возьмет на себя другой. Правда сессии клиентов порвутся, и эту ситуацию скорее всего придется дополнительно обрабатывать в биллинге, т.к. со стороны биллинга это будет выглядеть попыткой установить вторую сессию с под одним логином.

Hermit
Неотъемлемая часть форума
Сообщения: 354
Зарегистрирован: 22 сен 2004, 13:47
Откуда: Minsk
Контактная информация:

Сообщение Hermit »

update: Вариант с DNS roundrobin скорее всего будет работать в windows - похоже, что виндовый resolver кеширует одну A запись. В linux нужно смотреть исходники pptp клиента, если dns resolving для имени делается один раз, и полученный ip используется и для tcp и для gre сессий - все ок, иначе будет работать через раз :)

Т.о. если если вышеупомянутый вопрос рещится положительно, либо будут только windows-клиенты, оптимальная схема видится как dns roundrobin + VRRP с несколькими группами.

Ответить