Static mirrorer Версия для печати

Позволяет балансировать нагрузку между хостами при раздаче статических файлов (jpg, gif, png, css, zip, rar...)

Скачать Static mirrorer.

#cat ReadMe.txt
Данный проект создавался для торрент трекера http://torrents.saratov-style.net, но может быть применён для похожих задач. На даный момент nginx умеет это делать из коробки. Но дело в том, что на большинстве зеркал стоял Windows с каким-либо готовым дистрибутивом Apache + MySQL + php (Denver, AppServ). Это было в 2010, когда в городе, почти повсеместно у домашних пользователей интернета был ADSL. Сервер трекера был подключен как раз к такой линии. ADSL линия имеет небольшую скорость на отдачу. И поэтому получалась такая ситуация, что вечером трекер ужасно тормозил в силу того, что весь исходящий канал занят. Что было сделано. Незначительно изменён движок форума так, чтобы все статические файлы скачивались с зеркал (см. example.php). На каждом зеркале размещён всего один php скрипт. Если запрашиваемого файла не существует на зеркале, то скрипт скачивает его с трекера и в случае удачи делает редирект сам на себя через отправку заголовка Location. Существовало несколько зеркал. У каждого зеркала разный канал на отдачу. У меня был хороший - Annex M (до 3.5 Мбит/с на отдачу). Поэтому было реализован небольшой таргетинг трафика ($mirror_cfg['ratio']). Причём некоторые из зеркал работали только вечером и под Windows (Apache, php). Поэтому был написал скрипт мониторинга зеркал (heartbeat.php), который работал в screen`е. Этот скрипт писал результаты работы в файл mirror_stat_serialize.txt. Данные из этого файла использовались каждый раз для выбора зеркала при формировании страницы трекера. Удачным решением было "спрятывание" реальных доменных имён зеркал через CNAME. Т.к. зеркала - это по сути домашние компьютеры пользователей с динамичким IP, то пользователи использовали службы dyndns. И в итоге доменные имена компьютеров были очень разнообразными и порой весёлыми и забавными. В итоге для в DNS для трекера были сделаны записи. Для моей это было примерно так: s1.saratov-style.net. CNAME sofree...
 
Pekлamкa