Inicio
» MS OFFICE
»
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
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.
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.
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.
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:
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
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:
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íntoma
Capa probable a inspeccionar
Acción útil
El público /healthcheckfracasa
Enrutamiento HAProxy, TLS o estado del backend
Pruebe 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 inactividad
Verifique timeout tunnelsi existe algún firewall o proxy entre el navegador y HAProxy.
Las URL generadas utilizan HTTP en lugar de HTTPS.
La edición de múltiples nodos se comporta de forma inconsistente.
Afinidad de documentos
Confirme 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ón
Verifique 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 backend
Realice 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.
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.