Skip to main content
Ayakaleaf Pro は水平スケーリングをサポートしています。複数のレプリカで正しく動作することをテストし、検証済みです。
このドキュメントでは、Ayakaleaf Pro を複数のノードで実行するための技術要件を示し、ガイドラインを提供します。
Server CE/Server Pro 5.0.3 以降、環境変数の名前は SHARELATEX_* から OVERLEAF_* に変更されました。4.x 以前のバージョンを使用している場合は、変数に適切なプレフィックスが付いていることを確認してください(例:OVERLEAF_SITE_URL ではなく SHARELATEX_SITE_URL)。
水平スケーリングのセットアップには多大な労力が必要です。水平スケーリングは、一定の規模に達した場合にのみ検討することをお勧めします。たとえば、合計 1,000 ユーザー向けの Server Pro のインストールが、4 コアプロセッサー 2 基と 32GB のシステムメモリを搭載した単一のサーバーで正常に構築された事例があります。推奨事項については、ハードウェア要件のドキュメントを参照してください。 水平スケーリングを使用した Server Pro の導入には、ロードバランサーや S3 互換ストレージバックエンドなど、一連の外部コンポーネントが必要です。 設定ミスが原因と考えられる Server Pro コンテナのエラーのトラブルシューティングや、このドキュメントに基づく一般的なアドバイスは提供できます。ただし、残念ながらサードパーティのアプリケーションやシステムの設定についてはサポートできません。 外部コンポーネントを提供するハードウェア/ソフトウェアに固有の技術的な問題の解決は、サポート規約の対象外です。

要件

外部の集中型データストレージ

Server Pro のデータストレージは、4 つのデータストアに分けられます:
  • MongoDB
    • ほとんどのデータは MongoDB に永続化されます。
    • ローカルインスタンスと、MongoDB Atlas(AWS インフラストラクチャ内で実行されるフルマネージドの MongoDB サービス)などの外部インスタンスのどちらもサポートしています。
    注: 残念ながら、CosmoDB/DocumentDB などの MongoDB 互換データベースについては、Server Pro でテストしていないため、現時点では公式サポートはありません。互換データベースで Server Pro を導入することは可能な場合もありますが、公式にサポートしているのは MongoDB を使用した導入のみです。
  • Redis
    • Redis は、MongoDB にフラッシュされる前の保留中のドキュメント更新などの一時データを保存します。
    • Redis は、異なるサービス間でのドキュメント更新の伝達や、特定のプロジェクトの状態変化をエディターに通知するために使用されます。
    • Redis は、ユーザーセッションの保存に使用されます。
    • ローカルインスタンスと外部インスタンスのどちらもサポートしています。
    注: 残念ながら、KeyDB/Valkey などの Redis 互換キーバリューストアについては、Server Pro でテストしていないため、現時点では公式サポートはありません。互換ストアで Server Pro を導入することは可能な場合もありますが、公式にサポートしているのは Redis を使用した導入のみです。
  • プロジェクトファイルと履歴ファイル
    • 編集不可能なプロジェクトファイルは MongoDB の外部に保存されます。 新しいプロジェクト履歴システム(Server Pro 3.5 以降)も、履歴を MongoDB の外部に保存します。
    • 小規模な単一インスタンスの場合は、ローカルファイルシステム(ローカル SSD、NFS、EBS をバックエンドにできます)または S3 互換データストレージシステムのどちらもサポートしています。
    • 水平スケーリングの場合、サポートしているのは S3 互換データストレージシステムのみです。
    重要: NFS/Amazon EFS/Amazon EBS は、水平スケーリングではサポートされていません。詳細については、Server Pro のストレージのスケーリングに関するハードウェアストレージ要件のセクションを参照してください。
  • 一時ファイル
    • 最適なパフォーマンスを得るには、LaTeX のコンパイルを高速なローカルディスク上で実行する必要があります。コンパイルの出力を永続化したりバックアップしたりする必要はありません。
    • 新しいファイルアップロードのバッファリングやプロジェクトの zip ファイルの作成も、ローカルディスクを使用することでメリットが得られます。
