Skip to main content
Ayakaleaf Pro ondersteunt horizontaal schalen. We hebben getest en geverifieerd dat het correct werkt met meerdere replica’s.
Dit document somt de technische vereisten op en geeft richtlijnen voor het draaien van Ayakaleaf Pro op meer dan één node.
Vanaf Server CE/Server Pro 5.0.3 zijn de omgevingsvariabelen hernoemd van SHARELATEX_* naar OVERLEAF_*.Als je een 4.x-versie (of eerder) gebruikt, zorg er dan voor dat de variabelen het juiste voorvoegsel hebben (bijv. SHARELATEX_SITE_URL in plaats van OVERLEAF_SITE_URL)
Het inrichten van horizontaal schalen vergt aanzienlijk veel inspanning. We raden aan horizontaal schalen alleen te overwegen wanneer een bepaalde schaal is bereikt. Ter illustratie: een Server Pro-installatie voor in totaal 1.000 gebruikers is succesvol ingericht op één server met twee 4-coreprocessors en 32 GB systeemgeheugen. Zie de documentatie over hardwarevereisten voor aanbevelingen. Een implementatie van Server Pro met horizontaal schalen omvat een aantal externe componenten, zoals een load balancer en een S3-compatibele opslagbackend. We kunnen helpen bij het oplossen van fouten in de Server Pro-containers die het gevolg kunnen zijn van een verkeerde configuratie, en algemeen advies geven op basis van dit document. Helaas kunnen we geen hulp bieden bij het configureren van applicaties/systemen van derden. Het oplossen van technische problemen die specifiek zijn voor je hardware/software voor de externe componenten valt niet onder onze ondersteuningsvoorwaarden.

Vereisten

Externe, centrale gegevensopslag

De gegevensopslag in Server Pro kan worden opgesplitst in vier gegevensopslagplaatsen:
  • MongoDB
    • De meeste gegevens worden persistent opgeslagen in MongoDB.
    • We ondersteunen zowel een lokale instantie als een externe instantie, zoals MongoDB Atlas (een volledig beheerde MongoDB-service die binnen de AWS-infrastructuur draait).
    Opmerking: Helaas is er momenteel geen officiële ondersteuning voor MongoDB-compatibele databases zoals CosmoDB/DocumentDB, omdat we Server Pro daar niet mee hebben getest. Hoewel het implementeren van Server Pro met compatibele databases mogelijk kan zijn, ondersteunen we officieel alleen implementaties met MongoDB.
  • Redis
    • Redis slaat tijdelijke gegevens op, zoals openstaande documentupdates voordat ze naar MongoDB worden weggeschreven.
    • Redis wordt gebruikt om documentupdates tussen verschillende services te communiceren en om de editor op de hoogte te stellen van statuswijzigingen in een bepaald project.
    • Redis wordt gebruikt voor het opslaan van gebruikerssessies.
    • We ondersteunen zowel een lokale instantie als een externe instantie.
    Opmerking: Helaas is er momenteel geen officiële ondersteuning voor Redis-compatibele key/value-stores zoals KeyDB/Valkey, omdat we Server Pro daar niet mee hebben getest. Hoewel het implementeren van Server Pro met compatibele stores mogelijk kan zijn, ondersteunen we officieel alleen implementaties met Redis.
  • Projectbestanden en geschiedenisbestanden
    • Niet-bewerkbare projectbestanden worden buiten MongoDB opgeslagen. Het nieuwe projectgeschiedenissysteem (vanaf Server Pro 3.5) slaat de geschiedenis ook buiten MongoDB op.
    • Voor kleine, enkelvoudige instanties ondersteunen we een lokaal bestandssysteem (dat kan worden ondersteund door een lokale SSD, NFS of EBS) of een S3-compatibel gegevensopslagsysteem.
    • Voor horizontaal schalen ondersteunen we alleen S3-compatibele gegevensopslagsystemen.
    Belangrijk: NFS/Amazon EFS/Amazon EBS worden niet ondersteund voor horizontaal schalen. Zie de sectie over opslagvereisten voor hardware over het schalen van opslag in Server Pro voor meer details.
  • Tijdelijke bestanden
    • LaTeX-compilaties moeten voor optimale prestaties op snelle, lokale schijven draaien. De uitvoer van de compilatie hoeft niet persistent te worden opgeslagen of geback-upt.
    • Het bufferen van nieuwe bestandsuploads en het aanmaken van zip-bestanden van projecten profiteren ook van het gebruik van een lokale schijf.
