====== Пакет 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
group dns
{
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.
Возможно это можно сделать и другим путем...
С уважением,
Анна.