Ayakaleaf Pro підтримує горизонтальне масштабування. Ми протестували та підтвердили, що він коректно працює з кількома репліками.
Починаючи з Server CE/Server Pro
5.0.3, змінні середовища було перейменовано з SHARELATEX_* на OVERLEAF_*.Якщо ви використовуєте версію 4.x (або ранішу), переконайтеся, що змінні мають відповідний префікс (наприклад, SHARELATEX_SITE_URL замість OVERLEAF_SITE_URL)Вимоги

Зовнішнє централізоване сховище даних
Сховище даних у Server Pro можна поділити на чотири сховища:-
MongoDB
- Більшість даних зберігається в MongoDB.
- Ми підтримуємо як локальний, так і зовнішній екземпляр, наприклад MongoDB Atlas (повністю керований сервіс MongoDB, що працює в інфраструктурі AWS).
-
Redis
- Redis зберігає тимчасові дані, наприклад незастосовані оновлення документів до їх запису в MongoDB.
- Redis використовується для передавання оновлень документів між різними сервісами та сповіщення редактора про зміни стану в певному проєкті.
- Redis використовується для зберігання сеансів користувачів.
- Ми підтримуємо як локальний, так і зовнішній екземпляр.
-
Файли проєктів і файли історії
- Нередаговані файли проєктів зберігаються поза MongoDB. Нова система історії проєктів (починаючи з Server Pro 3.5) також зберігає історію поза MongoDB.
- Для невеликих одиночних екземплярів ми підтримуємо або локальну файлову систему (яка може базуватися на локальному SSD, NFS або EBS), або S3-сумісну систему зберігання даних.
-
Для горизонтального масштабування ми підтримуємо лише S3-сумісні системи зберігання даних.
-
Тимчасові файли
- Для оптимальної продуктивності компіляції LaTeX мають виконуватися на швидких локальних дисках. Результати компіляції не потрібно зберігати постійно чи резервувати.
- Буферизація нових завантажених файлів і створення zip-файлів проєктів також виграють від використання локального диска.
Ми наполегливо радимо використовувати локальний диск. Використання будь-якого мережевого диска (наприклад, NFS або EBS) може спричинити неочікувані помилки компіляції та інші проблеми з продуктивністю.
Git-bridge
Git-bridge доступний у Server Pro, починаючи з версії 4.0.1.
- центральний екземпляр MongoDB, доступний з усіх екземплярів Server Pro
- центральний екземпляр Redis, доступний з усіх екземплярів Server Pro
- центральне S3-сумісне сховище для файлів проєктів і історії
- локальний диск на кожному екземплярі для тимчасових файлів
- локальний диск на екземплярі, де розміщено контейнер git-bridge, для даних git-bridge
Вимоги до балансувальника навантаження
-
Постійна маршрутизація (sticky), наприклад за допомогою cookie
Ця вимога зумовлена такими компонентами:
- Можливість редагування в реальному часі в Server Pro використовує WebSockets із резервним переходом на XHR polling. Кожен сеанс редагування має локальний стан на стороні сервера, і запити певного сеансу редагування завжди мають спрямовуватися до того самого екземпляра Server Pro. Функція спільної роботи використовує Redis Pub/Sub для обміну оновленнями між кількома екземплярами Server Pro.
- Компіляція LaTeX зберігає результати та кеш компіляції локально для оптимальної продуктивності. Після надсилання запиту на компіляцію до одного екземпляра Server Pro наступні запити на завантаження PDF/журналу мають спрямовуватися до того самого екземпляра Server Pro.
- Тривалі тайм-аути запитів для підтримки компіляції великих документів LaTeX
- Підтримка WebSocket для оптимальної продуктивності
- Розмір тіла POST-запиту 50MB
-
Тайм-аут keep-alive має бути меншим за тайм-аут keep-alive у Server Pro
Тайм-аут keep-alive у Server Pro можна налаштувати за допомогою змінної середовища
NGINX_KEEPALIVE_TIMEOUT. Значення за замовчуванням — 65s. За типового значення працює тайм-аут keep-alive 60s у балансувальнику навантаження. ЗаNGINX_KEEPALIVE_TIMEOUT=120балансувальник навантаження може використовувати 115s. -
IP-адреси клієнтів
Встановіть заголовок запиту
X-Forwarded-Forна IP-адресу клієнта. -
У разі термінації SSL
Балансувальник навантаження має додавати заголовок запиту
X-Forwarded-Proto: https.
Приклад конфігурації HAProxy
Приклад конфігурації HAProxy
Налаштування Server Pro
Секрети Екземпляри Server Pro мають використовувати спільні секрети:WEB_API_PASSWORD(автентифікація web api)STAGING_PASSWORDіV1_HISTORY_PASSWORDз однаковим значенням (автентифікація історії)CRYPTO_RANDOM(для cookie сеансу)OT_JWT_AUTH_KEY(автентифікація історії)
/dev/urandom (256 випадкових бітів).
OVERLEAF_MONGO_URL (SHARELATEX_MONGO_URL для версій 4.x і раніших) на центральний екземпляр MongoDB.
Redis
Спрямуйте OVERLEAF_REDIS_HOST (SHARELATEX_REDIS_HOST для версій 4.x і раніших) і REDIS_HOST на центральний екземпляр Redis.
S3-сумісне сховище для файлів проєктів і історії
Докладніше див. документацію щодо S3-сумісного сховища.
Тимчасові файли
Достатньо типового bind-монтування локального SSD до /var/lib/overleaf (/var/lib/sharelatex для версій 4.x і раніших). Обов’язково спрямуйте SANDBOXED_COMPILES_HOST_DIR на точку монтування на хості.
Ми наполегливо радимо використовувати локальний диск. Використання будь-якого мережевого диска (наприклад, NFS або EBS) може спричинити неочікувані помилки компіляції та інші проблеми з продуктивністю.
- Встановіть
OVERLEAF_BEHIND_PROXY=true(SHARELATEX_BEHIND_PROXYдля версій4.xі раніших), щоб отримувати точні IP-адреси клієнтів. - Встановіть
TRUSTED_PROXY_IPSна IP-адресу балансувальника навантаження (можна вказати кілька CIDR через кому).
Git-bridge доступний у Server Pro, починаючи з версії 4.0.1.
-
Встановіть
GIT_BRIDGE_ENABLEDу'true' -
Встановіть
GIT_BRIDGE_HOSTу<git-bridge container name>, наприкладgit-bridge -
Встановіть
GIT_BRIDGE_PORTу8000 -
Встановіть
V1_HISTORY_URLуhttp://<server-pro sibling container name>:3100/api. Примітка: це потрібно лише на сусідньому контейнері для контейнера git-bridge. Інші екземпляри можуть використовувати URL localhost, що є значенням за замовчуванням.
- Встановіть
GIT_BRIDGE_API_BASE_URLуhttp://<server-pro sibling container name>/api/v0, наприкладhttp://server-pro-ha-1/api/v0 - Встановіть
GIT_BRIDGE_OAUTH2_SERVERуhttp://<server-pro sibling container name>, наприкладhttp://server-pro-ha-1 - Встановіть
GIT_BRIDGE_POSTBACK_BASE_URLуhttp://<git-bridge container name>:8000, наприкладhttp://git-bridge:8000 - Встановіть
GIT_BRIDGE_ROOT_DIRна bind-змонтований диск даних git-bridge, наприклад/data/git-bridge
Приклад конфігурації docker-compose.yml
Приклад конфігурації docker-compose.yml
Наведена нижче конфігурація демонструє самодостатнє налаштування. Щоб демонстрація працювала, потрібно надати дійсний SSL-ключ/сертифікат і змінити
OVERLEAF_SITE_URL (SHARELATEX_SITE_URL для версій 4.x і раніших). Для реального розгортання необхідно замінити фіктивні секрети на справжні, як зазначено в коментарях. Для реального розгортання потрібно перенести окремі контейнери на виділені вузли та змінити IP-адреси відповідно до налаштувань вашої локальної мережі.Апаратне забезпечення
Ми рекомендуємо використовувати однакові апаратні характеристики для всіх екземплярів Server Pro, що беруть участь у горизонтальному масштабуванні. Застосовуються загальні рекомендації щодо апаратних характеристик для екземплярів Server Pro.Оновлення Server Pro
У межах процесу оновлення Server Pro автоматично виконує міграції бази даних. Ці міграції не розраховані на паралельний запуск із кількох екземплярів. Міграції мають завершитися до запуску самого вебзастосунку. Можна або перевірити журнали на наявність записуFinished migrations, або дочекатися, доки застосунок почне приймати трафік.
Процедура оновлення виглядає так:
- Заплануйте вікно технічного обслуговування
- Зупиніть усі екземпляри Server Pro
- Створіть узгоджену резервну копію, як описано в документації
- Запустіть один екземпляр Server Pro з новою версією
- Переконайтеся, що новий екземпляр працює належним чином
- Запустіть інші екземпляри з новою версією

