Ayakaleaf Pro supporta la scalabilità orizzontale. Abbiamo testato e verificato che funziona correttamente con più repliche.
A partire da Server CE/Server Pro
5.0.3, le variabili d’ambiente sono state rinominate da SHARELATEX_* a OVERLEAF_*.Se utilizzi una versione 4.x (o precedente), assicurati che le variabili abbiano il prefisso corretto (ad es. SHARELATEX_SITE_URL invece di OVERLEAF_SITE_URL)Requisiti

Storage dei dati esterno e centralizzato
Lo storage dei dati in Server Pro può essere suddiviso in quattro archivi:-
MongoDB
- La maggior parte dei dati viene resa persistente in MongoDB.
- Supportiamo sia un’istanza locale sia un’istanza esterna, come MongoDB Atlas (un servizio MongoDB completamente gestito che gira all’interno dell’infrastruttura AWS).
-
Redis
- Redis memorizza dati temporanei, come gli aggiornamenti dei documenti in sospeso prima che vengano scritti in MongoDB.
- Redis viene utilizzato per comunicare gli aggiornamenti dei documenti tra i diversi servizi e per notificare all’editor i cambiamenti di stato in un determinato progetto.
- Redis viene utilizzato per memorizzare le sessioni utente.
- Supportiamo sia un’istanza locale sia un’istanza esterna.
-
File dei progetti e file della cronologia
- I file di progetto non modificabili sono memorizzati al di fuori di MongoDB. Anche il nuovo sistema di cronologia dei progetti (da Server Pro 3.5 in poi) memorizza la cronologia al di fuori di MongoDB.
- Per piccole istanze singole supportiamo sia un file system locale (che potrebbe essere basato su un SSD locale, NFS o EBS) sia un sistema di storage dei dati compatibile con S3.
-
Per la scalabilità orizzontale supportiamo solo sistemi di storage dei dati compatibili con S3.
-
File effimeri
- Le compilazioni LaTeX devono essere eseguite su dischi locali veloci per prestazioni ottimali. L’output della compilazione non deve essere reso persistente né sottoposto a backup.
- Anche il buffering dei nuovi caricamenti di file e la creazione dei file zip dei progetti traggono vantaggio dall’uso di un disco locale.
Ti consigliamo vivamente di utilizzare un disco locale. L’uso di qualsiasi tipo di disco di rete (come NFS o EBS) può causare errori di compilazione imprevisti e altri problemi di prestazioni.
Git-bridge
Git-bridge è disponibile in Server Pro a partire dalla versione 4.0.1.
- un’istanza MongoDB centrale accessibile da tutte le istanze di Server Pro
- un’istanza Redis centrale accessibile da tutte le istanze di Server Pro
- un backend di storage centrale compatibile con S3 per i file dei progetti e della cronologia
- un disco locale su ogni istanza per i file effimeri
- un disco locale sull’istanza che ospita il container git-bridge per i dati di git-bridge
Requisiti del load balancer
-
Instradamento persistente, ad es. tramite un cookie
Questo requisito deriva dai seguenti componenti:
- La funzionalità di modifica in tempo reale di Server Pro utilizza i WebSocket con fallback al polling XHR. Ogni sessione di modifica ha uno stato locale lato server e le richieste di una data sessione di modifica devono sempre essere instradate alla stessa istanza di Server Pro. La funzionalità di collaborazione utilizza il Pub/Sub di Redis per condividere gli aggiornamenti tra più istanze di Server Pro.
- La compilazione LaTeX conserva localmente l’output e la cache di compilazione per prestazioni ottimali. Dopo l’invio di una richiesta di compilazione a un’istanza di Server Pro, le successive richieste di download del PDF/log devono essere instradate alla stessa istanza di Server Pro.
- Timeout delle richieste lunghi per supportare la compilazione di documenti LaTeX di grandi dimensioni
- Supporto WebSocket per prestazioni ottimali
- Dimensione del payload POST di 50MB
-
Il timeout keep-alive deve essere inferiore al timeout keep-alive di Server Pro
Il timeout keep-alive in Server Pro può essere configurato con la variabile d’ambiente
NGINX_KEEPALIVE_TIMEOUT. Il valore predefinito è 65s. Con il valore predefinito, un timeout keep-alive di 60s nel load balancer funziona. ConNGINX_KEEPALIVE_TIMEOUT=120, il load balancer potrebbe usare 115s. -
IP dei client
Imposta l’header di richiesta
X-Forwarded-Forsull’IP del client. -
Quando si effettua la terminazione SSL
Il load balancer deve aggiungere l’header di richiesta
X-Forwarded-Proto: https.
Configurazione HAProxy di esempio
Configurazione HAProxy di esempio
Configurazione di Server Pro
Segreti Le istanze di Server Pro devono condividere gli stessi segreti:WEB_API_PASSWORD(autenticazione web api)STAGING_PASSWORDeV1_HISTORY_PASSWORDcon lo stesso valore (autenticazione della cronologia)CRYPTO_RANDOM(per il cookie di sessione)OT_JWT_AUTH_KEY(autenticazione della cronologia)
/dev/urandom (256 bit casuali).
OVERLEAF_MONGO_URL (SHARELATEX_MONGO_URL per le versioni 4.x e precedenti) all’istanza MongoDB centrale.
Redis
Punta OVERLEAF_REDIS_HOST (SHARELATEX_REDIS_HOST per le versioni 4.x e precedenti) e REDIS_HOST all’istanza Redis centrale.
Storage compatibile con S3 per i file dei progetti e della cronologia
Consulta la documentazione sullo storage compatibile con S3 per i dettagli.
File effimeri
Il bind-mount predefinito di un SSD locale su /var/lib/overleaf (/var/lib/sharelatex per le versioni 4.x e precedenti) sarà sufficiente. Assicurati di puntare SANDBOXED_COMPILES_HOST_DIR al punto di mount sull’host.
Ti consigliamo vivamente di utilizzare un disco locale. L’uso di qualsiasi tipo di disco di rete (come NFS o EBS) può causare errori di compilazione imprevisti e altri problemi di prestazioni.
- Imposta
OVERLEAF_BEHIND_PROXY=true(SHARELATEX_BEHIND_PROXYper le versioni4.xe precedenti) per ottenere IP dei client accurati. - Imposta
TRUSTED_PROXY_IPSsull’IP del load balancer (è possibile specificare più CIDR, separati da una virgola).
Git-bridge è disponibile in Server Pro a partire dalla versione 4.0.1.
-
Imposta
GIT_BRIDGE_ENABLEDsu'true' -
Imposta
GIT_BRIDGE_HOSTsu<git-bridge container name>, ad es.git-bridge -
Imposta
GIT_BRIDGE_PORTsu8000 -
Imposta
V1_HISTORY_URLsuhttp://<server-pro sibling container name>:3100/api. Nota: questo è necessario solo sul container gemello del container git-bridge. Le altre istanze possono usare un URL localhost, che è il valore predefinito.
- Imposta
GIT_BRIDGE_API_BASE_URLsuhttp://<server-pro sibling container name>/api/v0, ad es.http://server-pro-ha-1/api/v0 - Imposta
GIT_BRIDGE_OAUTH2_SERVERsuhttp://<server-pro sibling container name>, ad es.http://server-pro-ha-1 - Imposta
GIT_BRIDGE_POSTBACK_BASE_URLsuhttp://<git-bridge container name>:8000, ad es.http://git-bridge:8000 - Imposta
GIT_BRIDGE_ROOT_DIRsul disco dei dati di git-bridge montato tramite bind-mount, ad es./data/git-bridge
Configurazione docker-compose.yml di esempio
Configurazione docker-compose.yml di esempio
La seguente configurazione mostra un setup autonomo. Perché la demo funzioni, devi fornire una chiave/certificato SSL valido e adattare
OVERLEAF_SITE_URL (SHARELATEX_SITE_URL per le versioni 4.x e precedenti). Per un setup reale, devi sostituire i segreti fittizi con segreti reali, come indicato nei commenti. Per un setup reale, devi spostare i singoli container su nodi dedicati e adattare gli indirizzi IP alla configurazione della tua rete locale.Hardware
Ti consigliamo di utilizzare le stesse specifiche hardware per tutte le istanze di Server Pro che partecipano alla scalabilità orizzontale. Si applicano le raccomandazioni generali sulle specifiche hardware per le istanze di Server Pro.Aggiornare Server Pro
Durante il processo di aggiornamento, Server Pro esegue automaticamente le migrazioni del database. Queste migrazioni non sono progettate per essere eseguite da più istanze in parallelo. Le migrazioni devono terminare prima che venga avviata l’applicazione web vera e propria. Puoi controllare nei log la presenza di una voceFinished migrations oppure attendere che l’applicazione accetti traffico.
La procedura di aggiornamento è la seguente:
- Pianifica una finestra di manutenzione
- Arresta tutte le istanze di Server Pro
- Esegui un backup coerente come descritto nella documentazione
- Avvia una singola istanza di Server Pro con la nuova versione
- Verifica che la nuova istanza funzioni come previsto
- Avvia le altre istanze con la nuova versione