We raden sterk aan een lokale schijf te gebruiken. Het gebruik van welke netwerkschijf dan ook (zoals NFS of EBS) kan leiden tot onverwachte compileerfouten en andere prestatieproblemen.

Git-bridge

Git-bridge is beschikbaar in Server Pro vanaf versie 4.0.1.
De git-repository’s worden lokaal op schijf opgeslagen. Er zijn geen replicatieopties beschikbaar. Git-bridge moet als singleton worden uitgevoerd. Voor optimale prestaties raden we aan een lokale schijf te gebruiken voor de gegevens van git-bridge. De gegevensschijf van git-bridge moet regelmatig worden geback-upt. Voor de gegevensopslag bij horizontaal schalen heb je nodig:
  • een centrale MongoDB-instantie die vanaf alle Server Pro-instanties toegankelijk is
  • een centrale Redis-instantie die vanaf alle Server Pro-instanties toegankelijk is
  • een centrale S3-compatibele opslagbackend voor project- en geschiedenisbestanden
  • een lokale schijf op elke instantie voor tijdelijke bestanden
  • een lokale schijf op de instantie die de git-bridge-container host, voor de gegevens van git-bridge

Vereisten voor de load balancer

  • Persistente routering, bijv. met behulp van een cookie Deze vereiste komt voort uit de volgende componenten:
    • De realtime bewerkingsfunctie in Server Pro gebruikt WebSockets met XHR-polling als terugvaloptie. Elke bewerkingssessie heeft een lokale status aan de serverkant, en de verzoeken van een bepaalde bewerkingssessie moeten altijd naar dezelfde Server Pro-instantie worden gerouteerd. De samenwerkingsfunctie gebruikt Redis Pub/Sub om updates tussen meerdere Server Pro-instanties te delen.
    • De LaTeX-compilatie bewaart de uitvoer en de compileercache lokaal voor optimale prestaties. Nadat een compileerverzoek naar een Server Pro-instantie is verzonden, moeten de daaropvolgende downloadverzoeken voor PDF/log naar dezelfde Server Pro-instantie worden gerouteerd.
  • Lange time-outs voor verzoeken om het compileren van grote LaTeX-documenten te ondersteunen
  • WebSocket-ondersteuning voor optimale prestaties
  • POST-payloadgrootte van 50 MB
  • Keep-alive-time-out moet lager zijn dan de keep-alive-time-out van Server Pro De keep-alive-time-out in Server Pro kan worden geconfigureerd met de omgevingsvariabele NGINX_KEEPALIVE_TIMEOUT. De standaardwaarde is 65s. Met de standaardwaarde werkt een keep-alive-time-out van 60s in de load balancer. Met NGINX_KEEPALIVE_TIMEOUT=120 zou de load balancer 115s kunnen kiezen.
  • Client-IP’s Stel de request-header X-Forwarded-For in op het IP-adres van de client.
  • Bij het termineren van SSL De load balancer moet de request-header X-Forwarded-Proto: https toevoegen.

Server Pro-configuratie

Geheimen De Server Pro-instanties moeten gedeelde geheimen gebruiken:
  • WEB_API_PASSWORD (authenticatie van de web-API)
  • STAGING_PASSWORD en V1_HISTORY_PASSWORD met dezelfde waarde (authenticatie van de geschiedenis)
  • CRYPTO_RANDOM (voor de sessiecookie)
  • OT_JWT_AUTH_KEY (authenticatie van de geschiedenis)
Al deze geheimen moeten elk met een eigen unieke waarde worden geconfigureerd en tussen de instanties worden gedeeld. Als ze niet zijn geconfigureerd en verzoeken van gebruikers naar verschillende Server Pro-instanties worden gerouteerd, mislukken hun verzoeken bij de authenticatiecontroles: ze worden dan vaak naar de inlogpagina doorgestuurd of hun acties in de gebruikersinterface mislukken op onverwachte manieren. Als ze niet zijn geconfigureerd, gebruikt Server Pro voor elk geheim een nieuwe willekeurige waarde op basis van 32 willekeurige bytes uit /dev/urandom (256 willekeurige bits).
MongoDB Laat OVERLEAF_MONGO_URL (SHARELATEX_MONGO_URL voor versies 4.x en eerder) naar de centrale MongoDB-instantie verwijzen. Redis Laat OVERLEAF_REDIS_HOST (SHARELATEX_REDIS_HOST voor versies 4.x en eerder) en REDIS_HOST naar de centrale Redis-instantie verwijzen. S3-compatibele opslag voor project- en geschiedenisbestanden Zie de documentatie over S3-compatibele opslag voor details. Tijdelijke bestanden De standaard bind-mount van een lokale SSD naar /var/lib/overleaf (/var/lib/sharelatex voor versies 4.x en eerder) is voldoende. Zorg ervoor dat SANDBOXED_COMPILES_HOST_DIR naar het koppelpunt op de host verwijst.
We raden sterk aan een lokale schijf te gebruiken. Het gebruik van welke netwerkschijf dan ook (zoals NFS of EBS) kan leiden tot onverwachte compileerfouten en andere prestatieproblemen.
Proxyconfiguratie
  • Stel OVERLEAF_BEHIND_PROXY=true in (SHARELATEX_BEHIND_PROXY voor versies 4.x en eerder) voor nauwkeurige client-IP’s.
  • Stel TRUSTED_PROXY_IPS in op het IP-adres van de load balancer (er kunnen meerdere CIDR’s worden opgegeven, gescheiden door een komma).
