VPN cluster
- tes+or
- Неотъемлемая часть форума
- Сообщения: 535
- Зарегистрирован: 16 дек 2004, 17:47
- Откуда: minsk
- Контактная информация:
VPN cluster
можно ли средствами IPtables за одним айпишником и одним портом прятать 2-3 pptp сервера и каким либо образом балансировать загрузку между ними - минимально - по количеству соединений, идеально - через обратную связь по загрузке процессора, у кого ресурсов больше свободных, тому юзер и отправляется. и чтобы после того, как юзер соединился с серваком, чтобы трэкер следил за соединением и ассоциировать юзера с одним из серваков, само собой.
кажется это легко решается через IPtables, за который прячутся все VPNы?
если нет, то как?
кажется это легко решается через IPtables, за который прячутся все VPNы?
если нет, то как?
- tes+or
- Неотъемлемая часть форума
- Сообщения: 535
- Зарегистрирован: 16 дек 2004, 17:47
- Откуда: minsk
- Контактная информация:
Hermit, дело в том, что важно даже не столько балансирование, а чтобы отказ одного из серваков не приостановил сервис. а так просто, части юзеров прописываем один адрес, части - другой и никакой кластер ненужен.
если не получится стандартными, то какими получится?
можно тупо вариант со скриптом на DNATе, который следит за серваком, и если он ложится, то просто релоудит свои таблицы чтобы траффик валил на запасной. но при этом:
1.один сервак простаивает 99.9 процентов времени
2.и пока он это делает в момент отказа оказывается что там "что-то не так"
3.машина с натом может свалится также, как и сервак, поэтому в целом надежность понижается.
таким образом я разнес собственную мыслю в хлам. отсюда вопрос - что делать?
если не получится стандартными, то какими получится?
можно тупо вариант со скриптом на DNATе, который следит за серваком, и если он ложится, то просто релоудит свои таблицы чтобы траффик валил на запасной. но при этом:
1.один сервак простаивает 99.9 процентов времени
2.и пока он это делает в момент отказа оказывается что там "что-то не так"
3.машина с натом может свалится также, как и сервак, поэтому в целом надежность понижается.
таким образом я разнес собственную мыслю в хлам. отсюда вопрос - что делать?
tes+or, а как насчет DNS roundrobin ?
А что касается отказоусточивости - то можно ведь просто дублировать сервера - см. в сторону лИнксовых реализаций CARP, VRRP и т.п. вещей, например HA - т.е. если только отказоусточивость на основе дублирования то *CARP должно хватить.
А что касается отказоусточивости - то можно ведь просто дублировать сервера - см. в сторону лИнксовых реализаций CARP, VRRP и т.п. вещей, например HA - т.е. если только отказоусточивость на основе дублирования то *CARP должно хватить.
Опыт растет прямо пропорционально выведенному из строя оборудованию
tes+or, вариант с CARP/VRRP получается примерно следующий:
1) На обоих серверах надо поддерживать актуальную базу аккаунтов - т.е. кластеризовать БД видимо придется.
2) При падении одного из компов - второй продолжает выполнять его функции.
3) Но балансировку нагрузки так сделать не получится.
1) На обоих серверах надо поддерживать актуальную базу аккаунтов - т.е. кластеризовать БД видимо придется.
2) При падении одного из компов - второй продолжает выполнять его функции.
3) Но балансировку нагрузки так сделать не получится.
Опыт растет прямо пропорционально выведенному из строя оборудованию
-
- Неотъемлемая часть форума
- Сообщения: 354
- Зарегистрирован: 22 сен 2004, 13:47
- Откуда: Minsk
- Контактная информация:
Балансировка не будет работать без специальных модулей, которые отслеживат соответствие tcp и gre сессий. Если попытаться балансировать стандартными средствами (типа DNAT на несколько IP) возможны ситуация, когда от одного клиента tcp сессия придет на один vpn сервер, а gre пакеты попадут на другой. Кроме того, нужен модуль conntrack-pptp, т.к. без него даже пакеты в рамках одной сессии будут попадать на разные серверы.
Вариант с dns round robin вряд ли в данном случае, т.к. обычно клиенты не имеют доступа к DNS серверам, либо они не указаны в настройках у клиента. Во-вторых неясно, "догадается" ли операционная система отправить и tcp и gre сессии на один ip.
Подытаживая все вышесказанное - наиболее приемлемое решение использовать VRRP с количеством групп равным количеству серверов. Т.е. если есть 2 vpn сервера, поднимается 2 vrrp группы, половине клиентом отдаем один ip, другой половине - второй. Настраиваем VRRP таким образом, чтобы мастером для первой группы был один сервер, для второй группы - другой. Таким образом при нормально работающей системе половина клиентов ходит на один сервер, вторая половина на другой, а в случае выхода из строя одного из серверов благодаря VRRP его функции возьмет на себя другой. Правда сессии клиентов порвутся, и эту ситуацию скорее всего придется дополнительно обрабатывать в биллинге, т.к. со стороны биллинга это будет выглядеть попыткой установить вторую сессию с под одним логином.
Вариант с dns round robin вряд ли в данном случае, т.к. обычно клиенты не имеют доступа к DNS серверам, либо они не указаны в настройках у клиента. Во-вторых неясно, "догадается" ли операционная система отправить и tcp и gre сессии на один ip.
Подытаживая все вышесказанное - наиболее приемлемое решение использовать VRRP с количеством групп равным количеству серверов. Т.е. если есть 2 vpn сервера, поднимается 2 vrrp группы, половине клиентом отдаем один ip, другой половине - второй. Настраиваем VRRP таким образом, чтобы мастером для первой группы был один сервер, для второй группы - другой. Таким образом при нормально работающей системе половина клиентов ходит на один сервер, вторая половина на другой, а в случае выхода из строя одного из серверов благодаря VRRP его функции возьмет на себя другой. Правда сессии клиентов порвутся, и эту ситуацию скорее всего придется дополнительно обрабатывать в биллинге, т.к. со стороны биллинга это будет выглядеть попыткой установить вторую сессию с под одним логином.
-
- Неотъемлемая часть форума
- Сообщения: 354
- Зарегистрирован: 22 сен 2004, 13:47
- Откуда: Minsk
- Контактная информация:
update: Вариант с DNS roundrobin скорее всего будет работать в windows - похоже, что виндовый resolver кеширует одну A запись. В linux нужно смотреть исходники pptp клиента, если dns resolving для имени делается один раз, и полученный ip используется и для tcp и для gre сессий - все ок, иначе будет работать через раз 
Т.о. если если вышеупомянутый вопрос рещится положительно, либо будут только windows-клиенты, оптимальная схема видится как dns roundrobin + VRRP с несколькими группами.

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