Cómo ejecutar ONLYOFFICE Document Server detrás de un balanceador de carga HAProxy

La regla más importante es la siguiente: implementar ONLYOFFICE Document Server detrás de HAProxy es sencillo para un único servidor backend, pero un clúster de editores con varios nodos requiere más que un simple round-robin. La documentación actual de la API de ONLYOFFICE indica que las solicitudes del mismo documento deben llegar al mismo nodo de Document Server durante la edición colaborativa. Para integraciones modernas, el mecanismo recomendado es el shardkeyparámetro de consulta, que el balanceador de carga puede usar para la afinidad con reconocimiento de documentos.

Si solo dispone de un servidor de documentos y desea utilizar HAProxy para la terminación HTTPS, un nombre de host público estable o comprobaciones de estado centralizadas, la configuración es más sencilla. Si dispone de dos o más nodos de servidor de documentos, utilice los mismos principios básicos de proxy, pero añada enrutamiento basado en shardkeyen lugar de asumir que el round-robin ordinario es suficiente.

Los ejemplos que aparecen a continuación se han comparado con la documentación actual del proxy de ONLYOFFICE , la documentación de la clave de fragmentación de ONLYOFFICE y la guía actual de HAProxy WebSocket .

Cuando esta configuración sea adecuada

HAProxy es una interfaz sensata cuando se requiere una URL pública https://docs.example.com, terminación TLS en el balanceador de carga, comprobaciones de estado activas o varios nodos de servidor de documentos detrás de un único punto final. También resulta útil cuando Nextcloud, ownCloud, DMS personalizado o aplicación no debe conectarse directamente a un nodo individual del servidor de documentos.

Esta guía parte de la base de:

  • HAProxy puede acceder a cada servidor de documentos a través de la red interna.
  • Cada servidor de documentos ya funciona correctamente antes de que se introduzca el balanceador de carga.
  • El nombre de host público se resuelve en HAProxy.
  • Su certificado TLS cubre el nombre de host público.
  • Si ejecuta varios nodos, estos se implementan como una arquitectura ONLYOFFICE multiservidor compatible, en lugar de servidores independientes no relacionados que simplemente comparten un balanceador de carga.

Paso 1: Verifique cada servidor de documentos antes de agregar HAProxy.

No comience con el balanceador de carga. Primero, verifique que cada servidor backend esté en buen estado desde el host HAProxy. ONLYOFFICE documenta /healthcheckcomo el punto final para verificar la disponibilidad del editor. Un servidor en buen estado devuelve true; la verificación cubre dependencias principales como la base de datos, el agente de mensajes, la conexión a Redis y el almacenamiento.

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

Resultado esperado:

true
true
Terminal de Ubuntu que muestra comprobaciones de estado en dos nodos backend del servidor de documentos ONLYOFFICE que devuelven HTTP 200 y true.
Antes de configurar el balanceo de carga, compruebe cada servidor backend directamente desde el host HAProxy. Un balanceador de carga no puede compensar un nodo del servidor de documentos que no funcione correctamente.

Si falla un servidor backend, solucione primero el problema en ese nodo. Las causas comunes incluyen reglas de firewall, un puerto interno incorrecto, servicios del servidor de documentos que no se están ejecutando o servicios de soporte no disponibles.

Paso 2: Configure el modo HTTP y los tiempos de espera que permitan conexiones de editor.

ONLYOFFICE es una aplicación HTTP que utiliza conexiones WebSocket de larga duración durante la edición. HAProxy puede gestionar automáticamente las conexiones WebSocket tras la actualización a HTTP, pero su política de tiempo de espera sigue siendo importante. La documentación de HAProxy recomienda un timeout tunnelvalor para las conexiones WebSocket actualizadas.

Un punto de partida práctico es:

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
Configuración de HAProxy en una terminal que muestra el modo HTTP, los tiempos de espera de conexión del cliente y del servidor, y un tiempo de espera de túnel de una hora para WebSockets.
El tiempo de espera del túnel WebSocket debe ser mayor que el tiempo de espera de las solicitudes habituales para que las sesiones de edición colaborativa inactivas no se interrumpan prematuramente.

