Skip to main content
Ayakaleaf Pro admite el escalado horizontal. Hemos probado y verificado que funciona correctamente con varias réplicas.
Este documento enumera los requisitos técnicos y ofrece pautas para ejecutar Ayakaleaf Pro en más de un nodo.
A partir de Server CE/Server Pro 5.0.3, las variables de entorno se han renombrado de SHARELATEX_* a OVERLEAF_*.Si usas una versión 4.x (o anterior), asegúrate de que las variables tengan el prefijo correspondiente (por ejemplo, SHARELATEX_SITE_URL en lugar de OVERLEAF_SITE_URL)
Configurar el escalado horizontal requiere un esfuerzo considerable. Te aconsejamos plantearte el escalado horizontal solo al alcanzar cierta escala. Por ejemplo, se ha configurado con éxito una instalación de Server Pro para 1.000 usuarios en total utilizando un único servidor con dos procesadores de 4 núcleos y 32 GB de memoria del sistema. Consulta la documentación de requisitos de hardware para ver las recomendaciones. Un despliegue de Server Pro con escalado horizontal implica un conjunto de componentes externos, como un balanceador de carga y un backend de almacenamiento compatible con S3. Podemos ayudar a solucionar errores en los contenedores de Server Pro que puedan deberse a una configuración incorrecta y ofrecer consejos generales basados en este documento. Lamentablemente, no podemos ofrecer asistencia para configurar aplicaciones o sistemas de terceros. La resolución de problemas técnicos específicos de tu hardware o software para proporcionar los componentes externos no está cubierta por nuestras condiciones de soporte.

Requisitos

Almacenamiento de datos central y externo

El almacenamiento de datos en Server Pro puede dividirse en cuatro almacenes de datos:
  • MongoDB
    • La mayoría de los datos se guardan en MongoDB.
    • Admitimos tanto una instancia local como una instancia externa, como MongoDB Atlas (un servicio de MongoDB totalmente gestionado que se ejecuta sobre la infraestructura de AWS).
    Nota: Lamentablemente, por el momento no hay soporte oficial para bases de datos compatibles con MongoDB como CosmoDB/DocumentDB, ya que no hemos probado Server Pro con ellas. Aunque puede ser posible desplegar Server Pro con bases de datos compatibles, solo admitimos oficialmente los despliegues que usan MongoDB.
  • Redis
    • Redis almacena datos temporales, como las actualizaciones pendientes de documentos antes de volcarlas en MongoDB.
    • Redis se usa para comunicar las actualizaciones de documentos entre los distintos servicios y para notificar al editor los cambios de estado de un proyecto determinado.
    • Redis se usa para almacenar las sesiones de usuario.
    • Admitimos tanto una instancia local como una instancia externa.
    Nota: Lamentablemente, por el momento no hay soporte oficial para almacenes clave/valor compatibles con Redis como KeyDB/Valkey, ya que no hemos probado Server Pro con ellos. Aunque puede ser posible desplegar Server Pro con almacenes compatibles, solo admitimos oficialmente los despliegues que usan Redis.
  • Archivos de proyecto y archivos de historial
    • Los archivos de proyecto no editables se almacenan fuera de MongoDB. El nuevo sistema de historial de proyectos (a partir de Server Pro 3.5) también almacena el historial fuera de MongoDB.
    • Para instancias únicas pequeñas, admitimos tanto un sistema de archivos local (que puede estar respaldado por un SSD local, NFS o EBS) como un sistema de almacenamiento de datos compatible con S3.
    • Para el escalado horizontal, solo admitimos sistemas de almacenamiento de datos compatibles con S3.
    Importante: NFS/Amazon EFS/Amazon EBS no son compatibles con el escalado horizontal. Consulta la sección de requisitos de almacenamiento de hardware sobre el escalado del almacenamiento en Server Pro para más detalles.
  • Archivos efímeros
    • Las compilaciones de LaTeX deben ejecutarse en discos locales rápidos para un rendimiento óptimo. No es necesario conservar ni hacer copias de seguridad del resultado de la compilación.
    • El almacenamiento en búfer de las nuevas subidas de archivos y la creación de archivos zip de proyectos también se benefician del uso de un disco local.
