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.

  • Die settings könnt ihr beibehalten oder auch anpassen. In dieser Einstellung synchronisiert der Dienst nahezu live die Daten.
  • Mit targetList gebt ihr die Server an auf die synchronisiert werden soll.
  • Die targetDirs sind die Quelle und gleichzeitig das Ziel. Eine Dateibegrenzung gibt es im Kernel, dazu mehr im nächsten Punkt.
  • WICHTIG: Mit delete=’startup‘ löscht Lsyncd Dateien erst wenn Lsyncd neugestartet wird. Diese Option ist notwendig wenn Dateien mittels Linux-Editoren (bsp. vim) bearbeitet werden, da diese Dateien während dem Bearbeiten verschoben/umbenannt werden. Ansonsten kann auf delete=true (Standard Wert) gestellt werden.
  • In der exclude Zeile können Dateien oder Dateiendungen angegeben werden, die beim Sync ausgeschlossen werden sollen.

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

dominion

Linux Systemadministrator

Das könnte dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert