Хочу организовать сайт на двух серверах, логическом и статическом (сам сайт, и файловое хранилище, максимально дешевое и обьемное), по скольку хранить на обычном сервере 100+гб статики сильно дорого
_____________
Может кто занимался подобными решениями, какие ни будь рекомендации даст.
сейчас заливает скриптом по фтп с основного сервера на сервер-донор, отдает по простейшему апи генерируя урл на основе имени файла и ип.
donor.site.ru/filedfgdf-dfЕgd5fgd7fg--tцyrfgВАdfg типа того
донор только чекает урл и отдает файл (X-Accel-Redirect), не общается с бд и т.д.
из недостатков, невозможно по урлу определить тип файла (mp3\mp4)
может мемкеш использовать для хранения таблицы файлов и данных о них? или файлы и разбить их на подпапки что бы по 10к записей не хранилось в одном файле?
в общем буду рад любым советам, не факт что воспользуюсь всеми, но дело для меня новое, чужой опыт будет не лишним
ну о том как хранить файлы я думаю ты и сам догадаешься, это не вопрос вида "Горизонтальное масштабирование", а о том как передавать файлы между серверами - естественно какое нить API с инфой о файле вида: имя, размер, mimeType. Приду с тренажерки, напишу подробнее
Вот пересылка файлов это по моему слабое место, т.к. 100мб даже по фтп не сказать что быстро идут, боюсь скрипт может встать до окончания заливки..
ramzes, сам web сервер не должен пересылать файлы, он должен запустить задачу загрузки файла передав второму серверу ссылку на файл и пойти дальше делать свою работу
# Delphinum (11.11.2016 / 13:56)
ramzes, сам web сервер не должен пересылать файлы, он должен запустить задачу загрузки файла передав второму серверу ссылку на файл и пойти дальше делать свою работу
получится неконтролируемая закачка, а мне надо сразу после добавления того же мп3 сразу воспроизвести его
_______
ну ладно, допустим что логику этой части я смогу изменить, в чем выгода? поставить на донор анлим время выполнения скрипта?
ramzes, нет, ты естественно все новые файлы должен качать на основной сайт, как бы в кеш их, а из кеша они должны падать на резервную ноду по какому нить таймингу. При чем тайминг должен быть меньше чем время отчистки кеша, чтоб файлы не терлись с кеша до переноса их на второй сервер. Логику я вижу примерно такую:
1. Пришел файл на основной сайт, он записался в каталог
2. Основной сайт отправил резервному сайту сообщение, что пришел такой то файл, лежит он там то и его нужно скачать к себе
3. Через n времени резервный сайт проходит по всем полученным сообщениям от основного сайта и скачивает себе файлы
3.1. После скачивания файла резервный сайт может оповестить основной, что файл скачан для изменения адреса файла на основном сервере с локального на резервный
4. С основного сайта файлы удаляются через n+m времени
5. В базе основного сайта хранятся ссылки на файлы резервного сайта
таким образом получив файлы он сразу тебе доступен, просто через какое то время он автоматом уедет на резервный сайт освободив тебе место на основном.
Правильнее будет даже сказать, что на основном сайте у тебя не кеш, а буфер.
а пых на обоих есть? или на хранилище только фтп?
Koenig, на самом деле это не важно, сервер резервного копирования (как он обычно называется) может быть размещен и на той же машине, на которой крутится веб сервер, главное чтоб это был отдельный процесс, а не скрипт, обрабатывающий веб-клиентов. Можно его даже на каком нить питоне или сишке написать, там вроде есть готовые решения для этого
3. Через n времени резервный сайт проходит по всем полученным сообщениям от основного сайта и скачивает себе файлы
этого я хочу избежать. полностью разгрузив основной сайт от тяжеловестных файлов. они будут отдаваться с донора (см например отдачу в контакте)
ни какого кеширования, и перетаскивания файлов с сервера на сервер. я честно не вижу в этом смысла, т.к. донор будет выбираться с минимальной скоростью подключения, а отдача будет идти за счет нигса, скрипт не будет потреблять время ожидания, кроме как на валидацию урла и поиск файла.
просто через какое то время он автоматом уедет на резервный сайт освободив тебе место на основном.
тогда проще просто не удалять с основного сайта сразу файл, а оставить его на час, и удалить потом кроном, разве нет?
а пых на обоих есть? или на хранилище только фтп?
есть. донора еще нет, конфигурация будет выбираться исходя из потребностей, т.е. реализации этой части.