Ayakaleaf Pro admite el escalado horizontal. Hemos probado y verificado que funciona correctamente con varias réplicas.
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)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).
-
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.
-
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.
-
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.
- 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. ConNGINX_KEEPALIVE_TIMEOUT=120, el balanceador de carga podría usar 115 s. -
IP de los clientes
Establece la cabecera de solicitud
X-Forwarded-Forcon la IP del cliente. -
Al terminar SSL
El balanceador de carga debe añadir la cabecera de solicitud
X-Forwarded-Proto: https.
Ejemplo de configuración de HAProxy
Ejemplo de configuración de HAProxy
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_PASSWORDyV1_HISTORY_PASSWORDcon el mismo valor (autenticación del historial)CRYPTO_RANDOM(para la cookie de sesión)OT_JWT_AUTH_KEY(autenticación del historial)
/dev/urandom (256 bits aleatorios).
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.
- Establece
OVERLEAF_BEHIND_PROXY=true(SHARELATEX_BEHIND_PROXYen las versiones4.xy anteriores) para obtener IP de cliente precisas. - Establece
TRUSTED_PROXY_IPScon la IP del balanceador de carga (se pueden especificar varios CIDR separados por comas).
Git-bridge está disponible en Server Pro a partir de la versión 4.0.1.
-
Establece
GIT_BRIDGE_ENABLEDen'true' -
Establece
GIT_BRIDGE_HOSTen<git-bridge container name>, por ejemplogit-bridge -
Establece
GIT_BRIDGE_PORTen8000 -
Establece
V1_HISTORY_URLenhttp://<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.
- Establece
GIT_BRIDGE_API_BASE_URLenhttp://<server-pro sibling container name>/api/v0, por ejemplohttp://server-pro-ha-1/api/v0 - Establece
GIT_BRIDGE_OAUTH2_SERVERenhttp://<server-pro sibling container name>, por ejemplohttp://server-pro-ha-1 - Establece
GIT_BRIDGE_POSTBACK_BASE_URLenhttp://<git-bridge container name>:8000, por ejemplohttp://git-bridge:8000 - Establece
GIT_BRIDGE_ROOT_DIRen el disco de datos de git-bridge montado mediante bind-mount, por ejemplo/data/git-bridge
Ejemplo de configuración de docker-compose.yml
Ejemplo de configuración de docker-compose.yml
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 entradaFinished migrations o esperar hasta que la aplicación acepte tráfico.
El procedimiento de actualización es el siguiente:
- Programa una ventana de mantenimiento
- Detén todas las instancias de Server Pro
- Haz una copia de seguridad consistente como se describe en la documentación
- Inicia una sola instancia de Server Pro con la nueva versión
- Comprueba que la nueva instancia funciona como se espera
- Levanta las demás instancias con la nueva versión

