LINUX.ORG.RU
ФорумAdmin

Балансировка сетевой нагрузки (vpn)

 , ,


0

2

Здравствуйте. Изучаю вопрос балансировки нагрузки между серверами. И видимо что-то не понимаю (как обычно) :) Меня интересует следующая тема. 1.Есть несколько vpn серверов. Допустим три. И они в разных частях планеты. Один в России, один В США и пусть один будет в Австралии. Это просто для примера. :) Ну и соответственно есть клиенты в указанных местах. Т.е. vpn-клиентам из США правильнее подключаться к серверу США, а не России. Логика должна быть ясна. Соответственно механизм определения ближайшего сервера должен работать автоматически основываясь на геолокации клиента. Читал, что в mail.ru так сделано. Выбирается ближайший к пользователю сервер на основе geoip. ВОПРОС: самому реализовать такое на базе linux возможно? Вангую, что да. Какими средствами реализовать можно подобное? 2. Второй вопрос вытекает из первого. Средства и примеры балансировки сетевой нагрузки, которые я посмотрел, базируются на использовании DNS. Т.е. пользователь идет на адрес test.com за этим адресом закреплены допустим три сервера с конкретными ip. И в зависимости от способа реализации (способа определения наиболее подходящего сервера) пользователь попадает на один из них. С этим все понятно. ВОПРОС №2: Если мы говорим не о web-серверах, а о VPN-серверах (pptp, OpenVPN), то применимы ли данные способы (nginx, lvs, round robin и прочее)? У меня большие сомнения на этот счет. Буду очень признателен за развернутые ответы. Спасибо за понимание.


Можно без геоип — мерять пинг на каждый из доступных. Еще полезно знать про anycast (хоть это и не тот случай). Второй вопрос — очевидно роунд робин да, lvs нет, и причем тут нжинкс?

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

Round Robin как-то странно балансирует. Точнее не так как хотелось бы. Он же просто в порядке очереди переадресует по списку заданных адресов. Без учета «веса» и реальной нагрузки на сервер. NGINX в случае с web-серверами умеет балансировать нагрузку. В случае с RR сервера должны быть идентичной конфигурации. А меня интересует, когда сервера vpn разной конфигурации. И в зависимости от мощности и загруженности можно было бы рулить подключениями.

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

Он же просто в порядке очереди переадресует по списку заданных адресов.

Да, это то как работает роунд-робин.

NGINX в случае с web-серверами умеет балансировать нагрузку.

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

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

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

хорошо, если говорить о балансировке нагрузки удаленных vpn-серверов с определением ближайшего к пользователю кроме RR есть полуготовые/готовые решения или нужно самому велосипед придумывать?

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

кроме RR

Сомневасюь.

Хотя навелосипедить не так трудно. Можно написать скрипт и вставить его вызов в скрипт запуска опенвпн клиента. (Пинг всех серверов из списка, выбор самого короткого, правка конфига опенвпн клиента через тот самый sed -i например)

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

Что это за способы?

Это все равно не применимо в случае с впн.

Из коробки он умеет подключать туда где меньше соединений, и еще через хеш айпи адреса клиента.

redixin ★★★★
()

Если есть возможность выделить для фронтов /24 и возможность анонсить по BGP - можно на всех трёх серверах настроить адреса с этой сетки, и со всех трёх же точек и анонсить. Трафик от клиентов пойдёт на ближайшую по хопам точку.

AlexAT
()
Ответ на: комментарий от kerby

Подразумевается наличие собственной AS (autonomous system, некоторый идентификатор владельца адресного пространства в сети Интернет, к этой AS покуается сеть маршрутизируемых IP-адресов, которые можно анонсировать по протоколу BGP), договор с вышестоящим провайдером/провайдерами на взаимодествие по BGP для обмена анонсами маршрутов с ними. Ну и сам BGP позволяет анонсировать одни и те же IP-адреса из разных мест. Так работает, например, гугель, устанавливая свои сервера youtube и в частности DNS 8.8.8.8 и 8.8.4.4 на площадках крупных провайдеров. Таким образом, при обращении клиента к гугловым сервисам его обслуживает ближайший.

В вашей ситуации, либо вариант с AS использовать, либо на уровне DNS распределять нагрузку. Возникает вопрос снятия параметров «нагруженности» на ваших серверах и уведомления об этом вашего DNS-сервера, чтоб он корректировал выдачу при резолве. Собственно и гео-локация тоже делается на уровне вашего DNS-сервера. Важно понимать, что этот сервер должен обслуживать ваш домен, то есть быть NS-сервером у регистратора доменов.

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

Мне бы теории в этом вопросе. Подскажите может литературу какую. Чтоб быть в теме и понимать что да как. Буду признателен.

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

К сожалению, я больше практик, а не теоретик. Но в целом, тут важно понимание работы BGP и DNS, чтоб представлять где и в каком месте можно решить ту или иную задачу.

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