csync2 Clustersynchronisation
csync2 ist ein Synchronisationstool, das durch Linbit entwickelt und als freie Software zur Verfügung gestellt wird. Im Gegensatz zu anderen gleichartigen Tools ist es mit csync2 möglich eine beliebige Anzahl von Hosts synchron zu halten. Zudem werden Konflikte erkannt und auch mit Löschungen kommt csync2 problemlos zurecht. Das folgende Beispiel bezieht sich auf ein Ubuntu- System. Das "Übersetzen" für andere Linux- Derivate sollte problemlos möglich sein. Nach der Installation mittels# apt-get install csync2
wurde bereits ein Eintrag
csync2 stream tcp nowait root /usr/sbin/csync2 csync2 -i
zu /etc/inetd.conf hinzugefügt. Auch /etc/services wurde um
csync2 30865/tcp # cluster synchronization tool
erweitert. Weiter geht er mit dem Erzeugen der SSH- Schlüssel auf allen beteiligten Nodes- im Beispiel die beiden Nodes host-1 und host-2.
# openssl genrsa -out /etc/csync2_ssl_key.pem 1024
# openssl req -new -key /etc/csync2_ssl_key.pem -out /etc/csync2_ssl_cert.csr
# openssl x509 -req -days 3650 -in /etc/csync2_ssl_cert.csr \
-signkey /etc/csync2_ssl_key.pem -out /etc/csync2_ssl_cert.pem
!!!ACHTUNG!!! Beim Erzeugen des CSR das Feld Common Name (CN) leer lassen!!! Danke an Jorge Matias für den Tipp! http://lists.linbit.com/pipermail/csync2/2008-June/000416.html
Ein gefüllter CN kann der Grund für die Fehlermeldung Establishing SSL connection failed. sein
Beispiel:
group cfgtest {
host host-1;
host host-2;
key /etc/csync2.key;
include /etc/default;
action {
pattern /etc/default/useradd;
exec "/bin/date";
logfile "/var/log/csync2-action.log";
do-local;
}
backup-directory /var/backups/csync2;
backup-generations 3;
auto younger;
}
Eine detaillierte Erklärung aller möglichen und verwendeten Parameter ist in der Dokumentation zu finden. Nachdem die Konfigurationsdatei und der Key (csync2.key) auf alle anderen Nodes kopiert wurde, muss nur noch das Backupverzeichnis manuell angelegt werden (/var/backups/csync2 im Beispiel). Ein Test mit:
# csync2 -xv
sollte nun fehlerfrei durchlaufen.
Automatisches Ausführen:
Unter Ubuntu ist bereits die Datei /etc/cron.d/csync2 angelegt worden. Der Eintrag darin ist auskommentiert und würde zudem auch lediglich einen Test durchführen ob die Peers in sync sind.
Um eine reale Synchronisation durchzuführen ist eine Zeile
---
*/5 * * * * root csync2 -x
---
einzufügen.