Un tiempo de espera de túnel de una hora es solo un ejemplo, no un requisito universal. Elija un valor que se ajuste al comportamiento de edición, la política de seguridad y los límites de recursos de su organización. Si los editores se desconectan con mucha frecuencia, compare ese intervalo con los tiempos de espera por inactividad de HAProxy y de cualquier firewall o proxy inverso.

Paso 3: Finalizar HTTPS y conservar el contexto de la solicitud original.

ONLYOFFICE requiere explícitamente el reenvío de encabezados cuando se ejecuta detrás de un proxy. En particular, X-Forwarded-Protole indica al servidor de documentos si el cliente original usó HTTP o HTTPS, mientras que X-Forwarded-Hostconserva el nombre de host solicitado por el cliente.

Una interfaz limpia de HAProxy puede tener este aspecto:

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
Configuración del frontend de HAProxy que muestra HTTPS en el puerto 443, X-Forwarded-Proto, X-Forwarded-Host, X-Forwarded-For y el backend de ONLYOFFICE.
Finaliza la conexión TLS en HAProxy y reenvía el esquema y el host originales para que ONLYOFFICE pueda generar URL externas correctas.

Normalmente, en el modo HTTP moderno de HAProxy, no es necesario recrear manualmente las reglas de encabezado Upgradey estilo NGINX Connection. HAProxy reconoce la actualización de HTTP a WebSocket y cambia la conexión a modo túnel. Lo importante es no insertar reglas que eliminen o interrumpan la solicitud de actualización.

Para que el cliente pueda ver su dirección IP, agréguelo option forwardforen el backend. Esto genera una X-Forwarded-Forcabecera a partir de la dirección de origen del cliente.

Paso 4: Añada comprobaciones de salud y elija la regla de equilibrio adecuada.

Servidor único de documentos

Si HAProxy actúa como servidor de documentos, el backend puede ser sencillo:

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

En este diseño, HAProxy funciona principalmente como un proxy inverso, un punto final TLS y un control de estado.

Múltiples nodos de servidor de documentos

Para una implementación real de varios nodos, no confíe en el simple algoritmo round-robin para la edición colaborativa. La documentación actual de ONLYOFFICE indica que todas las solicitudes pertenecientes al mismo documento deben llegar al mismo servidor. Las solicitudes del editor del navegador al servidor incluyen automáticamente una clave de fragmentación, y las aplicaciones deben agregarla ?shardkey=<document-key>a las solicitudes de comandos, conversión y del Generador de documentos donde esté documentado.

HAProxy admite el uso de hash en un parámetro de consulta de URL, por lo que un backend adecuado para la API estándar de ONLYOFFICE Docs es:

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
Configuración del backend de HAProxy con dos nodos ONLYOFFICE, comprobaciones de estado, tiempos de espera y una nota que indica que la edición colaborativa multinodo requiere afinidad con reconocimiento de documentos.
Las comprobaciones de estado impiden que los nodos con fallos entren en rotación, mientras que la afinidad con reconocimiento de documentos es necesaria para la edición colaborativa en varios nodos. Utilice shardkeyel enrutamiento basado en para la API estándar de Docs en lugar del simple round-robin.

El algoritmo de HAProxy url_paramaplica un hash al parámetro de la cadena de consulta seleccionado. Si dicho parámetro no está presente, HAProxy recurre al comportamiento habitual de balanceo de carga. Por ello, es fundamental que su integración envíe la clave de fragmentación en las solicitudes donde ONLYOFFICE lo recomienda.

WOPI es diferente. ONLYOFFICE indica que las integraciones de WOPI utilizan el WOPISrcparámetro de consulta para el mismo propósito de enrutamiento. No copie la balance url_param shardkeylínea sin modificar en un diseño de WOPI y asuma que proporciona la afinidad requerida.

Validar y recargar HAProxy de forma segura

Antes de recargar el servicio, valide la configuración:

sudo haproxy -c -f /etc/haproxy/haproxy.cfg

Recargue la aplicación solo después de que la validación de sintaxis sea exitosa:

sudo systemctl reload haproxy
sudo systemctl status haproxy

