Kontakt

Carsten Rieger IT Services
Am Danglfeld 8 | 83132 Pittenhart
Telefon: 08624.9009794
E-Mail: info@c-rieger.de

Nextcloud Backends automatisch synchronisieren (lsyncd)

turnserver
Nextcloud mit lsyncd synchron halten

Befinden Sie sich in einer skalierten Nextcloud-Umgebung, so sind Nextcloud Updates deutlich aufwendiger und komplexer, da u.a. die Webserver und Webserververzeichnisse synchron gehalten werden müssen.

Um sowohl für App-Aktualisierungen, als auch für Nextcloud-Upgrades die Aufwände und Risiken im Betrieb dauerhaft zu minimieren, bedienen wir uns der automatischen Synchronisation der Webserver mittels lsyncd.

In diesem Beispiel gehen wir von zwei Webservern aus.

Webserver #1: 192.168.2.101
Webserver #2: 192.168.2.102

Bitte passen Sie diese exemplarischen IP-Adressen an Ihre Systeme an

Inhaltsverzeichnis

1. NFS (am Webserver #2)
2. lsyncd (am Webserver #1)

Melden Sie sich am Webserver #2 an und wechseln in den privilegierten Modus::

sudo -s

1. NFS (Webserver #2)

Richten Sie zu Beginn den NFS-Serverdienst zur Synchronisierung (lsyncd) am Webserver #2 ein:

apt install -y nfs-kernel-server

Erstellen Sie die NFS-Freigabe

nano /etc/exports

Passen Sie die IP-Adresse an Ihre Umgebung an. Die IP-Adresse 192.168.2.101 entspricht in diesem Beispiel der IP-Adresse des ersten Webservers.

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#

/var/www/nextcloud 192.168.2.101(rw,sync,anonuid=33,anongid=33,no_subtree_check,no_root_squash)

Um die Kommunikation zu ermöglichen erweitern wir die Firewall:

ufw allow from 192.168.2.101 to any app samba4 comment "NFS-Freigabe"

Sollte samba4 nicht vorhanden sein, so erzeugen Sie die ufw-Applikation/-Konfiguration:

nano /etc/ufw/applications.d/samba4

Fügen Sie den folgenden Inhalt ein:

[Samba4]
title=Samba 4
description=Samba 4 as domain controller
ports=53|88|135/tcp|137/udp|138/udp|139/tcp|389|445/tcp|464|636/tcp|1024:5000/tcp|3268/tcp|3269/tcp|5353

Wiederholen Sie den Befehl zur Erweiterung der Firewall-Regeln:

systemctl restart ufw.service && ufw allow from 192.168.2.101 to any app samba4 comment "NFS-Freigabe"

Abschließend publizieren wir die NFS-Freigabe:

exportfs -av

Der NFS-Server und die benötigte Freigabe wurden somit für lsyncd eingerichtet. Wechseln Sie nun auf den primären Webserver und installieren lsyncd.

2. LSYNCD (Webserver #1)

Melden Sie sich am Webserver #1 an und wechseln in den privilegierten Modus:

sudo -s

Installieren Sie die notwendige Software, lsyncd und nfs-common am Webserver #1:

apt install -y lsyncd nfs-common

Legen Sie dann die notwendigen Ordner an:

mkdir -p /etc/lsyncd/ /lsyncd
chown -R www-data:www-data /lsyncd

Um den sekundären Server durch den ersten synchron zu halten erstellen wir eine lsyncd-Konfiguration:

nano /etc/lsyncd/lsyncd.conf.lua
settings{
        logfile="/var/log/lsyncd.log",
        statusFile="/var/log/lsyncd.stat",
        statusInterval=1,
}

sync{
        default.rsync,
        source="/var/www/nextcloud",
        target="/lsyncd",
        delay=0,
	rsync = { 
			verbose = true, 
			owner = true, 
			group = true, 
			perms = true, 
			update = false, 
			chmod = 750, 
			chown = "www-data:www-data" 
	}
}

Binden Sie nun die NFS-Freigabe des sekundären Webservers dauerhaft in das System (Webserver #1) ein:

nano /etc/fstab

Ergänzen Sie die folgende Zeile und passen die IP des Webserver #2 (192.168.2.102) an Ihr System an:

[...]
192.168.2.102:/var/www/nextcloud /lsyncd nfs4 nfsvers=4,minorversion=1,noatime,nolock,sec=sys 0 0

Um die Freigabe des Webserver #2 nach /lsyncd am Webserver #1 einzubinden rufen Sie einmalig

mount -a -vv

auf. Das erfolgreiche Einbinden wird mit „successfully mounted“ quitiert.

Aktivieren und starten Sie nun den lsyncd-Dienst

systemctl enable lsyncd.service && systemctl restart lsyncd.service

und überprüfen die Logdatei.

tail -f /var/log/lsyncd.log

Ab sofort können Sie Aktualisierungen und Erweiterungen Ihrer Nextcloud-Instanzen am primären Webserver durchführen und alle Veränderungen werden auf den zweiten Webserver synchronisiert. Über Ihre Unterstützung (diese wird ordnungsgemäß versteuert!) würden sich meine Frau, meine Zwillinge und ich sehr freuen. Vorab vielen Dank!