Балансировка трафика между серверами

12
vadimaster
На сайте с 04.05.2008
Offline
48
1803

Ребята, натолкните на мысль, плз, кто знает. Есть несколько серверов с видео. На всех серверах одни и те же фильмы. Хочу сбалансировать трафик и пропорционально загружать каналы серверов. Т.е., например, если Server#1 загружен на 70%, а Server#8 на 50%, то фильм должен начать загружаться с Server#8. На всех серверах установлен Linux (Apache+Nginx+PHP).

Как я себе представляю всё это реализовать: мне нужно, чтобы на каждом сервере, скажем, каждые 5 секунд срабатывал некий скрипт, который будет сохранять в файлик цифры загрузки канала. Затем, перед запуском фильма, отдельный скрипт будет считывать такие файлики с каждого сервера, и выберет самый незагруженный из них. Реализация сего процесса для меня не составит большого труда, но я не знаю каким образом можно достучаться до текущей загрузки канала. Посмотреть её я могу в iftop, например, или в nettop. Теоретически, я могу от администратора запускать одну из этих программ, и выпарсивать оттуда данные. Но, мне кажется, что должен быть способ проще, чтобы узнать текущую загрузку канала.

Партнёрская программа в Анализаторе Собачьих Бегов (http://dogstats.ru/?action=pp). Четыре уровня, процент партнёра до 35%, выплаты несколько раз в неделю!
Himiko
На сайте с 28.08.2008
Offline
561
#1

Простой способ - snmp

Есть даже модуль для php, который позволяет получать данные по этому протоколу.

Не нужно никаких файликов держать. В нужный момент вы просто обращаетесь к серверам и сравниваете загрузку каналов.

Профессиональное администрирование серверов (https://systemintegra.ru). Круглосуточно. Отзывы (/ru/forum/834230) Лицензии (http://clck.ru/Qhf5) ISPManager,VDSManager,Billmanager e.t.c. по низким ценам.
A
На сайте с 19.07.2010
Offline
130
#2

можно snmp + mrtg

mrtg - наглядно нарисует графики загрузки по всем серверам, так что сразу будет видно перекос трафа.

если лень на каждый запрос файла дергать все сервера, то mrtg хранит текущую загрузку(актуальность сами выставите в кроне, обычно ставят 5 минут) в текстовых файлах. так что вам будет достаточно парсить текстовые файлы.

.............
N
На сайте с 06.05.2007
Offline
419
#3

vadimaster, а почему вы решили, что это вам нужно ?

При достаточно больших объемах и если сервера идентичные, в одном и том же датацентре, все само собой будет распределяться, если сделать в скрипте случайное равномерное распределение.

Кнопка вызова админа ()
Himiko
На сайте с 28.08.2008
Offline
561
#4
если сделать в скрипте случайное равномерное распределение.

+1.

Это математика. Если сделать случайное распределение трафика на несколько серверов, то нагрузка на них будет приблизительно одинаковой.

M
На сайте с 16.09.2009
Offline
278
#5

Единственное замечание: "этой математикой" можно пользоваться только покуда "в среднем" каналы загружены меньше чем на половину. Более аккуратно можно оценить, если учесть средние характеристики отдачи видео (напр. размер, скорость).

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
vadimaster
На сайте с 04.05.2008
Offline
48
#6
netwind:
vadimaster, а почему вы решили, что это вам нужно ?
При достаточно больших объемах и если сервера идентичные, в одном и том же датацентре, все само собой будет распределяться, если сделать в скрипте случайное равномерное распределение.

Так не получится, потому что смотрят разные фильмы, а в день премьеры бОльшая часть посетителей смотрит только 1-2 фильма, из-за чего рандомное распределение нагрузки может выйти боком. Нужно именно проверять каждый сервер, и грузить фильм с наименее загруженного.

Himiko и admak, про snmp слышал, но подумал, что это не совсем то. Спасибо большое за подсказку. Если бы ещё ткнули меня в маны по пользованию с примерами, был бы очень-очень признателен! :)

N
На сайте с 06.05.2007
Offline
419
#7

vadimaster, не вижу логики. Подразумевалось, что в момент раздачи происходит выбор с какого из серверов скачивать, а файлы присутствуют на обоих. Популярные фильмы раздают сразу все сервера в одинаковой степени.

Все нормально будет.

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

Изначально вы с какой целью файлы копировали на оба сервера?

vadimaster
На сайте с 04.05.2008
Offline
48
#8
netwind:
vadimaster, не вижу логики. Подразумевалось, что в момент раздачи происходит выбор с какого из серверов скачивать, а файлы присутствуют на обоих. Популярные фильмы раздают сразу все сервера в одинаковой степени.
Все нормально будет.

Можно выдумать более экономные схемы, пытающиеся угадать одновременный старт просмотров, но их сложность все выгоды перекроет.
Изначально вы с какой целью файлы копировали на оба сервера?

У меня не два сервера, а 8. Я сделал зеркальные HDD на всех серверах именно для того, чтобы рандомно раздавать фильмы с них. Но это оказалось ошибкой, так как бывает мощнейший наплыв просмотров одних и тех же фильмов, в результате которого некоторые из серверов ложатся напрочь. Изучив проблему, и почитав форумы других админов, которые раздают видео, я понял, что есть выход -- балансировать трафик между серверами. Так делают старейшие видео-гиганты, держатели нескольких десятков серверов. В общем, я тоже хочу сделать также.

Romka_Kharkov
На сайте с 08.04.2009
Offline
485
#9

vadimaster, если вы обладаете серверами в количестве #8 и так далее, я рекомендовал бы вам рассматривать нормальные аппаратные решения в виде балансировщиков трафика. Для примера Foundry ServerIron 400/400XL, есть много подобных от разных производителей, цена не супер серьезная, если это реально требуется..... Там 8-10 видов балансировки на 2-7 уровнях OSI. Вам хватит на пол жизни ;)

Есть около 15.000 ipv4 !!! (http://onyx.net.ua/price.php#ipv4) Качественный хостинг с 2005 года - лучшее клиентам! (http://onyx.net.ua/)
L
На сайте с 07.07.2008
Offline
89
#10
vadimaster:
У меня не два сервера, а 8. Я сделал зеркальные HDD на всех серверах именно для того, чтобы рандомно раздавать фильмы с них. Но это оказалось ошибкой, так как бывает мощнейший наплыв просмотров одних и тех же фильмов, в результате которого некоторые из серверов ложатся напрочь. Изучив проблему, и почитав форумы других админов, которые раздают видео, я понял, что есть выход -- балансировать трафик между серверами. Так делают старейшие видео-гиганты, держатели нескольких десятков серверов. В общем, я тоже хочу сделать также.

так зачем HDD поставьте SSD и проблему рукой снимет

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий