Как реплицировать / var / www / html / между двумя отдельными машинами, на которых есть отдельное хранилище на жестком диске, на котором работают веб-серверы Apache. Я планировал настроить балансировку нагрузки между этими двумя серверами Apache и настроил Nginx в качестве внешнего интерфейса для этих двух серверов Apache, файлы должны синхронизироваться с сервера 1 на сервер 2 и наоборот.
Управление кодом и контентом, их продвижение и развертывание на всех серверах - гораздо лучшее решение для настройки двусторонней синхронизации. Рассмотрите возможность развертывания ресурсов сервера на всех серверах в пуле вместо обновления на одном сервере, рассчитывая на синхронизацию / репликацию или управляя файловой системой общего доступа.
Это позволяет вам управлять своим контентом / кодом отдельно, чтобы вы могли просматривать / управлять / откатывать изменения. Незначительное редактирование или удаление вам не повредит.
Это также позволит вам развернуть дополнительные узлы и помочь с развертыванием с помощью повторяемого процесса.
Самая простая итерация состоит в том, чтобы ваши веб-серверы периодически выполняли git pull
конкретной ветки вашего репо.
При этом сделайте git pull
в промежуточное расположение и rsync в каталог httphome. Это позволит вам исключить такие вещи, как репо .git
каталог и файлы README.
Например:
rsync -art --delete --delete-excluded --exclude='.git/' --exclude='README*' #{repo_path}/ #{site_path}
Что касается использования NGINX для работы с Apache, ЗАЧЕМ? Что вы надеетесь получить от этого? Оба они являются веб-серверами, которые могут выполнять обратный прокси-сервер и запускать приложения. Если у вас нет действительно веской причины, выберите веб-сервер и позвольте балансировщику нагрузки сбалансировать нагрузку.
На ум приходит несколько вариантов / решений:
NFS:
Сетевая файловая система (NFS) - это протокол распределенной файловой системы, первоначально разработанный Sun Microsystems в 1984 году [1], позволяющий пользователю на клиентском компьютере получать доступ к файлам через компьютерную сеть, подобно доступу к локальному хранилищу.
DRBD или распределенное реплицированное блочное устройство:
Программное обеспечение DRBD® - это распределенная реплицированная система хранения для платформы Linux. Он реализован в виде нескольких приложений управления пользовательским пространством и некоторых сценариев оболочки и обычно используется на компьютерных кластерах высокой доступности (HA).
Csync2 - это инструмент синхронизации кластера. Его можно использовать для синхронизации файлов на нескольких хостах в кластере. Csync2 может обрабатывать сложные настройки с гораздо более чем двумя хостами, обрабатывать удаление файлов и обнаруживать конфликты.
Доступны и другие варианты, просто возьмите это как отправную точку.