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.

Gli esempi seguenti sono stati verificati rispetto alla documentazione attuale del proxy ONLYOFFICE , alla documentazione della chiave di partizionamento ONLYOFFICE e alle linee guida attuali di HAProxy WebSocket .

Quando questa configurazione è adatta

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.

curl -sS http://10.0.10.21/healthcheck
curl -sS http://10.0.10.22/healthcheck

Risultato atteso:

true
true
Terminale Ubuntu che mostra i controlli di integrità su due nodi backend di ONLYOFFICE Document Server che restituiscono HTTP 200 e true
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.

Un punto di riferimento pratico è:

global
    log /dev/log local0
    log /dev/log local1 notice
    daemon
    maxconn 4096

defaults
    log global
    mode http
    option httplog
    option dontlognull
    timeout connect 5s
    timeout client 60s
    timeout server 60s
    timeout tunnel 1h
Configurazione di HAProxy in un terminale che mostra la modalità HTTP, i timeout di connessione client e server e un timeout del tunnel di un'ora per i WebSocket.
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ì:

frontend onlyoffice_http
    bind *:80
    mode http
    http-request redirect scheme https code 301

frontend onlyoffice_https
    bind *:443 ssl crt /etc/haproxy/certs/docs.example.com.pem
    mode http
    option httplog

    http-request set-header X-Forwarded-Proto https
    http-request set-header X-Forwarded-Host %[req.hdr(Host)]

    default_backend onlyoffice_docs
Configurazione del frontend di HAProxy che mostra HTTPS sulla porta 443, X-Forwarded-Proto, X-Forwarded-Host, X-Forwarded-For e il backend ONLYOFFICE.
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
Configurazione del backend HAProxy con due nodi ONLYOFFICE, controlli di integrità, timeout e una nota che la modifica collaborativa multi-nodo richiede l'affinità consapevole del documento
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:

curl -sS https://docs.example.com/healthcheck

Il corpo previsto è:

true

Successivamente, verifica il certificato TLS:

openssl s_client -connect docs.example.com:443   -servername docs.example.com </dev/null 2>/dev/null   | openssl x509 -noout -subject -issuer -dates

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

SintomoStrato probabile da ispezionareAzione utile
/healthcheckFallimenti pubbliciRouting HAProxy, TLS o stato di salute del backendTesta 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.
Gli URL generati utilizzano HTTP anziché HTTPSIntestazioni inoltrateVerifica X-Forwarded-Proto: httpse X-Forwarded-Host.
La modifica multi-nodo si comporta in modo incoerenteAffinità del documentoConferma 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 reteVerificare che Document Server sia in grado di raggiungere gli URL di callback e dei documenti dell'applicazione di archiviazione.
Alcuni nodi escono ripetutamente dalla rotazioneControllo delle dipendenze o dello stato di salute del backendEseguire 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.
  • X-Forwarded-Protoe X-Forwarded-Hostvengono inoltrati correttamente.
  • 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.

Lascia un commento

Risolvi il problema di copia e incolla tra app locali in Collabora Online.

Risolvi il problema di copia e incolla tra app locali in Collabora Online.

Risolvere i problemi di copia e incolla di Collabora Online con le app locali testando le scorciatoie da tastiera, le autorizzazioni degli appunti del browser, HTTPS, le policy iframe e i formati dei contenuti.

Come eliminare i caratteri sfocati in ONLYOFFICE Desktop su Linux: una guida pratica

Come eliminare i caratteri sfocati in ONLYOFFICE Desktop su Linux: una guida pratica

Risolvi il problema del testo sfocato negli editor desktop di ONLYOFFICE su Linux verificando, in un ordine sicuro, la scalatura dello schermo, la scalatura dell'interfaccia dell'applicazione, la disponibilità dei caratteri e l'ambito di rendering.

Come limitare la stampa e il download in ONLYOFFICE

Come limitare la stampa e il download in ONLYOFFICE

Scopri come bloccare la stampa e il download nelle integrazioni di ONLYOFFICE Workspace, DocSpace o Docs e verifica quali controlli si applicano a ciascun metodo di condivisione.

Come risolvere l'errore 502 Bad Gateway del server documenti ONLYOFFICE dietro Nginx

Come risolvere l'errore 502 Bad Gateway del server documenti ONLYOFFICE dietro Nginx

Risolvere gli errori 502 del server documenti ONLYOFFICE dietro Nginx. Verificare lo stato del servizio, i log, le porte upstream, le intestazioni inoltrate, i WebSocket e la rete Docker.

Risolvere i problemi di timeout di connessione dell'app mobile ONLYOFFICE a un server self-hosted

Risolvere i problemi di timeout di connessione dell'app mobile ONLYOFFICE a un server self-hosted

Risolvere i problemi di timeout dei documenti ONLYOFFICE su un server self-hosted verificando l'URL del portale o WebDAV corretto, l'accesso alla rete, HTTPS, le credenziali e il routing del server.

Come modificare il modello di documento predefinito in LibreOffice Writer

Come modificare il modello di documento predefinito in LibreOffice Writer

Imposta un modello personalizzato di LibreOffice Writer come predefinito, aggiornalo o reimpostalo e verifica che i nuovi documenti utilizzino gli stili e il layout di pagina che preferisci.

Risolvere l'errore "Download non riuscito" durante l'esportazione di un PDF da ONLYOFFICE

Risolvere l'errore "Download non riuscito" durante l'esportazione di un PDF da ONLYOFFICE

Risolvi i problemi di esportazione PDF di ONLYOFFICE separando i problemi di conversione, di download dal browser e del server, quindi verifica che il PDF salvato si apra e mantenga il suo layout.

Come disinstallare completamente ONLYOFFICE Document Server da Linux

Come disinstallare completamente ONLYOFFICE Document Server da Linux

Rimuovere ONLYOFFICE Document Server da Linux in modo sicuro. Seguire le istruzioni relative a pacchetti, Docker, Snap e Kubernetes, preservare i dati e verificare i servizi rimanenti.

How to Configure LDAP / Active Directory Sync in ONLYOFFICE

How to Configure LDAP / Active Directory Sync in ONLYOFFICE

Configure LDAP or Active Directory sync in ONLYOFFICE Workspace with secure connection settings, user and group filters, attribute mapping, admin rights, scheduled sync, and practical verification checks.

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

Posiziona ONLYOFFICE Document Server dietro HAProxy con terminazione TLS, intestazioni inoltrate, controlli di integrità, timeout sicuri per WebSocket e routing consapevole dei documenti per implementazioni multi-nodo.