====== Пакет CSYNC2 ====== * [[https://habr.com/ru/post/120702/|csync2 или как облегчить работу с кластером]] * [[https://github.com/LINBIT/csync2/blob/master/doc/csync2.adoc|Cluster synchronization with Csync2]] ===== Установка ===== ==== Debian/Ubuntu ==== nodeN# apt install csync2 node1# csync2 -k /etc/csync2.key node1# scp /etc/csync2.key node2:/etc/ ===== Настройка ===== ==== Debian/Ubuntu==== nodeN# cat /etc/csync2.cfg nossl * *; group corpX { host node1.corpX.un node2.corpX.un; auto younger; key /etc/csync2.key; include /etc/bind/; action { pattern /etc/bind/*; exec "service bind9 restart"; do-local; logfile "/var/log/csync2_action.log"; } } * Удаляем различные на узлах файлы ключей утилиты rndc root@node1# ssh node2 rm /etc/bind/rndc.key еще лучше:) root@node1# ssn2 rm -r /etc/bind ===== Синхронизация ===== ==== Debian/Ubuntu==== Направление с узла, на котором были изменения nodeM# csync2 -xv ===== Отладка ===== ==== Переинициализировать базу данных после изменения csync2.cfg ==== nodeN# csync2 -Rvv ==== Do not auto-resolve conflict: Lost 'younger/older' test ==== node1# csync2 -M node2# rm ... В крайнем случае: # rm /var/lib/csync2/node1.corpX.un.db3 ===== Дополнительные материалы ===== 1. Установить 2. Сгенерировать ключи # openssl genrsa -out /usr/local/etc/csync2_ssl_key.pem 1024 # openssl req -new -key /usr/local/etc/csync2_ssl_key.pem -out /usr/local/etc/csync2_ssl_cert.csr # openssl x509 -req -days 600 -in /usr/local/etc/csync2_ssl_cert.csr -singkey /usr/local/etc/csync2_ssl_key.pem -out /usr/local/etc/csync2_ssl_cert.pem # csync2 -k /usr/local/etc/csync2.cluster.key 3. Скопировать на все узлы. Я копировала все 4 файла. 4. Создать конфиг /usr/local/etc/csync2.cfg: # Csync2 Example Configuration File # --------------------------------- # # Please read the documentation: # http://oss.linbit.com/csync2/paper.pdf group all { host gate1.corp9.un gate2.corp9.un; key /usr/local/etc/csync2.cluster.key; include /usr/local/etc/csync2.cfg; include /usr/local/etc/csync2.test; include /usr/local/etc/vip-up.sh; include /usr/local/etc/vip-down.sh; include /usr/local/etc/dhcpd.conf; include /usr/local/etc/dhcpd.general; include /usr/local/etc/smb.conf; include /usr/local/etc/apache22; include /usr/local/etc/ha.d; include /etc/resolv.conf; include /etc/pf.conf; include /etc/namedb; include /etc/crontab; # include %homedir%/bob; # exclude %homedir%/bob/temp; # exclude *~ .*; # action { pattern /usr/local/etc/apache22/httpd.conf; pattern /usr/local/etc/apache22/extra/*; exec "/usr/local/sbin/apachectl graceful"; logfile "/var/log/csync2_action.log"; do-local; } # action { pattern /etc/pf.conf; exec "/etc/rc.d/pf reload"; logfile "/var/log/csync2_action.log"; do-local; } action { pattern /usr/local/etc/dhcp.conf; pattern /usr/local/etc/dhcp.general; exec "/usr/local/etc/rc.d/isc-dhcpd restart"; logfile "/var/log/csync2_action.log"; do-local; } action { pattern /etc/namedb/*; exec "/etc/rc.d/named restart"; logfile "/var/log/csync2_action.log"; do-local; } action { pattern /usr/local/etc/smb.conf; exec "/usr/local/etc/rc.d/samba restart"; logfile "/var/log/csync2_action.log"; do-local; } # backup-directory /var/backups/csync2; # backup-generations 3; # auto younger; } # # prefix homedir # { # on host[12]: /export/users; # on *: /home; # } 5. В rc.conf добавить: csync2_enable=yes 6. Запустить # /usr/local/etc/rc.d/csync2 start 7. Запустить вручную синхронизацию: # csync2 -xv ПРИМЕЧАНИЕ! При параметре auto younger в конфигурационном файле, необходимо учитывать, что при синхронизации приоритет имеет более "молодой" файл. При запуске команды csync2 -xvv будут появляться ошибки. Сменить приоритет можно следующей командой: # csync2 -f /путь/имя_файла После запуска этой команды ошибки исчезнут и синхронизация пройдет успешно. Также надо учитывать, что при изменении хостов в конфигурационном файле, надо удалять файл базы данных csync2, находящийся здесь: /var/db/csync2/gate1.corp9.un.db. Возможно это можно сделать и другим путем... С уважением, Анна.