Website-Icon adminForge

Lsyncd – Lokale Dateien mit mehreren Servern synchronisieren

Ich habe mehrere Möglichkeiten ausprobiert um auf unterschiedlichen Linux-Servern Dateien synchron zu halten. Wer als Beispiel ein Webprojekt auf mehreren Servern betreibt, und sich die Mehrkosten und auch evtl. auftretende Probleme eines NFS sparen möchte, hat sicherlich schon einmal daran gedacht Dateien mittels rsync und cron synchron zu halten. Das funktioniert jedoch nur in einem 1 Minuten Rhyth­mus.

Mit Lsyncd ist dieses Problem nicht mehr existent. Lsyncd befragt den Linux Kernel mittels inotify ob sich Dateien in einem beobachteten Ordner inklusive Unterordner geändert haben, und synchronisiert diese je nach Einstellung mittels rsync auf einen oder mehrere Server.

Punkt 1: Installation unter Debian

Wir installieren das Paket.

Legen den Konfigurationsordner an.

Erstellen einen SSH-Key ohne Passphrase.

Fügen den Inhalt von /root/.ssh/id_rsa.pub auf den anderen Servern am Ende der Datei /root/.ssh/authorized_keys ein.

Punkt 2: Konfiguration

Ich gebe euch eine Beispiel Konfiguration mit der mehrere Ordner auf mehrere Server synchron gehalten werden können. Mehr Informationen findet ihr in der offiziellen Dokumentation.

Alternative für unterschiedliche Quell und Ziel Verzeichnisse:

Punkt 3: Limit der maximalen inotify Dateien erhöhen

Um das Erreichen des inotify Limit von oftmals nur 8192 Dateien im Vorfeld zu vermeiden, erhöhen wir das Limit. Zuerst prüfen wir aber viele Dateien synchronisiert werden sollen. Dazu verwenden wir ein find auf alle Ordner die wir in der Konfiguration angegeben haben.

Wir erhöhen den Linux Kernel Parameter auf einen Wert der höher ist als unsere Anzahl an Dateien.

Jetzt übernehmen wir den neuen Wert mit sysctl -p.

Punkt 4: Logrotate

Je nach Anzahl der Dateiänderungen können die Logfiles schnell anwachsen. Wir räumen somit täglich auf.

Punkt 5: Systemd Service Unit

Lsyncd liefert ein Init Start/Stop Script mit. Wer lieber Systemd verwenden möchte kann meine Unit gerne nutzen.

Jetzt reaktivieren wir die neue Unit und deaktivieren somit das alte Init Script, und starten den Dienst.

Punkt 6: Testen

Wir prüfen ob der Dienst läuft.

 

1
Die mobile Version verlassen