Recomendamos encarecidamente usar un disco local. Usar cualquier tipo de disco en red (como NFS o EBS) puede provocar errores de compilación inesperados y otros problemas de rendimiento.

Git-bridge

Git-bridge está disponible en Server Pro a partir de la versión 4.0.1.
Los repositorios git se almacenan localmente en disco. No hay opciones de replicación disponibles. Git-bridge debe ejecutarse como instancia única (singleton). Para un rendimiento óptimo, recomendamos usar un disco local para los datos de git-bridge. Se deben hacer copias de seguridad periódicas del disco de datos de git-bridge. Para el almacenamiento de datos con escalado horizontal, necesitas:
  • una instancia central de MongoDB accesible desde todas las instancias de Server Pro
  • una instancia central de Redis accesible desde todas las instancias de Server Pro
  • un backend central de almacenamiento compatible con S3 para los archivos de proyecto y de historial
  • un disco local en cada instancia para los archivos efímeros
  • un disco local en la instancia que aloja el contenedor de git-bridge para los datos de git-bridge

Requisitos del balanceador de carga

  • Enrutamiento persistente, por ejemplo mediante una cookie Este requisito se debe a los siguientes componentes:
    • La edición en tiempo real de Server Pro utiliza WebSockets, con XHR polling como alternativa. Cada sesión de edición tiene un estado local en el lado del servidor, y las solicitudes de una sesión de edición determinada siempre deben enrutarse a la misma instancia de Server Pro. La funcionalidad de colaboración utiliza Pub/Sub de Redis para compartir actualizaciones entre varias instancias de Server Pro.
    • La compilación de LaTeX mantiene localmente la salida y la caché de compilación para un rendimiento óptimo. Tras enviar una solicitud de compilación a una instancia de Server Pro, las solicitudes posteriores de descarga del PDF o del log deben enrutarse a la misma instancia de Server Pro.
  • Tiempos de espera de solicitud largos para permitir la compilación de documentos LaTeX grandes
  • Compatibilidad con WebSocket para un rendimiento óptimo
  • Tamaño de carga útil POST de 50 MB
  • El tiempo de espera keep-alive debe ser inferior al tiempo de espera keep-alive de Server Pro El tiempo de espera keep-alive de Server Pro puede configurarse mediante la variable de entorno NGINX_KEEPALIVE_TIMEOUT. El valor predeterminado es 65 s. Con el valor predeterminado, funciona un tiempo de espera keep-alive de 60 s en el balanceador de carga. Con NGINX_KEEPALIVE_TIMEOUT=120, el balanceador de carga podría usar 115 s.
  • IP de los clientes Establece la cabecera de solicitud X-Forwarded-For con la IP del cliente.
  • Al terminar SSL El balanceador de carga debe añadir la cabecera de solicitud X-Forwarded-Proto: https.

Configuración de Server Pro

Secretos Las instancias de Server Pro deben compartir los mismos secretos:
  • WEB_API_PASSWORD (autenticación de la API web)
  • STAGING_PASSWORD y V1_HISTORY_PASSWORD con el mismo valor (autenticación del historial)
  • CRYPTO_RANDOM (para la cookie de sesión)
  • OT_JWT_AUTH_KEY (autenticación del historial)
Cada uno de estos secretos debe configurarse con su propio valor único y compartirse entre las instancias. Si no se configuran y las solicitudes de los usuarios se enrutan a distintas instancias de Server Pro, sus solicitudes no superarán las comprobaciones de autenticación y serán redirigidos con frecuencia a la página de inicio de sesión, o sus acciones en la interfaz fallarán de forma inesperada. Si no se configuran, Server Pro utiliza un nuevo valor aleatorio para cada secreto, basado en 32 bytes aleatorios de /dev/urandom (256 bits aleatorios).
MongoDB Haz que OVERLEAF_MONGO_URL (SHARELATEX_MONGO_URL en las versiones 4.x y anteriores) apunte a la instancia central de MongoDB. Redis Haz que OVERLEAF_REDIS_HOST (SHARELATEX_REDIS_HOST en las versiones 4.x y anteriores) y REDIS_HOST apunten a la instancia central de Redis. Almacenamiento compatible con S3 para archivos de proyecto y de historial Consulta la documentación sobre almacenamiento compatible con S3 para más detalles. Archivos efímeros El bind-mount predeterminado de un SSD local en /var/lib/overleaf (/var/lib/sharelatex en las versiones 4.x y anteriores) será suficiente. Asegúrate de que SANDBOXED_COMPILES_HOST_DIR apunte al punto de montaje en la máquina anfitriona.
Recomendamos encarecidamente usar un disco local. Usar cualquier tipo de disco en red (como NFS o EBS) puede provocar errores de compilación inesperados y otros problemas de rendimiento.
Configuración del proxy
  • Establece OVERLEAF_BEHIND_PROXY=true (SHARELATEX_BEHIND_PROXY en las versiones 4.x y anteriores) para obtener IP de cliente precisas.
  • Establece TRUSTED_PROXY_IPS con la IP del balanceador de carga (se pueden especificar varios CIDR separados por comas).
