Установка и настройка сервиса lsyncd

Установка и настройка сервиса lsyncd

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

Lsyncd - сервис, который следит за изменениями в локальной директории, агрегирует их, и по прошествии определенного времени или по изменении файла, стартует rsync для их синхронизации.

Установка Lsyncd

Поскольку сервис работает через rsync, то подключение между серверами будем осуществлять по RSA ключам.

Генерируем ключи

Генерируем ключи на обоих серверах и переносим друг на друга.

1
2
ssh-keygen -t rsa (passphrase не указываем)
scp /root/.ssh/id_rsa.pub root@10.2.0.2:/root/.ssh/authorized_keys2

Аналогичную процедуру производим на втором сервере, заменяя адрес первого сервера.

Установка

Установка lsyncd

1
2
yum install lsyncd lua lua-devel pkgconfig gcc asciidoc
chkconfig lsyncd on
Конфигурация

Конфигурационный файл на языке Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd-status.log",
statusInterval = 20
}

sync {
default.rsync,
source = "/source_sync_dir/",
target = "192.168.2.2:/target_sync_dir/",
exclude = {"*.tmp", "*.log", "*.cache" },
delete=true,
rsync = {
compress = true,
acls = true,
verbose = true,
owner = true,
group = true,
rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no" }
}

Конфиг проще сделать один раз и дальше разнести на все ноды, закоментировав лишний для каждого конкретного сервера блок.

Запускаем сервис
1
service lsyncd start

P.S. Рекомендую отключить SElinux.

Настройка ядра

Поскольку Lsyncd работает в связке с Inotify, необходимо изменить параметры ядра, чтобы устранить проблемы в будущем.

У inotify есть три параметра (см. ls /proc/sys/fs/inotify/):

max_queued_events — максимальное число событий в очереди; default = 16384;
max_user_instances — сколько инстансов inotify может запустить один пользователь; default = 128;
max_user_watches — сколько файлов может отслеживать один пользователь; default = 8192.

Копирование отдельных файлов

Для копирования отдельных файлов между серверам используем параметр _extra = .

Конфигурационный файл для копирования файла /etc/hosts между 3-мя серверами.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd-status.log",
statusInterval = 20,
insist = true
}

sync {
default.rsync,
source="/etc/",
target="10.0.2.100:/etc/",
rsync = {
archive = true,
compress = true,
whole_file = false,
_extra = { "--include=hosts", "--exclude=*" },
verbose = true
},
log=all,
}

sync {
default.rsync,
source="/etc/",
target="10.0.2.200:/etc/",
rsync = {
archive = true,
compress = true,
whole_file = false,
_extra = { "--include=hosts", "--exclude=*" },
verbose = true
},
log=all,
}