ローカルディスクを使用することを強くお勧めします。あらゆる種類のネットワークディスク(NFS や EBS など)を使用すると、予期しないコンパイルエラーやその他のパフォーマンスの問題が発生する可能性があります。

Git-bridge

Git-bridge は、Server Pro のバージョン 4.0.1 以降で利用できます。
git リポジトリはローカルディスクに保存されます。レプリケーションのオプションはありません。Git-bridge はシングルトンとして実行する必要があります。最適なパフォーマンスを得るには、git-bridge のデータにローカルディスクを使用することをお勧めします。git-bridge のデータディスクは定期的にバックアップする必要があります。 水平スケーリングでのデータストレージには、次のものが必要です:
  • すべての Server Pro インスタンスからアクセス可能な集中型の MongoDB インスタンス
  • すべての Server Pro インスタンスからアクセス可能な集中型の Redis インスタンス
  • プロジェクトファイルと履歴ファイル用の集中型の S3 互換ストレージバックエンド
  • 一時ファイル用の、各インスタンス上のローカルディスク
  • git-bridge のデータ用の、git-bridge コンテナをホストするインスタンス上のローカルディスク

ロードバランサーの要件

  • 永続的なルーティング(例:Cookie を使用) この要件は、次のコンポーネントに起因します:
    • Server Pro のリアルタイム編集機能は WebSocket を使用し、XHR ポーリングへのフォールバックを備えています。各編集セッションはサーバー側にローカルの状態を持つため、特定の編集セッションのリクエストは常に同じ Server Pro インスタンスにルーティングされる必要があります。共同編集機能は、複数の Server Pro インスタンス間で更新を共有するために Redis の Pub/Sub を使用します。
    • LaTeX のコンパイルでは、パフォーマンスを最適化するために出力とコンパイルキャッシュをローカルに保持します。ある Server Pro インスタンスにコンパイルリクエストを送信した後、続く PDF/ログのダウンロードリクエストは同じ Server Pro インスタンスにルーティングされる必要があります。
  • 大きな LaTeX ドキュメントのコンパイルをサポートするための長いリクエストタイムアウト
  • 最適なパフォーマンスのための WebSocket のサポート
  • 50MB の POST ペイロードサイズ
  • キープアライブタイムアウトは、Server Pro のキープアライブタイムアウトより短くする必要があります Server Pro のキープアライブタイムアウトは、環境変数 NGINX_KEEPALIVE_TIMEOUT で設定できます。デフォルト値は 65 秒です。 デフォルトの場合、ロードバランサーのキープアライブタイムアウトは 60 秒で動作します。 NGINX_KEEPALIVE_TIMEOUT=120 の場合、ロードバランサーでは 115 秒を選択できます。
  • クライアント IP リクエストヘッダー X-Forwarded-For にクライアント IP を設定します。
  • SSL を終端する場合 ロードバランサーでリクエストヘッダー X-Forwarded-Proto: https を追加する必要があります。

Server Pro の設定

シークレット Server Pro インスタンス間で、共有シークレットを一致させる必要があります:
  • WEB_API_PASSWORD(Web API の認証)
  • STAGING_PASSWORD と V1_HISTORY_PASSWORD には同じ値(履歴の認証)
  • CRYPTO_RANDOM(セッション Cookie 用)
  • OT_JWT_AUTH_KEY(履歴の認証)
