Настройка репликации с помощью lsync
Для репликации даных между серверам ине всегда есть смысл пользоваться функционалом NFS. Если Вам нужно что бы на нескольких серверах было одинаковое содержимое двух каталогов, тогда можно воспользоваться lsync.
Я рассмотрю репликацию файлов на примере папок DNS сервера Bind.
Нужно что бы первый/главный сервер мог соединяться со вторым/зависмым сервером без пароля. Для этого воспользуемся ключами для ssh:
ssh-keygen
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
Сам файл authorized_keys2
нужно скопировать на удаленные сервер и положить в папку /root/.ssh
.
Устанавливаем все нужное:
yum -y install lua lua-devel pkgconfig gcc asciidoc lsyncd
Ставим lsync
на автозагрузку:
chkconfig lsyncd on
Логи синхронизации буду расти не по дням а по часам, поэтому нужно их периодически архивировать. Для этого cоздадим файл /etc/logrotate.d/lsyncd
со следующим содержанием:
/var/log/lsyncd/*log {
rotate daily
missingok
notifempty
compress
sharedscripts
postrotate
if [ -f /var/lock/lsyncd ]; then
/sbin/service lsyncd restart > /dev/null 2>/dev/null || true
fi
endscript
}
Теперь редактируем файл конфигурации и настраиваем синхронизацию:
sync {
default.rsyncssh,
host="ip_второго_сервера",
source="/var/named/",
targetdir="/var/named/",
rsync = {
compress = true,
group = true,
owner = true,
rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
}
}
Если у Вас каталог обновляется динамично, тогда есть смысл синхронизироваться с определенной задержкой, что бы каждую секунду не дергать синхронизацию.
Для этого добавьте следующую строку в секцию sync:
statusInterval = 20
Так же можно включить дополнительные опции rsync.
После перезапуска демона lsyncd
проверьте содержимое каталога /var/named/
на втором сервере.