
У меня есть вопрос по передовой практике. У нас есть приложение, работающее на двух серверах за балансировщиком нагрузки. Большая часть данных находится в общей БД, загруженные пользователем файлы находятся в объектном хранилище. Так что синхронизировать особо нечего, за исключением некоторых файлов конфигурации YAML, которые генерируются пользователем через бэкэнд приложения.
Какова лучшая практика для синхронизации этих файлов? Одно из решений, которое я придумал, — это смонтировать общий том для размещения файлов кода и конфигурации. Есть ли лучшее решение?
решение1
Предположение, что есть только одна "лучшая практика" - это ловушка. Всегда есть больше одного решения.
Хранение содержимого файлов конфигурации в базе данных — один из вариантов. Blob-объекты, управляемые каким-либо приложением, возможно, записанные на диск, если это то, что считывает что-то другое. Или изменить приложение для использования дискретных полей данных в БД, а не документов YAML. Использует преимущества существующей центральной базы данных, но требует, чтобы эта БД была сначала доступна.
Сохраните файлы конфигурации в программном пакете или образе, содержащем приложение. Разверните новые, обновив приложение. Имеет смысл только в том случае, если эти файлы изменяются теми же людьми или процессом обновления приложения.
Копируйте файлы из авторитетной копии в каждый экземпляр по расписанию или при изменении. Выберите программное обеспечение для копирования файлов, rsync, sftp. Потребуется дополнительный скриптинг, если установка должна быть транзакционной, то есть все файлы устанавливаются или ни один из них.
Смонтируйте сетевой файловый ресурс. Помните, что если NFS или SMB-ресурсы будут отключены незапланированным образом, это может вызвать проблемы с производительностью.