Не делайте chroot вручную. Это твердо и могло привести к дырам в системе безопасности.
Jailkit является набором инструментов, разработанным для этой точной цели, для заключения в тюрьму пользователя. Очень легкий установить.
Вы можете использовать инструменты rsync или unison, но вы не получите синхронизацию в реальном времени. Должна быть некоторая задержка, пока новые / обновленные файлы не будут синхронизированы, даже если вы запускаете такой инструмент каждую минуту. Вы можете реализовать это, если считаете приемлемым иметь небольшую задержку.
Если вы хотите синхронизировать изменения в реальном времени, вам нужно использовать такой инструмент, как NFS / glusterfs или DRBD. Главный недостаток таких инструментов - увеличенные накладные расходы ввода-вывода из-за сетевой задержки. Это становится яснее, когда общая папка становится огромной и сетевая задержка становится больше.
Эта асимметричная архитектура удваивает вероятность отказа службы - и это не очень хорошо для производительности.
Я использую rsync (как объяснялось выше).
Я не видел объяснения того, как вы используете rsync.
Чтобы синхронизировать код приложения
Развертывание кода приложения должно быть управляемым процессом . Как вы управляете репликацией контента, загруженного через веб-сервер / созданного веб-сервером, - это совсем другая история. Если вам нужно выполнить двунаправленную репликацию кода приложения, значит, вы делаете это неправильно.
Ваша проблема связана с развертыванием. Если бы узлы были функционально симметричными с репликацией, происходящей для memcache и mysql, то вывести один узел в автономный режим (даже если это просто означает подкачку в конфигурации nginx для прокси / перенаправления всех запросов на другой узел) для развертывания - не проблема. В результате у вас нулевое время простоя для развертывания кода, нулевое время простоя для резервного копирования базы данных, нулевое время простоя для обслуживания базы данных, нулевое время простоя для изменения схемы.