Настройка репликации с помощью lsync

1 minute read

Для репликации даных между серверам ине всегда есть смысл пользоваться функционалом 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/ на втором сервере.