Home
» UFFICIO MS
»
Come eseguire il server di documenti ONLYOFFICE dietro un bilanciatore di carico HAProxy
Come eseguire il server di documenti ONLYOFFICE dietro un bilanciatore di carico HAProxy
La regola più importante è questa: posizionare ONLYOFFICE Document Server dietro HAProxy è semplice per un singolo backend, ma un cluster di editor multi-nodo richiede più di un semplice round-robin. La documentazione API attuale di ONLYOFFICE afferma che le richieste per lo stesso documento devono raggiungere lo stesso nodo del Document Server durante la modifica collaborativa. Per le integrazioni moderne, il meccanismo consigliato è il shardkeyparametro di query, che il bilanciatore di carico può utilizzare per l'affinità basata sul documento.
Se si dispone di un solo Document Server e si desidera utilizzare HAProxy per la terminazione HTTPS, un nome host pubblico stabile o controlli di integrità centralizzati, la configurazione è più semplice. Se si dispone di due o più nodi Document Server, è necessario utilizzare gli stessi principi di base del proxy, ma aggiungere il routing basato su shardkeyanziché presumere che il normale round-robin sia sufficiente.
HAProxy è un'interfaccia valida quando si desidera un URL pubblico https://docs.example.com, come ad esempio la terminazione TLS sul bilanciatore di carico, controlli di integrità attivi o più nodi Document Server dietro un singolo endpoint. È utile anche quando Nextcloud, ownCloud, DMS personalizzato o applicazione non devono mai connettersi direttamente a un singolo nodo Document Server.
Questa guida presuppone:
HAProxy può raggiungere ciascun Document Server tramite la rete interna.
Ciascun Document Server funziona già direttamente prima dell'introduzione del bilanciatore di carico.
Il nome host pubblico si risolve in HAProxy.
Il certificato TLS copre il nome host pubblico.
Se si utilizzano più nodi, questi vengono distribuiti come un'architettura ONLYOFFICE multi-server supportata, anziché come server autonomi indipendenti che condividono semplicemente un bilanciatore di carico.
Passaggio 1: Verificare ogni Document Server prima di aggiungere HAProxy
Non iniziare dal bilanciatore di carico. Prima verifica che ogni backend sia integro dall'host HAProxy. ONLYOFFICE documenta /healthcheckcome endpoint per il controllo della disponibilità dell'editor. Un server integro restituisce true; il controllo copre le dipendenze principali come il database, il message broker, la connessione Redis e lo storage.
Prima di configurare il bilanciamento del carico, verificate ogni backend direttamente dall'host HAProxy. Un bilanciatore di carico non può compensare un nodo Document Server non funzionante.
Se uno dei backend non funziona, è necessario innanzitutto risolvere il problema relativo a quel nodo. Le cause più comuni includono regole del firewall, una porta interna errata, servizi del server documenti non in esecuzione o servizi di supporto non disponibili.
Passaggio 2: Impostare la modalità HTTP e i timeout che tollerano le connessioni dell'editor.
ONLYOFFICE è un'applicazione HTTP e utilizza connessioni WebSocket a lunga durata durante la modifica. HAProxy può fungere da proxy per i WebSocket automaticamente dopo l'aggiornamento a HTTP, ma la sua politica di timeout rimane comunque importante. La documentazione di HAProxy raccomanda un timeout tunnelvalore per le connessioni WebSocket aggiornate.
Il timeout del tunnel WebSocket dovrebbe essere più lungo dei normali timeout delle richieste, in modo che le sessioni di modifica collaborativa inattive non vengano interrotte prematuramente.
Un timeout del tunnel di un'ora è solo un esempio, non un requisito universale. Scegli un valore adatto al comportamento di modifica, alle politiche di sicurezza e ai limiti delle risorse della tua organizzazione. Se gli editor si disconnettono a intervalli molto regolari, confronta tale intervallo con i timeout di inattività di HAProxy e di eventuali firewall o reverse proxy a monte.
Passaggio 3: Terminare HTTPS e preservare il contesto della richiesta originale
ONLYOFFICE richiede esplicitamente l'inoltro delle intestazioni quando viene eseguito dietro un proxy. In particolare, X-Forwarded-Protoindica a Document Server se il client originale ha utilizzato HTTP o HTTPS, mentre X-Forwarded-Hostconserva il nome host richiesto dal client.
Un'interfaccia utente pulita per HAProxy potrebbe apparire così:
Termina la connessione TLS su HAProxy e inoltra lo schema e l'host originali in modo che ONLYOFFICE possa generare URL esterni corretti.
Normalmente, nella moderna modalità HTTP di HAProxy, non è necessario ricreare manualmente le regole in stile NGINX Upgradee Connectionle regole di intestazione. HAProxy riconosce l'aggiornamento da HTTP a WebSocket e commuta la connessione in modalità tunnel. L'importante è non inserire regole che annullino o interrompano la richiesta di aggiornamento.
Per visualizzare l'indirizzo IP del client, aggiungilo option forwardfornel backend. Questo genera X-Forwarded-Forun'intestazione dall'indirizzo sorgente del client.
Passaggio 4: Aggiungi i controlli di integrità e scegli la regola di bilanciamento corretta
Server di documenti singolo
Se HAProxy funge da front-end per un Document Server, il back-end può essere semplice:
backend onlyoffice_docs
mode http
option forwardfor
option httpchk GET /healthcheck
http-check expect status 200
timeout tunnel 1h
server ds1 10.0.10.21:80 check
In questa configurazione, HAProxy funge principalmente da proxy inverso, endpoint TLS e controllo di integrità.
Nodi multipli del server di documenti
Per una vera implementazione multi-nodo, non affidatevi al semplice round-robin per la modifica collaborativa. La documentazione attuale di ONLYOFFICE afferma che tutte le richieste relative allo stesso documento devono raggiungere lo stesso server. Le richieste di modifica dal browser al server includono automaticamente una chiave di partizionamento e le applicazioni dovrebbero aggiungerla ?shardkey=<document-key>alle richieste di comando, conversione e Document Builder laddove documentato.
HAProxy supporta l'hashing sui parametri di query URL, quindi un backend adatto per l'API standard ONLYOFFICE Docs è:
backend onlyoffice_docs
mode http
option forwardfor
option httpchk GET /healthcheck
http-check expect status 200
timeout tunnel 1h
balance url_param shardkey
server ds1 10.0.10.21:80 check
server ds2 10.0.10.22:80 check
I controlli di integrità impediscono ai nodi guasti di entrare in rotazione, mentre l'affinità basata sui documenti è necessaria per la modifica collaborativa multi-nodo. Utilizzare shardkeyil routing basato su per l'API standard di Docs anziché il semplice round-robin.
L'algoritmo di HAProxy url_paramesegue l'hashing del parametro della stringa di query selezionato. Se tale parametro è assente, HAProxy ricorre al normale comportamento di bilanciamento del carico. Per questo motivo è particolarmente importante che la tua integrazione invii la chiave di partizionamento nelle richieste in cui ONLYOFFICE lo raccomanda.
WOPI è diverso. ONLYOFFICE afferma che le integrazioni WOPI utilizzano il WOPISrcparametro di query per lo stesso scopo di instradamento. Non copiare la balance url_param shardkeyriga senza modifiche in un progetto WOPI e presumere che fornisca l'affinità richiesta.
Convalida e ricarica HAProxy in modo sicuro
Prima di ricaricare il servizio, verificare la configurazione:
sudo haproxy -c -f /etc/haproxy/haproxy.cfg
Ricarica il caricatore solo dopo che la convalida della sintassi è andata a buon fine:
sudo systemctl reload haproxy
sudo systemctl status haproxy
Se la tua distribuzione utilizza un gestore di servizi o un percorso di configurazione diverso, adatta di conseguenza i comandi. Un ricaricamento è preferibile a un riavvio forzato non necessario quando il pacchetto HAProxy supporta il ricaricamento graduale della configurazione.
Esegui i test tramite l'URL pubblico, non solo dall'interno della rete di backend
Ora verifica quali risultati saranno effettivamente raggiunti dagli utenti e dalla tua piattaforma di gestione documentale:
Infine, apri un documento reale tramite l'applicazione di integrazione. Un controllo di integrità dimostra solo che l'endpoint del server dei documenti è pronto; non verifica che gli URL di callback, la configurazione JWT, i download dei documenti, i callback di salvataggio o l'affinità multi-nodo siano tutti corretti.
Cosa controllare quando l'editor si carica ma si disconnette o non riesce a salvare
Sintomo
Strato probabile da ispezionare
Azione utile
/healthcheckFallimenti pubblici
Routing HAProxy, TLS o stato di salute del backend
Testa ciascun backend direttamente, quindi controlla lo stato e i log di HAProxy.
La finestra dell'editor si carica, poi si disconnette.
Percorso WebSocket o timeout di inattività
Verifica timeout tunnella presenza di eventuali firewall o proxy tra il browser e HAProxy.
La modifica multi-nodo si comporta in modo incoerente
Affinità del documento
Conferma shardkeyche sia presente e che HAProxy lo abbia sottoposto ad hashing in modo coerente.
Il controllo dello stato di salute funziona, ma il salvataggio fallisce.
Callback di integrazione/percorso di rete
Verificare che Document Server sia in grado di raggiungere gli URL di callback e dei documenti dell'applicazione di archiviazione.
Alcuni nodi escono ripetutamente dalla rotazione
Controllo delle dipendenze o dello stato di salute del backend
Eseguire una query /healthcheckdirettamente sul nodo interessato e analizzare i log del Document Server.
Hai bisogno di sessioni persistenti?
La tradizionale persistenza dell'indirizzo IP di origine non è la soluzione predefinita migliore per ONLYOFFICE. Più utenti che modificano lo stesso file possono avere indirizzi IP client diversi e un singolo utente può aprire documenti diversi che non devono necessariamente risiedere sullo stesso nodo. L'affinità basata sul documento e sulla chiave di sharding di ONLYOFFICE è più precisa perché la chiave di routing rappresenta il documento in fase di modifica anziché l'indirizzo di rete dell'utente.
La stessa distinzione spiega perché una semplice sessione persistente basata su cookie non dovrebbe essere considerata un sostituto del comportamento di routing documentato da ONLYOFFICE. Utilizza la chiave di partizionamento documentata dell'applicazione quando crei un'implementazione multi-nodo dell'API Docs.
Lista di controllo della configurazione finale
Ogni Document Server restituisce trueun valore /healthcheckprecedente all'aggiunta ad HAProxy.
HAProxy funziona in modalità HTTP sia per il frontend che per il backend di ONLYOFFICE.
La connessione HTTPS viene terminata con un certificato valido per il nome host pubblico del server di documenti.
Il timeout del tunnel WebSocket è sufficientemente lungo per sessioni di editing reali.
I controlli di integrità del backend rimuovono i nodi guasti dal servizio.
Il traffico API Docs multi-nodo utilizza shardkeyl'affinità basata su , non il semplice round-robin.
Le implementazioni WOPI utilizzano il routing appropriato a WOPISrc.
Il controllo sanitario pubblico funziona e, grazie all'integrazione, è possibile aprire, modificare e salvare un documento reale.
Per un singolo Document Server, HAProxy funge principalmente da reverse proxy e da livello TLS. Per più nodi Document Server, la differenza decisiva risiede nel routing consapevole dei documenti. È quindi fondamentale progettare il proxy in base a questo requisito, per poi aggiungere controlli di integrità, HTTPS e ottimizzazione dei timeout.