Si su distribución utiliza un gestor de servicios o una ruta de configuración diferente, adapte los comandos en consecuencia. Es preferible recargar la configuración a reiniciarla forzosamente si su paquete HAProxy admite recargas de configuración controladas.

Realiza pruebas a través de la URL pública, no solo desde dentro de la red de backend.

Ahora, comprueba qué es lo que realmente alcanzarán los usuarios y tu plataforma de gestión documental:

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

El cuerpo esperado es:

true

A continuación, verifique el certificado TLS:

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

Finalmente, abra un documento real a través de la aplicación de integración. Una comprobación de estado solo demuestra que el punto final del servidor de documentos está listo; no demuestra que las URL de devolución de llamada, la configuración JWT, las descargas de documentos, las devoluciones de llamada para guardar o la afinidad entre varios nodos sean correctas.

Qué comprobar cuando el editor se carga pero se desconecta o no guarda los cambios.

SíntomaCapa probable a inspeccionarAcción útil
El público /healthcheckfracasaEnrutamiento HAProxy, TLS o estado del backendPruebe cada backend directamente y, a continuación, inspeccione el estado y los registros de HAProxy.
El marco del editor se carga y luego se desconecta.Ruta de WebSocket o tiempo de espera por inactividadVerifique timeout tunnelsi existe algún firewall o proxy entre el navegador y HAProxy.
Las URL generadas utilizan HTTP en lugar de HTTPS.Encabezados reenviadosVerificar X-Forwarded-Proto: httpsy X-Forwarded-Host.
La edición de múltiples nodos se comporta de forma inconsistente.Afinidad de documentosConfirme shardkeyque está presente y que HAProxy lo cifra de forma consistente.
La comprobación de estado funciona, pero el guardado falla.Ruta de devolución de llamada/red de integraciónVerifique que Document Server pueda acceder a la función de devolución de llamada de la aplicación de almacenamiento y a las URL de los documentos.
Algunos nodos abandonan la rotación repetidamente.Verificación de dependencia o estado del backendRealice una consulta /healthcheckdirectamente en el nodo afectado e inspeccione los registros de su servidor de documentos.

¿Necesitas sesiones pegajosas?

La persistencia de IP de origen tradicional no es la mejor solución predeterminada para ONLYOFFICE. Varios usuarios que editan el mismo archivo pueden tener direcciones IP de cliente diferentes, y un mismo usuario puede abrir distintos documentos que no necesariamente residen en el mismo nodo. La afinidad basada en el documento y en la clave de fragmentación de ONLYOFFICE es más precisa, ya que la clave de enrutamiento representa el documento que se está editando, en lugar de la dirección de red del usuario.

La misma distinción explica por qué una sesión persistente basada en cookies no debe considerarse un sustituto del comportamiento de enrutamiento documentado por ONLYOFFICE. Utilice la clave de fragmentación documentada de la aplicación al crear una implementación de la API Docs en varios nodos.

Lista de verificación de configuración final

  • Cada servidor de documentos regresa truedesde /healthcheckantes de ser agregado a HAProxy.
  • HAProxy se ejecuta en modo HTTP tanto para el frontend como para el backend de ONLYOFFICE.
  • La conexión HTTPS finaliza con un certificado válido para el nombre de host público del servidor de documentos.
  • X-Forwarded-Protoy X-Forwarded-Hostse envían correctamente.
  • El tiempo de espera del túnel WebSocket es lo suficientemente largo para sesiones de edición reales.
  • Las comprobaciones de estado del servidor eliminan los nodos que han fallado del servicio.
  • El tráfico de la API de Docs multinodo utiliza shardkeyafinidad basada en , no solo round robin simple.
  • Las implementaciones de WOPI utilizan el enrutamiento apropiado para WOPISrc.
  • El control de salud pública funciona, y un documento real puede abrirse, editarse y guardarse a través de la integración.

Para un servidor de documentos, HAProxy funciona principalmente como un proxy inverso limpio y una capa TLS. Para varios nodos de servidor de documentos, la diferencia crucial radica en el enrutamiento con reconocimiento de documentos. Primero, configure el proxy en función de este requisito y, a continuación, añada comprobaciones de estado, HTTPS y ajustes de tiempo de espera.

