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

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.