Ayakaleaf Pro unterstützt horizontale Skalierung. Wir haben getestet und bestätigt, dass es mit mehreren Replikaten korrekt läuft.
Ab Server CE/Server Pro
5.0.3 wurden die Umgebungsvariablen von SHARELATEX_* in OVERLEAF_* umbenannt.Wenn Sie eine 4.x-Version (oder älter) verwenden, stellen Sie sicher, dass die Variablen das entsprechende Präfix tragen (z. B. SHARELATEX_SITE_URL statt OVERLEAF_SITE_URL)Anforderungen

Externer, zentraler Datenspeicher
Die Datenspeicherung in Server Pro lässt sich in vier Datenspeicher aufteilen:-
MongoDB
- Der Großteil der Daten wird in MongoDB gespeichert.
- Wir unterstützen entweder eine lokale oder eine externe Instanz, etwa MongoDB Atlas (ein vollständig verwalteter MongoDB-Dienst, der innerhalb der AWS-Infrastruktur läuft).
-
Redis
- Redis speichert temporäre Daten, etwa ausstehende Dokumentaktualisierungen, bevor sie in MongoDB geschrieben werden.
- Redis wird verwendet, um Dokumentaktualisierungen zwischen verschiedenen Diensten auszutauschen und den Editor über Zustandsänderungen in einem bestimmten Projekt zu benachrichtigen.
- Redis wird zum Speichern der Benutzersitzungen verwendet.
- Wir unterstützen entweder eine lokale oder eine externe Instanz.
-
Projektdateien und Verlaufsdateien
- Nicht bearbeitbare Projektdateien werden außerhalb von MongoDB gespeichert. Das neue Projektverlaufssystem (ab Server Pro 3.5) speichert den Verlauf ebenfalls außerhalb von MongoDB.
- Für kleine Einzelinstanzen unterstützen wir entweder ein lokales Dateisystem (z. B. auf Basis einer lokalen SSD, NFS oder EBS) oder ein S3-kompatibles Datenspeichersystem.
-
Für horizontale Skalierung unterstützen wir ausschließlich S3-kompatible Datenspeichersysteme.
-
Kurzlebige Dateien
- LaTeX-Kompilierungen müssen für optimale Leistung auf schnellen, lokalen Datenträgern laufen. Die Ausgabe der Kompilierung muss nicht dauerhaft gespeichert oder gesichert werden.
- Auch das Puffern neuer Datei-Uploads und das Erstellen von Projekt-ZIP-Dateien profitieren von einem lokalen Datenträger.
Wir empfehlen dringend, einen lokalen Datenträger zu verwenden. Die Verwendung jeglicher Art von Netzwerkdatenträgern (wie NFS oder EBS) kann zu unerwarteten Kompilierungsfehlern und anderen Leistungsproblemen führen.
Git-bridge
Git-bridge ist in Server Pro ab Version 4.0.1 verfügbar.
- eine zentrale MongoDB-Instanz, die von allen Server Pro-Instanzen aus erreichbar ist
- eine zentrale Redis-Instanz, die von allen Server Pro-Instanzen aus erreichbar ist
- ein zentrales S3-kompatibles Speicher-Backend für Projekt- und Verlaufsdateien
- einen lokalen Datenträger auf jeder Instanz für kurzlebige Dateien
- einen lokalen Datenträger auf der Instanz, die den Git-bridge-Container hostet, für die Git-bridge-Daten
Anforderungen an den Load Balancer
-
Persistentes Routing, z. B. per Cookie
Diese Anforderung ergibt sich aus folgenden Komponenten:
- Die Echtzeit-Bearbeitung in Server Pro verwendet WebSockets mit einem Fallback auf XHR-Polling. Jede Bearbeitungssitzung hat einen lokalen Zustand auf der Serverseite, und die Anfragen einer bestimmten Bearbeitungssitzung müssen immer an dieselbe Server Pro-Instanz geleitet werden. Die Kollaborationsfunktion nutzt Redis Pub/Sub, um Aktualisierungen zwischen mehreren Server Pro-Instanzen auszutauschen.
- Die LaTeX-Kompilierung hält die Ausgabe und den Kompilierungs-Cache für optimale Leistung lokal vor. Nachdem eine Kompilierungsanfrage an eine Server Pro-Instanz gesendet wurde, müssen die nachfolgenden PDF-/Log-Download-Anfragen an dieselbe Server Pro-Instanz geleitet werden.
- Lange Request-Timeouts zur Unterstützung der Kompilierung großer LaTeX-Dokumente
- WebSocket-Unterstützung für optimale Leistung
- POST-Payload-Größe von 50 MB
-
Keep-alive-Timeout muss niedriger sein als das Keep-alive-Timeout von Server Pro
Das Keep-alive-Timeout in Server Pro kann über die Umgebungsvariable
NGINX_KEEPALIVE_TIMEOUTkonfiguriert werden. Der Standardwert beträgt 65 s. Mit dem Standardwert funktioniert ein Keep-alive-Timeout von 60 s im Load Balancer. MitNGINX_KEEPALIVE_TIMEOUT=120könnte der Load Balancer 115 s wählen. -
Client-IPs
Setzen Sie den Request-Header
X-Forwarded-Forauf die Client-IP. -
Beim Terminieren von SSL
Der Load Balancer muss den Request-Header
X-Forwarded-Proto: httpshinzufügen.
Beispielkonfiguration für HAProxy
Beispielkonfiguration für HAProxy
Server Pro-Konfiguration
Secrets Die Server Pro-Instanzen müssen gemeinsame Secrets verwenden:WEB_API_PASSWORD(Web-API-Authentifizierung)STAGING_PASSWORDundV1_HISTORY_PASSWORDmit demselben Wert (Verlaufs-Authentifizierung)CRYPTO_RANDOM(für das Sitzungscookie)OT_JWT_AUTH_KEY(Verlaufs-Authentifizierung)
/dev/urandom (256 Zufallsbits).
OVERLEAF_MONGO_URL (SHARELATEX_MONGO_URL bei Versionen 4.x und älter) auf die zentrale MongoDB-Instanz.
Redis
Richten Sie OVERLEAF_REDIS_HOST (SHARELATEX_REDIS_HOST bei Versionen 4.x und älter) und REDIS_HOST auf die zentrale Redis-Instanz.
S3-kompatibler Speicher für Projekt- und Verlaufsdateien
Details finden Sie in der Dokumentation zu S3-kompatiblem Speicher.
Kurzlebige Dateien
Der standardmäßige Bind-Mount einer lokalen SSD nach /var/lib/overleaf (/var/lib/sharelatex bei Versionen 4.x und älter) ist ausreichend. Achten Sie darauf, SANDBOXED_COMPILES_HOST_DIR auf den Mountpoint auf dem Host zu setzen.
Wir empfehlen dringend, einen lokalen Datenträger zu verwenden. Die Verwendung jeglicher Art von Netzwerkdatenträgern (wie NFS oder EBS) kann zu unerwarteten Kompilierungsfehlern und anderen Leistungsproblemen führen.
- Setzen Sie
OVERLEAF_BEHIND_PROXY=true(SHARELATEX_BEHIND_PROXYbei Versionen4.xund älter), um korrekte Client-IPs zu erhalten. - Setzen Sie
TRUSTED_PROXY_IPSauf die IP des Load Balancers (mehrere CIDRs können durch Kommas getrennt angegeben werden).
Git-bridge ist in Server Pro ab Version 4.0.1 verfügbar.
-
Setzen Sie
GIT_BRIDGE_ENABLEDauf'true' -
Setzen Sie
GIT_BRIDGE_HOSTauf<git-bridge container name>, z. B.git-bridge -
Setzen Sie
GIT_BRIDGE_PORTauf8000 -
Setzen Sie
V1_HISTORY_URLaufhttp://<server-pro sibling container name>:3100/api. Hinweis: Dies ist nur auf dem Geschwistercontainer des Git-bridge-Containers erforderlich. Die anderen Instanzen können eine localhost-URL verwenden, was der Standard ist.
- Setzen Sie
GIT_BRIDGE_API_BASE_URLaufhttp://<server-pro sibling container name>/api/v0, z. B.http://server-pro-ha-1/api/v0 - Setzen Sie
GIT_BRIDGE_OAUTH2_SERVERaufhttp://<server-pro sibling container name>, z. B.http://server-pro-ha-1 - Setzen Sie
GIT_BRIDGE_POSTBACK_BASE_URLaufhttp://<git-bridge container name>:8000, z. B.http://git-bridge:8000 - Setzen Sie
GIT_BRIDGE_ROOT_DIRauf den per Bind-Mount eingebundenen Git-bridge-Datenträger, z. B./data/git-bridge
Beispielkonfiguration für docker-compose.yml
Beispielkonfiguration für docker-compose.yml
Die folgende Konfiguration zeigt ein in sich geschlossenes Setup. Damit die Demo funktioniert, müssen Sie einen gültigen SSL-Schlüssel bzw. ein gültiges Zertifikat bereitstellen und
OVERLEAF_SITE_URL (SHARELATEX_SITE_URL bei Versionen 4.x und älter) anpassen. Für ein echtes Setup müssen Sie die Dummy-Secrets wie inline vermerkt durch echte Secrets ersetzen. Für ein echtes Setup müssen Sie außerdem die einzelnen Container auf dedizierte Knoten verschieben und die IP-Adressen an Ihr lokales Netzwerk anpassen.Hardware
Wir empfehlen, für alle an der horizontalen Skalierung beteiligten Server Pro-Instanzen dieselben Hardwarespezifikationen zu verwenden. Es gelten die allgemeinen Empfehlungen zu den Hardwarespezifikationen für Server Pro-Instanzen.Server Pro aktualisieren
Im Rahmen des Upgrade-Prozesses führt Server Pro automatisch Datenbankmigrationen aus. Diese Migrationen sind nicht dafür ausgelegt, von mehreren Instanzen parallel ausgeführt zu werden. Die Migrationen müssen abgeschlossen sein, bevor die eigentliche Webanwendung startet. Sie können entweder in den Logs nach dem EintragFinished migrations suchen oder warten, bis die Anwendung Datenverkehr annimmt.
Der Upgrade-Ablauf sieht wie folgt aus:
- Planen Sie ein Wartungsfenster
- Stoppen Sie alle Server Pro-Instanzen
- Erstellen Sie ein konsistentes Backup wie in der Dokumentation beschrieben
- Starten Sie eine einzelne Server Pro-Instanz mit der neuen Version
- Prüfen Sie, ob die neue Instanz wie erwartet funktioniert
- Starten Sie die übrigen Instanzen mit der neuen Version

