Csync2: Простейшая, зеркальная синхронизация файлов\папок

  • Linux
Задача: Синхронизировать изменения файла dhcpd-static.conf на двух шлюзах gw06 и gw07.

Установка csync2.


apt install csync2
Csync2 для работы использует порт 30865, проверьте что он открыт на всех машинах в кластере.
Так же нужно иметь ввиду что имена в hostname и hosts должны совпадать.

Для общения нод в кластере создаем сертификаты.
На каждой машине:
!Common Name обязательно оставляем пустым.

openssl genrsa -out /etc/csync2_ssl_key.pem 2048
openssl req -new -key /etc/csync2_ssl_key.pem -out /etc/csync2_ssl_cert.csr
openssl x509 -req -days 600 -in /etc/csync2_ssl_cert.csr -signkey /etc/csync2_ssl_key.pem -out /etc/csync2_ssl_cert.pem
Следующий ключик создаем на какой-нибудь одной машине и раскидываем на каждую ноду (в /etc/csync2.cluster.key):

csync2 -k /etc/csync2.cluster.key

Настройка.

Конфиг который должен быть так же на каждой ноде (в /etc/csync2.cfg):


group cluster {
    host gw06 at 172.27.19.254;
    host gw07;

    key /etc/csync2.cluster.key;

    auto younger;

    include /etc/dhcp/dhcpd-static.conf;
    include /etc/logrotate.d/csync2;
    include /etc/csync2.cfg;

    action {
        pattern /etc/dhcp/dhcpd-static.conf;
        exec "/etc/init.d/isc-dhcp-server restart";
        logfile /var/log/csync2/csync2.log;
        do-local;
    }
Каталог для логов:

mkdir /var/log/csync2
Конфиг logrotate (/etc/logrotate.d/csync2):

/var/log/csync2/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
}

Выполнение.


csync2 -x
Остается только настроить выполнение csync2 по крону.

Если не работает — Debug.


csync2 -xvvvv
Документация и полезные ссылки:
https://github.com/LINBIT/csync2/
https://gist.github.com/scottsb/cc4a10b57314f63febe2