У меня есть 2 веб-сервера с возможностью добавления дополнительных серверов. Сейчас я синхронизирую эти серверы, используя lsyncd + csync2. Он хорошо работает с точки зрения производительности, поскольку все файлы находятся на обоих серверах (для локального открытия файлов не требуется сетевой доступ), но в других случаях это не так хорошо.
Одним из примеров этого является удаление файла на сервере 1 и немедленная загрузка нового файла на сервер 1 с тем же именем. Затем этот файл затем будет удален с сервера 2, что приведет к удалению вновь загруженного файла на сервере 1, поскольку сервер 2 отправляет событие удаления на сервер 1, чтобы завершить «цикл обновления».
Я не могу не думать, что должен быть лучший способ синхронизации серверов. Я смотрю на GlusterFS и вижу, что установка, в которой все файлы реплицируются на все серверы, не рекомендуется. Однако на этих серверах я использую системы CMS, такие как Drupal. Такие системы CMS часто открывают довольно много файлов, и я беспокоюсь, что слишком большой сетевой трафик, чтобы получить эти файлы, замедлит запросы.
Будет ли идея рассмотреть замену lsyncd + csync2 на GlusterFS, настроенную для репликации всех файлов на все узлы, или это плохая идея?
источник
Ответы:
BitTorrent Sync может сделать дело за вас. Я использую его для синхронизации файлов между несколькими внутренними серверами в моем доме, и он прекрасно справляется со своей задачей. Еще одна вещь, о которой вам нужно подумать, это база данных, когда ваше приложение использует CMS. Убедитесь, что идет репликация MySQL или что-то в этом роде.
источник
Gluster решит вашу проблему, потому что он может удерживать блокировки, распространять изменения - удалять файл на всех других узлах, но он может добавить дополнительную задержку, которая может стать проблемой для веб-сервера. Следующая альтернатива - DRBD + OCFS2 или GFS, но, вероятно, она более сложная, так как в случае с кластером, который используется базовой файловой системой - он не работает на уровне блоков, поэтому, если серверы не синхронизированы, это не так сложно исправить, файлы могут так легко повредить из-за расщепления мозгов и т. д.
Мы используем его для почтового сервера, и он довольно медленный для каталогов с большим количеством файлов. Вы должны обязательно проверить все перед развертыванием. В настоящее время я тестирую монтирование NFS, потому что оно лучше работает с небольшими файлами.
источник
GlusterFS сложно развернуть. Для веб-данных уровень синхронизации файлов, такой как Unison , намного проще в развертывании и обслуживании.
DRBD является идеальным решением для синхронизации данных на уровне блоков. Но вы должны отформатировать их в специальный формат, такой как OCFS2 или что-то подобное.
источник
Почему бы вам не использовать такой инструмент, как кукольный ? Напишите один раз в источнике, а когда будете готовы, разверните его по целям, используя «puppet kick» или mcolletive. Это хорошо задокументировано. И вы можете легко добавить серверы позже, если это необходимо.
Вы также можете положиться на инструменты, использующие inotify, такие как lsyncd, работающие на уровне ядра. Он следит за изменениями в папке и запускает синхронизацию. Но если инструмента, предназначенного для синхронизации файлов в кластере, такого как csync2, недостаточно, я не знаю, что будет.
Просто чтобы быть уверенным, изменения происходят также на сервере 2 или только на сервере 1?
источник