Dejar un comentario

Solucionar el problema de copiar y pegar en Collabora Online entre aplicaciones locales.

Solucionar el problema de copiar y pegar en Collabora Online entre aplicaciones locales.

Solucione los problemas de copiar y pegar de Collabora Online con aplicaciones locales probando los atajos de teclado, los permisos del portapapeles del navegador, HTTPS, las políticas de iframe y los formatos de contenido.

Solucionar problemas de fuentes borrosas en ONLYOFFICE Desktop para Linux: una guía práctica

Solucionar problemas de fuentes borrosas en ONLYOFFICE Desktop para Linux: una guía práctica

Solucione el problema del texto borroso en los editores de escritorio de ONLYOFFICE en Linux comprobando el escalado de la pantalla, el escalado de la interfaz de la aplicación, la disponibilidad de la fuente y el ámbito de representación en un orden seguro.

Cómo restringir la impresión y la descarga en ONLYOFFICE

Cómo restringir la impresión y la descarga en ONLYOFFICE

Aprenda cómo bloquear la impresión y las descargas en las integraciones de ONLYOFFICE Workspace, DocSpace o Docs, y verifique qué controles se aplican a cada método de uso compartido.

Cómo solucionar el error 502 Bad Gateway del servidor de documentos ONLYOFFICE detrás de Nginx

Cómo solucionar el error 502 Bad Gateway del servidor de documentos ONLYOFFICE detrás de Nginx

Solucione los errores 502 del servidor de documentos ONLYOFFICE detrás de Nginx. Verifique el estado del servicio, los registros, los puertos ascendentes, los encabezados reenviados, los WebSockets y la red de Docker.

Solucionar los tiempos de espera de conexión de la aplicación móvil ONLYOFFICE a un servidor autohospedado

Solucionar los tiempos de espera de conexión de la aplicación móvil ONLYOFFICE a un servidor autohospedado

Solucione los problemas de tiempo de espera de ONLYOFFICE Documents en un servidor autohospedado comprobando la URL correcta del portal o WebDAV, el acceso a la red, HTTPS, las credenciales y el enrutamiento del servidor.

Cómo cambiar la plantilla de documento predeterminada en LibreOffice Writer

Cómo cambiar la plantilla de documento predeterminada en LibreOffice Writer

Establezca una plantilla personalizada de LibreOffice Writer como predeterminada, actualícela o restablézcala y verifique que los nuevos documentos utilicen sus estilos y diseño de página preferidos.

Solucionar el error “Error de descarga” al exportar un PDF desde ONLYOFFICE

Solucionar el error “Error de descarga” al exportar un PDF desde ONLYOFFICE

Solucione los problemas de exportación de PDF de ONLYOFFICE separando los problemas de conversión, descarga del navegador y servidor, y luego verifique que el PDF guardado se abra y conserve su diseño.

Cómo desinstalar completamente ONLYOFFICE Document Server de Linux

Cómo desinstalar completamente ONLYOFFICE Document Server de Linux

Elimine ONLYOFFICE Document Server de Linux de forma segura. Siga los pasos para la instalación del paquete, Docker, Snap y Kubernetes, conserve los datos y verifique los servicios restantes.

Cómo configurar la sincronización LDAP/Active Directory en ONLYOFFICE

Cómo configurar la sincronización LDAP/Active Directory en ONLYOFFICE

Configure la sincronización con LDAP o Active Directory en ONLYOFFICE Workspace con ajustes de conexión segura, filtros de usuarios y grupos, asignación de atributos, derechos de administrador, sincronización programada y comprobaciones de verificación prácticas.

Cómo ejecutar ONLYOFFICE Document Server detrás de un balanceador de carga HAProxy

Cómo ejecutar ONLYOFFICE Document Server detrás de un balanceador de carga HAProxy

Instale ONLYOFFICE Document Server detrás de HAProxy con terminación TLS, encabezados reenviados, comprobaciones de estado, tiempos de espera seguros para WebSocket y enrutamiento con reconocimiento de documentos para implementaciones de varios nodos.