1

Тема: Geo IP, распределение нагрузки и redirect

Как умные люди реализуют вещание с ретрансляторами по всему глобусу, подключая очередного слушателя к ближайшему ретранслятору, имеющему свободные слоты?

Поддерживают ли плееры редиректы?
Например, пиарить ссылку  www.server.com/mp3.php
а этот php будет по ip клиента вычислять ближайший к нему ретранслятор, и http редиректом перекидывать на http://123.123.123.123:8000/radio.mp3 маунт поиинт?

Радио P.S.: 24/7 музыка, новости мира покера, книги по стратегии игры и интервью с успешными игроками.
Технически: AirTime, LiquidSoap, IceCast2. Слушать: mp3 128 kbps, ogg 128 kbps

2

Re: Geo IP, распределение нагрузки и redirect

zachem ispolzovat tuhliy php esli mozhno vse sdelat na urovne servera.
ya tut nemnogo pisal ob etom http://radiotalk.ru/viewtopic.php?id=3263 i tut http://radiotalk.ru/viewtopic.php?id=3207

admini da chto u was takoe s kodirovkoi to? textoviy parser posmotrite.!

Отредактировано MechanisM (09-07-2011 23:45:36)

3

Re: Geo IP, распределение нагрузки и redirect

пишет MechanisM:

vse sdelat na urovne servera

О, спасибо за ссылки про радио+nginx! Почитаю, что еще народ делает с этой связкой.
У меня задача не для статистики определять, кто откуда, а именно нагрузку балансировать.
Проект русскоязычный, но наши всюду! И для канадцев, или хабаровчан тянуть поток из Питера - не айс : )
Поэтому и планирую сеть ретрансляторов: арендовать серв. в Канаде/штатах, во Владике, в Германии может - они будут как рилеи тянуть поток с питерского "мастера".
Но как перекинуть очередного слушателя на ближайший к нему сервер?
Именно редирект нужен, если это 100% работает для всех плееров. Хотя, они же по протоколу http работают, должны понимать все его спеки..

Радио P.S.: 24/7 музыка, новости мира покера, книги по стратегии игры и интервью с успешными игроками.
Технически: AirTime, LiquidSoap, IceCast2. Слушать: mp3 128 kbps, ogg 128 kbps

4

Re: Geo IP, распределение нагрузки и redirect

пишет SergikS:

U menja zadacha ne dlja statistiki opredeljat', kto otkuda, a imenno nagruzku balansirovat'.

Tak ja ponjal. Ja i imeju vvidu chto s pomow'ju nginx opredeljaesh' stranu i proksish' ili pereadresuesh' v nuzhnyj radio servak.
Esli sam ne razberesh'sja mogu za denezhku sdelat' tebe. NGINX zhe, v svoju ochered', pomimo balansirovki geograficheskoj tak-zhe budet podstavljat' dopolnitel'nye dannye takie kak strana i gorod i koordinaty esli vdrug nuzhny vsjakie vidzhety tipa realtajm karta slushatelej itd itp.
Tak namnogo luchshe chem kazhdyj raz s pomow'ju php ili ewe chego-to dergat' bazu i podstavljat' goroda i strany iz ajpi.

Добавлено спустя     3 минуты   24 секунды:
ADMINI nu voobshe nevozmozhno pisat tut. odni krakozyabri poluchautsya esli na russkom. s drugimi saitami vse okay!
esli chto. browser Chromium poslednij a OS - Ubuntu 11.10 64bit

Отредактировано MechanisM (10-07-2011 20:28:23)

5

Re: Geo IP, распределение нагрузки и redirect

пишет MechanisM:

s pomow'ju nginx opredeljaesh' stranu i proksish' ili pereadresuesh'

С этой же задачей прекрасно справиться правильно написанный PHP или Perl скрипт. Ставить ради такой простой задачи Nginx — палить из пушки по воробьям, средство не адекватно задаче.

Полезно же, из совета использовать Nginx — косвенное упоминание того факта, что плееры понимают HTTP Redirect'ы. Спасибо.

Радио P.S.: 24/7 музыка, новости мира покера, книги по стратегии игры и интервью с успешными игроками.
Технически: AirTime, LiquidSoap, IceCast2. Слушать: mp3 128 kbps, ogg 128 kbps

6

Re: Geo IP, распределение нагрузки и redirect

пишет SergikS:

Stavit radi takoi prostoi zadachi Nginx

