csync2
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| csync2 [2017-12-01 13:10:06] – manfred | csync2 [2021-10-01 07:49:08] (aktuell) – manfred | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Csync2 - Konfigurationsdaten-Synchronsation ====== | ||
| + | |||
| + | |||
| + | ===== Allgemeine Infos ===== | ||
| + | |||
| + | Csync2 ist ein Cluster-Synchronisations-Tool. Es dient zum synchron halten von Dateien auf unterschiedlichen Hosts in einem Cluster. Dabei kommt csync2 auch mit komplexen Setups mit mehr als 2 Hosts zurecht, kann Dateilöschungen handhaben und Konflikte erkennen. Csync2 ist fuer HA-cluster, HPC-Cluster COWs sowie Serverfarmen geeignet. | ||
| + | |||
| + | Normalerweise wird die Aufgabe die csync2 erledigt als relativ trivial angesehen und daher meist mit simplem Shellscripts und Tools wie zum Beispiel rsync oder scp bewältigt. Aber diese Lösungen behandeln nicht die wirklich heiklen Problemkreise der Dateisynchronisation: | ||
| + | |||
| + | |||
| + | ==== 1. Konflikte erkennen ==== | ||
| + | |||
| + | Der triviale rsync-basierende Ansatz zur Synchronisation erkennt keine Konflikte. D.h. wenn eine Datei auf mehreren Hosts verädert wurde, dann wird einfach die zuletzt geänderte Version auf die anderen Hosts kopiert. Solche Lösungen können meistens auch nicht unterscheiden, | ||
| + | |||
| + | |||
| + | ==== 2. Komplexe Setups ==== | ||
| + | |||
| + | Das Szenario mit einem Cluster mit zwei Nodes ist zwar sehr simpel, aber nicht sehr realistisch. Meistens findet man Umgebungen mit mehreren sich überlappenden Servergruppen, | ||
| + | |||
| + | |||
| + | ==== 3. Auf Updates reagieren ==== | ||
| + | |||
| + | In vielen Fällen ist es nicht ausreichend einfach nur Dateien zu replizieren. Statt dessen kann es notwendig sein, als Reaktion auf Updates von Dateien deren Dateinamen konfigurierbaren Mustern entsprechend spezielle Kommandos auszuführen. Zum Beispiel sollte in einem Webservercluster nach einem Update der Apache-Konfigurationsdateien das Kommando ' | ||
| + | |||
| + | Csync2 ist im Hinblick auf diese (und viele andere) Anforderungen entwickelt worden und stellt eine wichtige Basistechnologie für professionelles Linux-Clustering zur Verfügung. | ||
| + | |||
| + | Clifford Wolf hat csync2 als Gegenstück zu DRBD (das ebenfalls bei LINBIT Information Technologies GmbH entwickelt wurde) konzipiert. Während DRBD in Echtzeit Block-Devices zwischen zwei Hosts replizieren kann und so in Fail-Over-Clustern beispielsweise das Spiegeln von Datenbanken erlaubt, kann csync2 zur asynchronen Replikation von Dateien zwischen vielen Hosts in allen möglichen Arten von Clustern zur Anwendung kommen und wird meist für Konfigurationsdateien sowie Applikationsimages benutzt. | ||
| + | |||
| + | |||
| + | ===== Installation und Einrichtung - Ubuntu 14.04 / 16.04 ===== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | benötigte Pakete auf allen Knoten installieren: | ||
| + | > dpkg -l | grep -Fi inetd | ||
| + | > apt install csync2 | ||
| + | |||
| + | Schlüssel generieren: | ||
| + | > openssl req -rand / | ||
| + | Generating a 4096 bit RSA private key | ||
| + | .......................................................................++ | ||
| + | ....++ | ||
| + | writing new private key to '/ | ||
| + | ----- | ||
| + | |||
| + | Wichtig ist, dass diese Aktion erst ausgeführt wird, wenn der SSL-Schlüssel fertig vorliegt! | ||
| + | > csync2 -k / | ||
| + | > chmod 0600 / | ||
| + | |||
| + | Die erstellten Dateien sind nun auf alle weiteren Cluster zu kopieren. | ||
| + | > ls -lha / | ||
| + | -rw------- 1 root root 2,1K Apr 28 15:27 / | ||
| + | -rw------- 1 root root 65 Apr 28 15:48 / | ||
| + | -rw------- 1 root root 3,2K Apr 28 15:27 / | ||
| + | |||
| + | <file bash / | ||
| + | group Loadbalancer | ||
| + | { | ||
| + | host dbfritz01; #master server | ||
| + | host dbfritz02; #slave server | ||
| + | host dbfritz03; #slave server | ||
| + | |||
| + | key / | ||
| + | |||
| + | include / | ||
| + | include / | ||
| + | include /root/bin/; | ||
| + | include /root/.ssh; | ||
| + | include / | ||
| + | |||
| + | backup-directory / | ||
| + | backup-generations 10; | ||
| + | auto none; #no automatic sync | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | evtl. den Internet-Daemon konfigurieren (wenn der Fehler '' | ||
| + | |||
| + | bei '' | ||
| + | > vi / | ||
| + | ... | ||
| + | server_args | ||
| + | disable | ||
| + | ... | ||
| + | |||
| + | bei '' | ||
| + | > vi / | ||
| + | ... | ||
| + | csync2 | ||
| + | |||
| + | diese fünf Dateien auf alle Knoten kopieren: | ||
| + | > scp / | ||
| + | > scp / | ||
| + | |||
| + | xined restarten: | ||
| + | > service inetd restart | ||
| + | |||
| + | Testlauf | ||
| + | > csync2 -Tv | ||
| + | Running in-sync check for host01 <-> host02. | ||
| + | Connecting to host host02 (SSL) ... | ||
| + | Running in-sync check for host01 <-> host03. | ||
| + | Connecting to host host03 (SSL) ... | ||
| + | Finished with 0 errors. | ||
| + | |||
| + | im CRON einen 2-Minütigen Sync-Intervall festlegen: | ||
| + | > echo "*/2 * * * * root / | ||
| + | |||
| + | |||
| + | ==== die wichtigsten Parameter ==== | ||
| + | |||
| + | jetzt synchronisieren: | ||
| + | > csync2 -xv | ||
| + | |||
| + | alle **un**synchronen Dateien anzeigen: | ||
| + | > csync2 -M | ||
| + | |||
| + | diese Datei ist die richtige/ | ||
| + | > csync2 -f / | ||
| + | |||
| + | diese Datei ist die falsche/ | ||
| + | > csync2 -m / | ||
| + | |||
| + | alle Dateien aus der CSync2-DB auflsiten: | ||
| + | > csync2 -L | ||
| + | |||
| + | Wenn man sicherstellen will, dass die Dateien auf diesem Rechner als **aktuell** angesehen werden: | ||
| + | > for i in $(cat / | ||
| + | |||
| + | |||
| + | ===== Quellenangabe ===== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
