Subscribe on YouTube

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

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

Установка Lsyncd

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

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

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

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

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

Установка

Установка lsyncd

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

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

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" }
}

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

Запускаем сервис
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-мя серверами.

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,
}
Поделиться Комментарии