hmm a esli u vas osnovnoi http-server ne nginx to ponyatno.
ne odin ya schitau chto apache pora na pomoiku a php saiti zapuskat cherez nginx + php5-fpm. ili v krainem sluchae chtobi nginx razdaval statiku i proksil php v apache.
U menya vse eshe luchshe - nginx + uwsgi + python/django
Naschet chto luchshe - kaneshno cherez nginx. ibo i bistree i ne nado dergat php.

Отредактировано MechanisM (10-07-2011 22:16:36)

7

Re: Geo IP, распределение нагрузки и redirect

пишет MechanisM:

cherez nginx. ibo i bistree i ne nado dergat php

Есть данные профилирования? — сколько точно миллисекунд занимает отработка редиректа после определения гео-принадлежности ip посетителя Nginx'ом и сколько - Apache+PHP или Apache+Perl?

Где, например, живет база гео-ip у Nginx? Уж не обращается ли он каждый раз к другому серверу для разрешения?

Радио P.S.: 24/7 музыка, новости мира покера, книги по стратегии игры и интервью с успешными игроками.
Технически: AirTime, LiquidSoap, IceCast2. Слушать: mp3 128 kbps, ogg 128 kbps

8

Re: Geo IP, распределение нагрузки и redirect

на первый взгляд вижу два варианта
1) обращаемся к geoip,и делать редерикт в зависимости от региона, БД геоип обновлять раз в месяц, бесплатной лайтовой версии хватает как правило.
геоип моно прицепить ко многим вещам. необязательно к геоип. Минусы, geoip не совершенен.
2) при запросе пользователя пырим его ип, передаем его ретрансляторам, ретрансляторы отправляют один icmp пакет, все возращает на мастер. (если делать паралельно, то время сильно не увеличит) делать редерикт на тот релай, с которого отклик меньше. и заносить ип в БД с хранением например месяц, чтоб при втором запросе делать уже запрос к БД а не повторять запросы от релеев. Минусы, icmp могут быть закрыты. (но можно использовать что то другое, кроме ICMP)

Вообще задачка очень интересная, было бы в наличии пяток ретрансляторов по всему миру, занялся бы smile

-------------------------------
R244390603111<- пиво лить сюда

9

Re: Geo IP, распределение нагрузки и redirect

пишет SergikS:

Есть данные профилирования? — сколько точно миллисекунд занимает отработка редиректа после определения гео-принадлежности ip посетителя Nginx'ом и сколько - Apache+PHP или Apache+Perl?
Где, например, живет база гео-ip у Nginx? Уж не обращается ли он каждый раз к другому серверу для разрешения?

nasmeshil, kaneshno bistree cherez nginx on ved na C napisan bistree vse delaet. a baza GeoIP - ta-zhe samaya chto i u php. prosto v konfige ukazivaesh put do nee.
tak nginx budet dergat toka GeoIP i perenapravlyat kuda nado. a esli kak ti hochesh to pridetsya serveru dergat php, potom s pomoshu php dergat bazu GeoIP, brat resultat i perenapravlyat. pri bolshom kol-ve zaprosov raznica ochen sushestvennaya. nginx быстрее определит айпи(php берет IP у сервера кстати). быстрее откроет\прочтет GeoIP базу, быстрее перенаправит.
скорее-всего даже nginx сделает все быстрее чем время длительности обращения к php.не говоря о том когда это сделает php.

Отредактировано MechanisM (13-07-2011 04:12:36)

10

Re: Geo IP, распределение нагрузки и redirect

Думаю, все проще: ссылки с сайта на m3u плейлисты, содержание которых и будет генериться php с учетом GeoIP и загруженности рилеев.

Радио P.S.: 24/7 музыка, новости мира покера, книги по стратегии игры и интервью с успешными игроками.
Технически: AirTime, LiquidSoap, IceCast2. Слушать: mp3 128 kbps, ogg 128 kbps

11

Re: Geo IP, распределение нагрузки и redirect

пишет SergikS:

Думаю, все проще: ссылки с сайта на m3u плейлисты, содержание которых и будет генериться php с учетом GeoIP и загруженности рилеев.

у одного из клиентов именно так и реализовал. тем-более что потом попросили iTunes чтобы они в каталоге станций делали ссыль на плейлист а не на поток сразу)

12

Re: Geo IP, распределение нагрузки и redirect

пишет MechanisM:

