Ayakaleaf Pro は水平スケーリングをサポートしています。複数のレプリカで正しく動作することをテストし、検証済みです。
Server CE/Server Pro
5.0.3 以降、環境変数の名前は SHARELATEX_* から OVERLEAF_* に変更されました。4.x 以前のバージョンを使用している場合は、変数に適切なプレフィックスが付いていることを確認してください(例:OVERLEAF_SITE_URL ではなく SHARELATEX_SITE_URL)。要件

外部の集中型データストレージ
Server Pro のデータストレージは、4 つのデータストアに分けられます:-
MongoDB
- ほとんどのデータは MongoDB に永続化されます。
- ローカルインスタンスと、MongoDB Atlas(AWS インフラストラクチャ内で実行されるフルマネージドの MongoDB サービス)などの外部インスタンスのどちらもサポートしています。
-
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 以降で利用できます。
- すべての 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を追加する必要があります。
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 から得た 32 ランダムバイト(256 ランダムビット)に基づく新しいランダムな値を使用します。
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 は、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 コンテナの兄弟コンテナでのみ必要です。他のインスタンスでは、デフォルトである localhost の URL を使用できます。
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)
docker-compose.yml の設定サンプル
docker-compose.yml の設定サンプル
以下の設定は、自己完結型のセットアップを示しています。デモを動作させるには、有効な SSL キー/証明書を用意し、
OVERLEAF_SITE_URL(バージョン 4.x 以前では SHARELATEX_SITE_URL)を調整する必要があります。実際のセットアップでは、インラインで記載されているとおり、ダミーのシークレットを実際のシークレットに置き換える必要があります。また、実際のセットアップでは、個々のコンテナを専用のノードに移動し、IP アドレスをローカルネットワークの構成に合わせて調整する必要があります。ハードウェア
水平スケーリングに参加するすべての Server Pro インスタンスで、同じハードウェア仕様を使用することをお勧めします。 Server Pro インスタンスのハードウェア仕様に関する一般的な推奨事項が適用されます。Server Pro のアップグレード
アップグレード処理の一環として、Server Pro はデータベースのマイグレーションを自動的に実行します。これらのマイグレーションは、複数のインスタンスから並行して実行するようには設計されていません。 マイグレーションは、実際の Web アプリケーションが起動する前に完了する必要があります。ログでFinished migrations というエントリを確認するか、アプリケーションがトラフィックを受け付けるようになるまで待ちます。
アップグレード手順は次のとおりです:
- メンテナンス時間帯を計画します
- Server Pro のすべてのインスタンスを停止します
- ドキュメントの説明に従って、整合性のとれたバックアップを取得します
- 新しいバージョンで Server Pro の単一インスタンスを起動します
- 新しいインスタンスが期待どおりに動作していることを確認します
- 新しいバージョンで他のインスタンスを起動します

