Мгновенная сихнхронизация файлов между 2мя серверами?

Всем хорошего дня, беда у меня такая


есть сервер мощный аж огонь но с узким инет каналом.

есть второй сервер с процессором уровня п4 но с широким каналом инета.


на первом сервере есть сайт где основной контент это картинки, и посещаемость такая, что весь его канал запит в усмерть

второй сервер балду пинает.


создал поддомен i.site.ru ссылающийся на второй сервер.

на первом придумал как на уровне nginx переадресовать запросы с site.ru/images/* на i.site.ru/*


теперь встаёт вопрос, как между 2мя серверами содержать актуальные данные а именно один каталог images


на site.ru по крону срабатывает задача которая пополняет каталог с картинками, как лучше поступить, чтоб в этоже время все новые картинки появлялись на втором сервере


1 мысля была прокинуть NFS Между серверами, файлы будут появлятсья мгновенно, но их будет двойная работа (1 при обращении к файлу на втором сервере второй сервер будет делать запрос к первому, хотелось бы избежать постоянно такого обмена)

2 синхронизация по rsync но тут тоже вопрос возникает сайт принял обновления, получил новые картинки, и потом по рсунк началась синхронизация со вторым сервером, файлов больше 100 000 через пол года будет больше 1млн, и синхронизация этих каталогов даже через рсунк будет довольно продолжительна и затратна

в итоге иногда пользователи будут видеть свежие посты, а картинки не будут успевать подтягиваться


у дропбокса места не хватит :(


как поступить? как содержать актуальные данные сразу на 2х сервераъх


Хочется чтоб сразу было ах, файлы хранились сразу на 2х серверах с мгновенной синхронизацией
  • Вопрос задан
  • 7108 просмотров
Пригласить эксперта
Ответы на вопрос 6
Wott
@Wott
правильнее было бы сразу выдавать адреса картинок на i.site.ru
Ответ написан
@TeiSinTai
А почему бы на втором сервере в nginx (а там же тоже nginx, да?) не поставить проксирование с сохранением локально, и первый сервер в качестве источника? Хотя, возникает вопрос — картинки только появляются новые, или могут измениться старые?
Ответ написан
@Spamkit
Коварно подсказываю: https://code.google.com/p/lsyncd/. Принцип работы: отслеживаем изменения используя функции ядра. При нахождении изменений синхронизируем.

С уважением,

С.
Ответ написан
Комментировать
la0
@la0
Посмотрите в сторону csync2 (не небольших объёмах) и glusterfs на больших.
Ответ написан
@kavich
как вариант.
1.все картинки правим на сайте site.ru и отдаем в доступ по site.ru/images/
2. на i.site.ru — сделать nginx прокси на первый сайт. Поставить большой размер кеша (подумать о ключе кеша) и больше время кэша. Проксировать первый сайт site.ru
3. На site.ru/images/ — сделать пересылку для все айпишников кроме i.site.ru
4. Переделать механизм адресации картинок. Хоть preg_replace (ob_start), хоть ngx_http_sub_module
То есть все картинки отдаются хранятся на старом сайте, публично доступны с нового, а новый просто является прокси на старый.
Таким образом синхронизироваться будет «само». Картинки будут обновляться по мере протухания кэша. Надо заботится о сохранности контента только на одном сервере. Ну и экономия трафика. С чем то более сложным не стоит морочиться, меньше чем через год у вас будет еще несколько серваков.
Ответ написан
Комментировать
jetman
@jetman
У себя используем самописный демон на NodeJS и fs.watchFile. Файлов в сумме 100К и проблем с производительностью пока нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы