К примеру, дано два сервера. Нужно на них настроить реплику. И раздавать статику с этих серверов через nginx. При этом папку примонтировать и заливать файлы в нее с других серверов. Это можно сделать через lsyncd и ssh.

Пусть LEADER будет srv1, а srv2 — FOLLOWER.

srv1 — 192.168.1.51
srv2 — 192.168.1.52

Настройка SSH

Пропишите хосты в /etc/hosts на двух серверах:

_x000D_192.168.1.51 srv1_x000D_192.168.1.52 srv2

Пропишите конфиг /root/.ssh/config на двух серверах:

_x000D_Host *_x000D_	Protocol 2_x000D_	KeepAlive yes_x000D_	TCPKeepAlive yes_x000D_	ServerAliveInterval 5_x000D_	ServerAliveCountMax 17280_x000D_	Compression no_x000D_	#CompressionLevel 9_x000D_	#ForwardX11 yes_x000D_	UseRoaming no_x000D__x000D_Host srv1_x000D_	Hostname srv1_x000D_	User root_x000D_	Port 22_x000D_	_x000D_Host srv2_x000D_	Hostname srv2_x000D_	User root_x000D_	Port 22

Параметры:
ServerAliveInterval — Через какое время в секундах клиенты пытается подключиться к серверу после потери соединения
ServerAliveCountMax — Сколько раз клиент пытается подключиться
Компрессию нужно выключить, она грузит процессор

Сгенерируйте root ключи ssh на двух серверах:

_x000D_ssh-keygen

Пропишите теперь на двух серверах публичных ключи. Вообщем содержимое файлов /root/.ssh/id_rsa.pub с двух серверов надо скопировать в /root/.ssh/authorized_keys на оба сервера.

Проверьте подключение к серверам.

На первом сервере:

_x000D_ssh srv2

На втором сервере:

_x000D_ssh srv1

Подключение должно идти без пароля

Настройка lsyncd

Установите lsyncd на двух серверах:

_x000D_apt-get install rsync lsyncd

ВАЖНО! Нужно на втором сервере остановить lsyncd:

_x000D_systemctl stop lsyncd_x000D_systemctl disable lsyncd

Это необходимо, чтобы первый сервер был лидером, второй фоловером. Дело в том, что когда запускается lsyncd, то он сначала рсинкает файлы с локального на удаленный, а затем запускается сам. Т.е. если на втором запуститься lsync и там не будет каких то файлов, то он может удалить файлы с первой ноды. Чтобы это не происходило, нужно на втором сервере отключить lsyncd.

При старте lsyncd запускается такая команда: /usr/bin/rsync —delete —ignore-errors -gLpusoltSD —temp-dir=/data/tmp -r /data/files/ srv2:/data/files/
Она синхронизирут зеркально папку /data/files/ на с первого на второй сервер.

Создайте папки на обоих серверах:

_x000D_mkdir -p /etc/lsyncd_x000D_mkdir -p /data/files_x000D_mkdir -p /data/tmp_x000D_mkdir -p /var/log/lsyncd_x000D_

Папка /data/files будет синхронизироваться с srv1 на srv2

/data/tmp — Временная папка, туда будут загружаться файлы, а потом переносится в /data/files

На srv1 пропишите.

_x000D_settings{_x000D_ logfile = "/dev/null",_x000D_ statusFile = "/var/log/lsyncd/lsyncd.status",_x000D_ statusInterval = 10,_x000D_ nodaemon = false,_x000D_ maxDelays = 10,_x000D_ maxProcesses = 1,_x000D_}_x000D__x000D_sync {_x000D_ default.rsyncssh,_x000D_ source = "/data/files",_x000D_ host = "srv2",_x000D_ targetdir = "/data/files",_x000D_ rsync = {_x000D_ archive = true,_x000D_ owner = true,_x000D_ copy_links = true,_x000D_ compress = false,_x000D_ sparse = true,_x000D_ temp_dir = "/data/tmp",_x000D_ update = true,_x000D_ }_x000D_}

На srv2 пропишите такой же конфиг, только поменяйте host на srv1.

Значение maxProcesses установите <кол-во процессоров — 1>

Запустите команду и проверьте правильно ли все настроено

_x000D_lsyncd -nodaemon /etc/lsyncd/lsyncd.conf.lua

Если все норм, ребутните lsyncd на srv1

_x000D_systemctl restart lsyncd

После этого синхронизация будет запущена

Подключение клиента

Установить sshfs:

_x000D_apt install sshfs

Важно. Нужно также сгенерировать ssh ключ клиента и прописать его в /root/.ssh/authorized_keys на обоих серверах.

Проверьте подключение по ssh с клиента:

_x000D_ssh srv1

Подключить клиента можно через sftp:

_x000D_sshfs -o reconnect,ServerAliveInterval=5,ServerAliveCountMax=17280 srv1:/data/files /media/files

Либо пропишите в fstab на клиенте:

_x000D_sshfs#srv1:/data/files /media/files fuse defaults,allow_other,reconnect,ServerAliveInterval=5,ServerAliveCountMax=17280 0 0

Важно

При падения сервера лидера, все смонтированные папки к нему зависают, и перестают отвечать. Это может привести зависанию приложений, которые работают с примонтированной папкой. При текущих настройках, соединение с сервером будет пытаться восстановить подключение в течении 24х часов (17280 x 5 сек).