Ayakaleaf Pro ondersteunt horizontaal schalen. We hebben getest en geverifieerd dat het correct werkt met meerdere replica’s.
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)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).
-
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.
-
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.
-
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.
- 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. MetNGINX_KEEPALIVE_TIMEOUT=120zou de load balancer 115s kunnen kiezen. -
Client-IP’s
Stel de request-header
X-Forwarded-Forin op het IP-adres van de client. -
Bij het termineren van SSL
De load balancer moet de request-header
X-Forwarded-Proto: httpstoevoegen.
Voorbeeldconfiguratie voor HAProxy
Voorbeeldconfiguratie voor HAProxy
Server Pro-configuratie
Geheimen De Server Pro-instanties moeten gedeelde geheimen gebruiken:WEB_API_PASSWORD(authenticatie van de web-API)STAGING_PASSWORDenV1_HISTORY_PASSWORDmet dezelfde waarde (authenticatie van de geschiedenis)CRYPTO_RANDOM(voor de sessiecookie)OT_JWT_AUTH_KEY(authenticatie van de geschiedenis)
/dev/urandom (256 willekeurige bits).
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.
- Stel
OVERLEAF_BEHIND_PROXY=truein (SHARELATEX_BEHIND_PROXYvoor versies4.xen eerder) voor nauwkeurige client-IP’s. - Stel
TRUSTED_PROXY_IPSin op het IP-adres van de load balancer (er kunnen meerdere CIDR’s worden opgegeven, gescheiden door een komma).
Git-bridge is beschikbaar in Server Pro vanaf versie 4.0.1.
-
Stel
GIT_BRIDGE_ENABLEDin op'true' -
Stel
GIT_BRIDGE_HOSTin op<git-bridge container name>, bijv.git-bridge -
Stel
GIT_BRIDGE_PORTin op8000 -
Stel
V1_HISTORY_URLin ophttp://<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.
- Stel
GIT_BRIDGE_API_BASE_URLin ophttp://<server-pro sibling container name>/api/v0, bijv.http://server-pro-ha-1/api/v0 - Stel
GIT_BRIDGE_OAUTH2_SERVERin ophttp://<server-pro sibling container name>, bijv.http://server-pro-ha-1 - Stel
GIT_BRIDGE_POSTBACK_BASE_URLin ophttp://<git-bridge container name>:8000, bijv.http://git-bridge:8000 - Stel
GIT_BRIDGE_ROOT_DIRin op de via bind-mount gekoppelde gegevensschijf van git-bridge, bijv./data/git-bridge
Voorbeeldconfiguratie voor docker-compose.yml
Voorbeeldconfiguratie voor docker-compose.yml
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 vermeldingFinished migrations of wachten tot de applicatie verkeer accepteert.
De upgradeprocedure ziet er als volgt uit:
- Plan een onderhoudsvenster
- Stop alle instanties van Server Pro
- Maak een consistente back-up zoals beschreven in de documentatie
- Start één instantie van Server Pro met de nieuwe versie
- Controleer of de nieuwe instantie naar verwachting werkt
- Start de andere instanties met de nieuwe versie

