Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Способ так себе, проксирование под серьезной нагрузкой работать скорее не будет.
Потребуется отдельный баллансировщик, но он будет нужен в любом случае, когда вырастите за пределы доступного на кэше канала. А больше 60G вы даже через крутой сервер не прокачаете.Пропускать трафик через какую-то ноду — не единственный и не лучший способ менеджить трафик. Есть ещё энное количество способов способов.
Если вы решите поставить 2 одинаковых кэша, то они будут дублировать друг друга и места в кэше это не добавит.
(мы на своей системе определили оптимальный интервал — 3 часа. Т.е. считаем трафик, который создает файл за это время, имеем наименьшее количество перезаписи и наибольшее количество трафика с каждого гигабайта ssd. Но на разных системах это время разное и его надо подбирать)
Мы пробовали множество разных вариантов и я точно могу сказать, что ngx_http_proxy_module это не очень хорошее решение для больших объемов данных и трафика.
1. Кэшер, вместо того, чтобы отдавать только самые горячие данные, вынужден пропускать через себя и трафик остального CDN, что сильно снижает его производительность. Мы выжимали 20G при нескольких тысячах соединений с одного процессора E3-1270, с хорошим запасом. Вам понадобится минимум 2 таких процессора и при условии, что большой процент трафика попадает на файлы в кэше.
2. Вы тратите впустую канал от хранилища до кэша. Хранилище могло мы неактуальные файлы раздавать самостоятельно, вместо этого, сначала надо их передать на кэшер и потом оттуда в мир.
3. Если вы используете один сервер, то упираетесь в его максимально доступный канал и кладете весь CDN, если ляжет сервер.
4. Если вы используете несколько серверов…
5. Кэши долго прогреваться, потому что надо сперва собрать статистику по нагрузке на каждый файл
6. Из-за постоянных копирований в кэш и удаления оттуда файлов, быстро умрут SSD.
Я занимался построением CDN, которая в лучшие времена выдавала 250Гбит (летом несколько меньше выходит). С хороших кэшей выжимали 80G
Региональные имеют полный набор, центральные — делят контент. Никаких проблем с этим я не вижу.
Можно, конечно, апеллировать к опыту, но большие ошибки — большие и раскаяния, знаете ли.
Проблем, о которых Вы говорите, просто нет.
Для раздачи используют ту систему кэширования, что работает на серверах хранения, но в другой конфигурации. Базовым хранилищем являются SSD диски, а быстрым кэшем — оперативная память, на которую приходится больше половины генерируемого трафика.
if ($cache_zone = 0) { return 481; }
if ($cache_zone = 1) { return 482; }
...
if ($cache_zone = 9) { return 490; }
error_page 481 = @cache1;
error_page 482 = @cache2;
...
error_page 490 = @cache10;
if ($cache_zone = 0) { error_page 418 = @cache1; return 418; }
if ($cache_zone = 1) { error_page 418 = @cache2; return 418; }
...
if ($cache_zone = 9) { error_page 418 = @cache10; return 418; }
error_page 418 = @cache$cache_zone;
return 418;
Дисковая балансировка в Nginx