Ayakaleaf Pro prend en charge la mise à l’échelle horizontale. Nous avons testé et vérifié qu’il fonctionne correctement avec plusieurs réplicas.
À partir de Server CE/Server Pro
5.0.3, les variables d’environnement ont été renommées de SHARELATEX_* en OVERLEAF_*.Si vous utilisez une version 4.x (ou antérieure), assurez-vous que les variables portent le préfixe correspondant (par exemple SHARELATEX_SITE_URL au lieu de OVERLEAF_SITE_URL)Prérequis

Stockage de données externe et centralisé
Le stockage des données dans Server Pro peut être réparti en quatre magasins de données :-
MongoDB
- La plupart des données sont persistées dans MongoDB.
- Nous prenons en charge une instance locale ou une instance externe, comme MongoDB Atlas (un service MongoDB entièrement géré qui s’exécute au sein de l’infrastructure AWS).
-
Redis
- Redis stocke des données temporaires, comme les mises à jour de documents en attente avant leur écriture dans MongoDB.
- Redis sert à communiquer les mises à jour de documents entre les différents services et à notifier l’éditeur des changements d’état d’un projet donné.
- Redis sert à stocker les sessions utilisateur.
- Nous prenons en charge une instance locale ou une instance externe.
-
Fichiers de projet et fichiers d’historique
- Les fichiers de projet non modifiables sont stockés en dehors de MongoDB. Le nouveau système d’historique des projets (à partir de Server Pro 3.5) stocke également l’historique en dehors de MongoDB.
- Pour les petites instances uniques, nous prenons en charge un système de fichiers local (qui peut reposer sur un SSD local, NFS ou EBS) ou un système de stockage de données compatible S3.
-
Pour la mise à l’échelle horizontale, nous prenons en charge uniquement les systèmes de stockage de données compatibles S3.
-
Fichiers éphémères
- Les compilations LaTeX doivent s’exécuter sur des disques locaux rapides pour des performances optimales. Le résultat de la compilation n’a pas besoin d’être persisté ni sauvegardé.
- La mise en mémoire tampon des nouveaux fichiers téléversés et la création des archives zip de projets bénéficient également d’un disque local.
Nous vous conseillons vivement d’utiliser un disque local. L’utilisation de tout type de disque réseau (comme NFS ou EBS) peut entraîner des erreurs de compilation inattendues et d’autres problèmes de performances.
Git-bridge
Git-bridge est disponible dans Server Pro à partir de la version 4.0.1.
- une instance MongoDB centrale accessible depuis toutes les instances Server Pro
- une instance Redis centrale accessible depuis toutes les instances Server Pro
- un backend de stockage central compatible S3 pour les fichiers de projet et d’historique
- un disque local sur chaque instance pour les fichiers éphémères
- un disque local sur l’instance qui héberge le conteneur git-bridge pour les données de git-bridge
Exigences pour le répartiteur de charge
-
Routage persistant, par exemple à l’aide d’un cookie
Cette exigence découle des composants suivants :
- La fonctionnalité d’édition en temps réel de Server Pro utilise des WebSockets avec un repli sur le polling XHR. Chaque session d’édition possède un état local côté serveur, et les requêtes d’une session d’édition donnée doivent toujours être routées vers la même instance Server Pro. La fonctionnalité de collaboration utilise le Pub/Sub de Redis pour partager les mises à jour entre plusieurs instances Server Pro.
- La compilation LaTeX conserve localement le résultat et le cache de compilation pour optimiser les performances. Après l’envoi d’une requête de compilation à une instance Server Pro, les requêtes de téléchargement du PDF/du journal qui suivent doivent être routées vers la même instance Server Pro.
- Délais d’expiration des requêtes longs pour permettre la compilation de documents LaTeX volumineux
- Prise en charge des WebSockets pour des performances optimales
- Taille de charge utile POST de 50 Mo
-
Le délai keep-alive doit être inférieur au délai keep-alive de Server Pro
Le délai keep-alive de Server Pro peut être configuré à l’aide de la variable d’environnement
NGINX_KEEPALIVE_TIMEOUT. La valeur par défaut est de 65 s. Avec la valeur par défaut, un délai keep-alive de 60 s dans le répartiteur de charge fonctionne. AvecNGINX_KEEPALIVE_TIMEOUT=120, le répartiteur de charge pourrait utiliser 115 s. -
Adresses IP des clients
Définissez l’en-tête de requête
X-Forwarded-Forsur l’adresse IP du client. -
Lors de la terminaison SSL
Le répartiteur de charge doit ajouter l’en-tête de requête
X-Forwarded-Proto: https.
Exemple de configuration HAProxy
Exemple de configuration HAProxy
Configuration de Server Pro
Secrets Les instances Server Pro doivent partager les mêmes secrets :WEB_API_PASSWORD(authentification de l’API web)STAGING_PASSWORDetV1_HISTORY_PASSWORDavec la même valeur (authentification de l’historique)CRYPTO_RANDOM(pour le cookie de session)OT_JWT_AUTH_KEY(authentification de l’historique)
/dev/urandom (256 bits aléatoires).
OVERLEAF_MONGO_URL (SHARELATEX_MONGO_URL pour les versions 4.x et antérieures) vers l’instance MongoDB centrale.
Redis
Faites pointer OVERLEAF_REDIS_HOST (SHARELATEX_REDIS_HOST pour les versions 4.x et antérieures) et REDIS_HOST vers l’instance Redis centrale.
Stockage compatible S3 pour les fichiers de projet et d’historique
Consultez la documentation sur le stockage compatible S3 pour plus de détails.
Fichiers éphémères
Le montage par défaut (bind-mount) d’un SSD local sur /var/lib/overleaf (/var/lib/sharelatex pour les versions 4.x et antérieures) suffit. Veillez à faire pointer SANDBOXED_COMPILES_HOST_DIR vers le point de montage sur l’hôte.
Nous vous conseillons vivement d’utiliser un disque local. L’utilisation de tout type de disque réseau (comme NFS ou EBS) peut entraîner des erreurs de compilation inattendues et d’autres problèmes de performances.
- Définissez
OVERLEAF_BEHIND_PROXY=true(SHARELATEX_BEHIND_PROXYpour les versions4.xet antérieures) pour obtenir les adresses IP exactes des clients. - Définissez
TRUSTED_PROXY_IPSsur l’adresse IP du répartiteur de charge (plusieurs CIDR peuvent être indiqués, séparés par une virgule).
Git-bridge est disponible dans Server Pro à partir de la version 4.0.1.
-
Définissez
GIT_BRIDGE_ENABLEDsur'true' -
Définissez
GIT_BRIDGE_HOSTsur<git-bridge container name>, par exemplegit-bridge -
Définissez
GIT_BRIDGE_PORTsur8000 -
Définissez
V1_HISTORY_URLsurhttp://<server-pro sibling container name>:3100/api. Remarque : ceci n’est nécessaire que sur le conteneur voisin du conteneur git-bridge. Les autres instances peuvent utiliser une URL localhost, qui est la valeur par défaut.
- Définissez
GIT_BRIDGE_API_BASE_URLsurhttp://<server-pro sibling container name>/api/v0, par exemplehttp://server-pro-ha-1/api/v0 - Définissez
GIT_BRIDGE_OAUTH2_SERVERsurhttp://<server-pro sibling container name>, par exemplehttp://server-pro-ha-1 - Définissez
GIT_BRIDGE_POSTBACK_BASE_URLsurhttp://<git-bridge container name>:8000, par exemplehttp://git-bridge:8000 - Définissez
GIT_BRIDGE_ROOT_DIRsur le disque de données git-bridge monté, par exemple/data/git-bridge
Exemple de configuration docker-compose.yml
Exemple de configuration docker-compose.yml
La configuration suivante présente une installation autonome. Pour que la démo fonctionne, vous devez fournir une clé et un certificat SSL valides et ajuster
OVERLEAF_SITE_URL (SHARELATEX_SITE_URL pour les versions 4.x et antérieures). Pour une installation réelle, vous devez remplacer les secrets factices par de vrais secrets, comme indiqué dans les commentaires. Pour une installation réelle, vous devez également déplacer chaque conteneur sur des nœuds dédiés et adapter les adresses IP à la configuration de votre réseau local.Matériel
Nous recommandons d’utiliser les mêmes spécifications matérielles pour toutes les instances Server Pro participant à la mise à l’échelle horizontale. Les recommandations générales sur les spécifications matérielles des instances Server Pro s’appliquent.Mettre à niveau Server Pro
Dans le cadre du processus de mise à niveau, Server Pro exécute automatiquement des migrations de base de données. Ces migrations ne sont pas conçues pour être exécutées en parallèle depuis plusieurs instances. Les migrations doivent être terminées avant le démarrage de l’application web proprement dite. Vous pouvez soit rechercher l’entréeFinished migrations dans les journaux, soit attendre que l’application accepte du trafic.
La procédure de mise à niveau se déroule comme suit :
- Planifiez une fenêtre de maintenance
- Arrêtez toutes les instances de Server Pro
- Effectuez une sauvegarde cohérente comme décrit dans la documentation
- Démarrez une seule instance de Server Pro avec la nouvelle version
- Vérifiez que la nouvelle instance fonctionne comme prévu
- Démarrez les autres instances avec la nouvelle version

