Nextcloud Skalierung
Markus Brunsch / February 2022
Nextcloud Skalierungsoptionen
In diesem Beitrag halte ich meine Erfahrungen und Erkentnisse im Zusammenhang mit der Skalierung einer Nextcloud Instanz fest.
Mit einer Standardmäßigen Nextcloud Installation ist man in der ausgangsposition eines Webservers mit PHP-FPM Integration (Nginx/Apache2) einer Datenbank (MariaDB/MySQL/PostgresSQL) und einem Caching Layer (RedisDB).
Worker Skalierung
Die eine Möglichkeit der Skalierung ist die Ebene der PHP-FPM Prozesse zu replizieren. Dazu ist es nötig einen Reverse Proxy / Load Balancer aufzuspannen und vor die PHP Worker zu plazieren.
Dabei teilen sich die PHP Worker die darunterliegenden Ressourcen wie WWW Root und die Datenbank.
Durch die Skalierung auf 3 PHP Worker, wurde die Performance im vergleich zu einem single Worker setup etwas gesteigert.
Für den Benchmark wurde ein eigenes Tool erstellt, welches über WebDAV auf dem Nextcloud Server eine Menge X an Dateien erstellt.
Das Projekt zum Benchmarktool ist hier zu finden.
Der Benchmark ist in der hinsicht sehr syntetisch, da hier nur die Auslastung eines Benutzers in betracht gezogen wird. Die Worker Skalierung spielt ihre Vorteile aber erst richtig in einer multi User umgebung aus.
Datenbank Skalierung
Eine weitere Möglichkeit der Skalierung wäre es die Datenbank zu Skalieren.
Hierbei gibt es zum einen die Möglichkeit die Datenbank in mehrere Instanzen zu Skalieren. Dies lässt sich mit MariaDB oder MySQL aber nicht umsetzen. Hier müsste auf eine Distributed Databases umgestiegen werden.
Beispiele hierfür wären CockroachDB oder eine MySQL kompatibel akternative TIDB
Eine weitere Möglichkeit der Datenbankskalierung ist das Sharding der Datenbank entwerder durch Datenbankproxies wie Apache Shardingsphere oder Datenbankintegrationen wie Postgres Extension Citus.