Git-bridge-integratie
Git-bridge is beschikbaar in Server Pro vanaf versie 4.0.1.
De git-bridge-container heeft een Server Pro-container als tegenhanger (sibling) nodig om binnenkomende git-verzoeken af te handelen. Deze sibling-container kan ook gewoon gebruikersverkeer bedienen. In de voorbeeldconfiguratie fungeert de eerste instantie als sibling-container voor git-bridge, maar in feite kan elke instantie die rol vervullen. Waarom moeten we één Server Pro-container aanwijzen als sibling voor git-bridge? Server Pro verstrekt download-URL’s voor de geschiedenisservice aan git-bridge. We moeten deze geschiedenis-URL’s zo configureren dat ze toegankelijk zijn vanuit de git-bridge-container. Configuratie van de Server Pro-container:
  • Stel GIT_BRIDGE_ENABLED in op 'true'
  • Stel GIT_BRIDGE_HOST in op <git-bridge container name>, bijv. git-bridge
  • Stel GIT_BRIDGE_PORT in op 8000
  • Stel V1_HISTORY_URL in op http://<server-pro sibling container name>:3100/api. Opmerking: dit is alleen nodig op de sibling-container van de git-bridge-container. De andere instanties kunnen een localhost-URL gebruiken, wat de standaard is.
Configuratie van de git-bridge-container:
  • Stel GIT_BRIDGE_API_BASE_URL in op http://<server-pro sibling container name>/api/v0, bijv. http://server-pro-ha-1/api/v0
  • Stel GIT_BRIDGE_OAUTH2_SERVER in op http://<server-pro sibling container name>, bijv. http://server-pro-ha-1
  • Stel GIT_BRIDGE_POSTBACK_BASE_URL in op http://<git-bridge container name>:8000, bijv. http://git-bridge:8000
  • Stel GIT_BRIDGE_ROOT_DIR in op de via bind-mount gekoppelde gegevensschijf van git-bridge, bijv. /data/git-bridge
De volgende configuratie toont een op zichzelf staande opstelling. Om de demo te laten werken, moet je een geldige SSL-sleutel/-certificaat opgeven en OVERLEAF_SITE_URL (SHARELATEX_SITE_URL voor versies 4.x en eerder) aanpassen. Voor een echte opstelling moet je de dummygeheimen vervangen door echte geheimen, zoals in de code aangegeven. Voor een echte opstelling moet je de afzonderlijke containers naar eigen nodes verplaatsen en de IP-adressen aanpassen aan je lokale netwerkconfiguratie.

Hardware

We raden aan om voor alle Server Pro-instanties die deelnemen aan het horizontaal schalen dezelfde hardwarespecificaties te gebruiken. De algemene aanbevelingen voor hardwarespecificaties voor Server Pro-instanties zijn van toepassing.

Server Pro upgraden

Als onderdeel van het upgradeproces voert Server Pro automatisch databasemigraties uit. Deze migraties zijn niet ontworpen om vanaf meerdere instanties tegelijk te worden uitgevoerd. De migraties moeten zijn voltooid voordat de eigenlijke webapplicatie wordt gestart. Je kunt in de logboeken zoeken naar een vermelding Finished migrations of wachten tot de applicatie verkeer accepteert. De upgradeprocedure ziet er als volgt uit:
  1. Plan een onderhoudsvenster
  2. Stop alle instanties van Server Pro
  3. Maak een consistente back-up zoals beschreven in de documentatie
  4. Start één instantie van Server Pro met de nieuwe versie
  5. Controleer of de nieuwe instantie naar verwachting werkt
  6. Start de andere instanties met de nieuwe versie
Laatst gewijzigd op 5 oktober 2026