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