у одного из клиентов именно так и реализовал

«Дай списать?» часть которая с GeoIP дружит.

Радио P.S.: 24/7 музыка, новости мира покера, книги по стратегии игры и интервью с успешными игроками.
Технически: AirTime, LiquidSoap, IceCast2. Слушать: mp3 128 kbps, ogg 128 kbps

13

Re: Geo IP, распределение нагрузки и redirect

там все это nginx делает. если быть точнее то nginx + ngx_http_geoip_module + ngx_echo
имелось ввиду что такой-же принцип: выдает разный плейлист в зависимости от географического положения.
дергать из-за этого пыху - слишком накладно по времени и ресурсам да и никчему.

Отредактировано MechanisM (22-09-2011 01:15:25)

14

Re: Geo IP, распределение нагрузки и redirect

лучше всего это реализовать примерно так:
nginx.conf:

http {
        [.....]
        geoip_country  /path/to/GeoIP.dat;
        geoip_city     /path/to/GeoIPCity.dat;
        [.....]
}

например файл radio(который лежит в /etc/nginx/sites_enabled):

upstream EU {
    ip_hash;
        server http://какой-нить-айскаст-или-шауткаст-сервер-в-германии:айпи;
        server http://еще-один-айскаст-или-шауткаст-сервер-во-франции:айпи;
        server http://какой-нить-айскаст-сервер-в-европейской-части-россии:айпи/маунт;
        [.....]
        fair;
}
upstream NA {
    ip_hash;
        server http://какой-нить-айскаст-или-шауткаст-сервер-например-в-сша-или-канаде-итд:айпи;
        [.....]
        fair;
}
[.....]
server {
    listen  80;
    server_name  www.my-cool-radiostream.com;
    rewrite ^ http://my-cool-radiostream.com$request_uri? permanent; #301 redirect
}
server {
    listen  8000; #порт шауткаста или айскаста например или стандартный 80)
    server_name  my-cool-radiostream.com;
        root /home/radio/somepath;
        [.....]
    location / {
               proxy_pass $geoip_city_continent_code;
               [.....]
        }
# ну и сразу еще один из вариантов--------------------------------------------------------------------------------------------------
        location = /playlist.m3u {
                   alias /some/path/$geoip_city_continent_code.m3u;
        }
#--в данном случае выдается разный файл плейлиста из папки. тогда плейлисты должны называться например EU.m3u для Европы.
# абсолютно то-же самое можно сделать и для стран итд итп. ну и чем создавать кучу плейлистов для каждой страны можно просто линк сделать.


# еще один из вариантов с использованием модуля ngx_echo если у вас сервера по субдоменам
        location = /playlist.m3u {
                   echo  "http://$geoip_city_continent_code.someserver.com"; # напечатается первый элемент плейлиста пример: http://EU.someserver.com
        }
        [.....]
}

тут по континетам из GeoIP:

AS для Азии
EU для Европы
SA для Южной америки
AF для Африки
AN для Антарктики(мало-ли у вас есть сервера в антарктике)) или близлежащих Новой Зеландии, Аргентине итд)
OC для Океании
NA для Северной Америки

много еще что можно напридумывать да и не все способы написаны тут мною
уже нет времени дописывать. потом могу дополнить.
P.S. как показывает практика, nginx делает это быстрее чем например (утрируя) запускается php чтобы вообще что-либо сделать.

не забудьте поменять имена баз GeoIP ибо у меня используются полные базы а не лайт.

Отредактировано MechanisM (23-09-2011 21:55:57)

15

Re: Geo IP, распределение нагрузки и redirect

Добрый день. Не называйте некрофилом ) Просто эта тема единственное более менее толковое обсуждение которое гугл выдает.
Дайте пожалуйста информацию, как на сегодняшний день дела обстоят с распределением нагрузки между серверами icecast ?

Есть радио... мастер сервер в США, и 4 штуки релеев на разных континентах.
Слушать можно как через плеер с сайта, так и через линки, и через itunse, и через приложения для android и ios...

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


Вслучае с проксированием через nginx, в последнем посте конфиг которого описан. Если я правильно понял, то всеравно основная нагрузка ложится на мастер сервер ?? Тоесть когда клиент получается, его  nginx пперенаправляен та домен релея, но весь траффик то всеравно будет постоянно через nginx проходить ?

Отредактировано botogen (24-01-2014 15:05:41)