Отказоустойчивость:
Синхронизация файлов#
Данная статья описывает настройку lsyncd
для синхронизации файлов между основным и резервным серверами.
На основном сервере необходимо создать пользователя, который будет отправлять файлы на резервный сервер.
Создайте группу для пользователя
rider
:Создайте пользователя
rider
:Задайте произвольный пароль для пользователя
rider
, сохраните его:На резервном сервере также требуется создать пользователя, который будет отправлять файлы на основной сервер.
Создайте группу для пользователя
rider
:Создайте пользователя
rider
:Задайте произвольный пароль для пользователя
rider
, сохраните его:На основном сервере необходимо настроить доступ пользователя к резервному серверу.
На основном сервере выполните команду от лица пользователя
rider
:Следующей командой сгенерируйте ключ доступа, оставив passphrase пустым:
Скопируйте публичный ключ с основного сервера на резервный (потребуется пароль, созданный с помощью команды
passwd rider
на резервном сервере).
Для этого выполните на основном сервере:На резервном сервере также требуется настроить доступ пользователя к основному серверу:
На резервном сервере выполните команду от лица пользователя
rider
:Следующей командой сгенерируйте ключ доступа, оставив passphrase пустым:
Скопируйте публичный ключ с резервного сервера на основной (потребуется пароль, созданный с помощью команды
passwd rider
на основном сервере).
Для этого на резервном сервере выполните:Затем на основном и резервном серверах следует выйти из-под пользователя
rider
:После этого на основном и резервном серверах установите приложение
lsyncd
, которое следит за появлением новых файлов и отправляет их на другой сервер.На обоих серверах выполните команды для установки lsyncd:
В некоторых дистрибутивах
lsyncd
автоматически запускается сразу после установки — на обоих серверах остановите его следующей командой:Теперь требуется настроить
lsyncd
:На обоих серверах создайте директорию, в которой будут располагаться логи
lsyncd
:На обоих серверах создайте директорию, куда будут добавляться временные файлы при копировании на сервер:
На обоих серверах создайте директорию, в которой будет располагаться конфигурация
lsyncd
:На обоих серверах создайте файл конфигурации:
Предупреждение
Для дальнейшей настройки понадобится файл
configs/global.yaml
, который был создан ранее в разделе «Конфигурация портов и доменов приложения»Получите значение поля
root_mount_path
вашего приложения — оно понадобится для заполнения конфигурационного файла дляlsyncd
:В шаблон ниже подставьте свои значения, затем добавьте содержимое в конфигурационный файл
/etc/lsyncd/lsyncd.conf.lua
с помощью любого текстового редактора, и сохраните изменения:Примечание
Обратите внимание, что при настройке на основном сервере в конфигурационном файле необходимо указывать IP-адрес резервного сервера.
И наоборот: если конфигурация настраивается на резервном — в конфигурационном файле необходимо указать IP-адрес основного сервера.
Для поляtargetdir
укажите директории сервера, на который отправляются файлы.Действия выше также необходимо выполнить на резервном сервере.
Для того чтобы
rider
сохранял файлы с тем же владельцем и группой — выполните на обоих серверах следующие действия:Откройте файл для настройки:
Добавьте строку в файл и сохраните изменения:
Для синхронизации большого количества файлов необходимо увеличить лимит наблюдения за ядром
inotify
.Для этого на обоих серверах нужно создать файл настройки ядра
/etc/sysctl.d/10-max_user_watches.conf
:Добавьте строку в файл и сохраните изменения:
На обоих серверах примените новую настройку:
Настройте ротацию логов для
lsyncd
на основном и резервном серверах.Установите
logrotate
, если ранее ещё не был установлен:Создайте конфигурационный файл для ротации логов
lsyncd
:Откройте
/etc/logrotate.d/lsyncd
любым удобным текстовым редактором и добавьте в него следующее содержимое:Запустите
logrotate
:Запустите
lsyncd
на основном сервере:Внимание
lsyncd рекомендуется запускать только на текущем активном сервере, чтобы избежать рассинхронизации в обмене файлами.
Проверьте, что всё настроено успешно. Проверьте статус
lsyncd
на наличие ошибок:Проверьте логи
lsyncd
на наличие ошибок:Для проверки работы синхронизации на основном сервере создайте файл в папке, куда установлено приложение
<значение поля root_mount_path>/files/
:И проверьте на резервном сервере, что созданный файл появился в той же папке:
Примечание