これらのシークレットはすべて、それぞれ固有の値を設定し、インスタンス間で共有する必要があります。 これらが設定されておらず、ユーザーのリクエストが異なる Server Pro インスタンスにルーティングされた場合、リクエストは認証チェックに失敗し、頻繁にログインページにリダイレクトされたり、UI での操作が予期しない形で失敗したりします。 設定されていない場合、Server Pro は各シークレットに対して、/dev/urandom から得た 32 ランダムバイト(256 ランダムビット)に基づく新しいランダムな値を使用します。
MongoDB OVERLEAF_MONGO_URL(バージョン 4.x 以前では SHARELATEX_MONGO_URL)を集中型の MongoDB インスタンスに向けます。 Redis OVERLEAF_REDIS_HOST(バージョン 4.x 以前では SHARELATEX_REDIS_HOST)と REDIS_HOST を集中型の Redis インスタンスに向けます。 プロジェクトファイルと履歴ファイル用の S3 互換ストレージ 詳細については、S3 互換ストレージのドキュメントを参照してください。 一時ファイル ローカル SSD を /var/lib/overleaf(バージョン 4.x 以前では /var/lib/sharelatex)にバインドマウントするデフォルトの設定で十分です。SANDBOXED_COMPILES_HOST_DIR をホスト上のマウントポイントに向けるようにしてください。
ローカルディスクを使用することを強くお勧めします。あらゆる種類のネットワークディスク(NFS や EBS など)を使用すると、予期しないコンパイルエラーやその他のパフォーマンスの問題が発生する可能性があります。
プロキシの設定
  • 正確なクライアント IP を取得するために、OVERLEAF_BEHIND_PROXY=true(バージョン 4.x 以前では SHARELATEX_BEHIND_PROXY)を設定します。
  • TRUSTED_PROXY_IPS にロードバランサーの IP を設定します(カンマ区切りで複数の CIDR を指定できます)。
Git-bridge の連携
Git-bridge は、Server Pro のバージョン 4.0.1 以降で利用できます。
git-bridge コンテナには、受信した git リクエストを処理するための兄弟 Server Pro コンテナが必要です。この兄弟コンテナは、通常のユーザートラフィックも処理できます。サンプル設定では最初のインスタンスが git-bridge の兄弟コンテナとして機能していますが、実際にはどのインスタンスでもその役割を果たせます。 なぜ 1 つの Server Pro コンテナを git-bridge の兄弟として指定する必要があるのでしょうか?Server Pro は、履歴サービスのダウンロード URL を git-bridge に渡します。これらの履歴 URL を、git-bridge コンテナからアクセスできるように設定する必要があるためです。 Server Pro コンテナの設定:
  • 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 コンテナの兄弟コンテナでのみ必要です。他のインスタンスでは、デフォルトである localhost の URL を使用できます。
git-bridge コンテナの設定:
  • 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 を、バインドマウントした git-bridge のデータディスクに設定します(例:/data/git-bridge)
以下の設定は、自己完結型のセットアップを示しています。デモを動作させるには、有効な SSL キー/証明書を用意し、OVERLEAF_SITE_URL(バージョン 4.x 以前では SHARELATEX_SITE_URL)を調整する必要があります。実際のセットアップでは、インラインで記載されているとおり、ダミーのシークレットを実際のシークレットに置き換える必要があります。また、実際のセットアップでは、個々のコンテナを専用のノードに移動し、IP アドレスをローカルネットワークの構成に合わせて調整する必要があります。

ハードウェア

水平スケーリングに参加するすべての Server Pro インスタンスで、同じハードウェア仕様を使用することをお勧めします。 Server Pro インスタンスのハードウェア仕様に関する一般的な推奨事項が適用されます。

Server Pro のアップグレード

アップグレード処理の一環として、Server Pro はデータベースのマイグレーションを自動的に実行します。これらのマイグレーションは、複数のインスタンスから並行して実行するようには設計されていません。 マイグレーションは、実際の Web アプリケーションが起動する前に完了する必要があります。ログで Finished migrations というエントリを確認するか、アプリケーションがトラフィックを受け付けるようになるまで待ちます。 アップグレード手順は次のとおりです:
  1. メンテナンス時間帯を計画します
  2. Server Pro のすべてのインスタンスを停止します
  3. ドキュメントの説明に従って、整合性のとれたバックアップを取得します
  4. 新しいバージョンで Server Pro の単一インスタンスを起動します
  5. 新しいインスタンスが期待どおりに動作していることを確認します
  6. 新しいバージョンで他のインスタンスを起動します
最終更新日 2026年10月5日