lsyncd
Lsyncd - демон на Lua, позволяющий синхронизировать между собой каталоги между несколькими серверами по событиям изменения содержимого файловой системы.
Установка
apt instal lsyncd
Папки
mkdir -p /etc/lsyncd && mkdir -p /var/log/lsyncd && mkdir -p /etc/lsyncd/conf.d/
Конфиг
vi /etc/lsyncd/lsyncd.conf.lua
Для синка в обе стороны, обязательный параметр "temp_dir"
ssh - указывать не обязательно, если настройки стандартны
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd_status.log",
statusInterval = 20,
nodaemon = false
}
sync {
default.rsyncssh,
source="/path/to/dir",
host="new_server",
targetdir="/path/to/dir/new_server",
excludeFrom="/etc/lsyncd/linux_notes.exclude",
delay=10,
delete = true,
rsync = {
archive = true,
compress = false,
whole_file = false,
sparse = true,
update = true,
temp_dir="/tmp/",
links = true,
times = true,
protect_args = false,
acls = true,
verbose = true
},
ssh = {
port = 22,
_extra = {"/usr/bin/ssh -l user -p 22 -i /home/user/.ssh/id_rsa -o StrictHostKeyChecking=no"}
}
}
Синк одного файла
sync {
default.rsyncssh,
source="/etc/security",
host="new_server",
targetdir="/etc/security",
delay=10,
delete=false,
rsync = {
archive = true,
compress = false,
whole_file = false,
sparse = true,
update = true,
temp_dir="/tmp/",
links = true,
times = true,
protect_args = false,
acls = true,
verbose = true,
_extra = {
"--include=limits.conf",
"--exclude=*"
}
},
ssh = {
port = 22
}
}
Исключения
vi /etc/lsyncd/linux_notes.exclude
.git/*
.*
Настройки ядра
У inotify есть три параметра (см. ls /proc/sys/fs/inotify/):
max_queued_events — максимальное число событий в очереди; default = 16384;
max_user_instances — сколько инстансов inotify может запустить один пользоваетль; default = 128;
max_user_watches — сколько файлов может отслеживать один пользоваль; default = 8192.
echo "
fs.inotify.max_user_watches = 16777216
fs.inotify.max_queued_events = 65536
" >> /etc/sysctl.conf
sysctl -p
echo 16777216 > /proc/sys/fs/inotify/max_user_watches
echo 65536 > /proc/sys/fs/inotify/max_queued_events
Example
Синк на несколько серверов
settings = {
delay = 1,
maxProcesses = 3,
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.stat",
}
targetlist = {
"1.0.0.2:/var/www/html",
"1.0.0.3:/var/www/html"
}
for _, server in ipairs(targetlist) do
sync{ default.rsync,
source="/var/www/html",
rsyncOps="-rltvupgo"
target=server
}
end
Отдельный файл для каждого sync
local confdir = '/etc/lsyncd/conf.d/'
local entries = readdir( confdir )
for name, isdir in pairs( entries ) do
if not isdir then
dofile( confdir .. name )
end
end
https://github.com/axkibe/lsyncd/issues/441#issuecomment-293287126
Start/stop
systemctl restart lsyncd
systemctl enable lsyncd
Errors
ssh_exchange_identification: read: Connection reset by peer
при большом количестве файлов для синхронизации, правим в файле /etc/ssh/sshd_config на сервере приемнике правим:
MaxSessions 100
MaxStartups 100:30:1000
MaxSessions Задает максимальное количество открытых сеансов, разрешенных для одного сетевого подключения. По умолчанию 10.
MaxStartups. Запись параметра имеет форму "start:rate:full". В нашем случае она означает отключение с вероятностью 30% при наличии 100 неаутентифицированных связей, с линейным ростом вероятности до 100% при достижении 1000.
Last updated