Nextcloud Backends automatisch synchronisieren (lsyncd)
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.