Integración con Git-bridge
Git-bridge está disponible en Server Pro a partir de la versión 4.0.1.
El contenedor de git-bridge necesita un contenedor de Server Pro asociado (sibling) para gestionar las solicitudes git entrantes. Este contenedor asociado también puede atender el tráfico normal de usuarios. En la configuración de ejemplo, la primera instancia actúa como contenedor asociado de git-bridge, aunque en realidad cualquier instancia podría cumplir esa función. ¿Por qué es necesario designar un contenedor de Server Pro como asociado de git-bridge? Server Pro entrega a git-bridge URL de descarga del servicio de historial. Necesitamos configurar estas URL de historial para que sean accesibles desde el contenedor de git-bridge. Configuración del contenedor de Server Pro:
  • Establece GIT_BRIDGE_ENABLED en 'true'
  • Establece GIT_BRIDGE_HOST en <git-bridge container name>, por ejemplo git-bridge
  • Establece GIT_BRIDGE_PORT en 8000
  • Establece V1_HISTORY_URL en http://<server-pro sibling container name>:3100/api. Nota: esto solo es necesario en el contenedor asociado al contenedor de git-bridge. Las demás instancias pueden usar una URL de localhost, que es el valor predeterminado.
Configuración del contenedor de git-bridge:
  • Establece GIT_BRIDGE_API_BASE_URL en http://<server-pro sibling container name>/api/v0, por ejemplo http://server-pro-ha-1/api/v0
  • Establece GIT_BRIDGE_OAUTH2_SERVER en http://<server-pro sibling container name>, por ejemplo http://server-pro-ha-1
  • Establece GIT_BRIDGE_POSTBACK_BASE_URL en http://<git-bridge container name>:8000, por ejemplo http://git-bridge:8000
  • Establece GIT_BRIDGE_ROOT_DIR en el disco de datos de git-bridge montado mediante bind-mount, por ejemplo /data/git-bridge
La siguiente configuración muestra una instalación autocontenida. Para que la demostración funcione, debes proporcionar una clave/certificado SSL válido y ajustar OVERLEAF_SITE_URL (SHARELATEX_SITE_URL en las versiones 4.x y anteriores). En una instalación real, debes sustituir los secretos de prueba por secretos reales, como se indica en los comentarios. En una instalación real, debes trasladar cada contenedor a nodos dedicados y ajustar las direcciones IP a la configuración de tu red local.

Hardware

Recomendamos usar las mismas especificaciones de hardware para todas las instancias de Server Pro que participen en el escalado horizontal. Se aplican las recomendaciones generales sobre especificaciones de hardware para las instancias de Server Pro.

Actualizar Server Pro

Como parte del proceso de actualización, Server Pro ejecuta automáticamente migraciones de la base de datos. Estas migraciones no están diseñadas para ejecutarse desde varias instancias en paralelo. Las migraciones deben finalizar antes de que se inicie la aplicación web propiamente dicha. Puedes buscar en los logs una entrada Finished migrations o esperar hasta que la aplicación acepte tráfico. El procedimiento de actualización es el siguiente:
  1. Programa una ventana de mantenimiento
  2. Detén todas las instancias de Server Pro
  3. Haz una copia de seguridad consistente como se describe en la documentación
  4. Inicia una sola instancia de Server Pro con la nueva versión
  5. Comprueba que la nueva instancia funciona como se espera
  6. Levanta las demás instancias con la nueva versión
Última modificación el 5 de octubre de 2026