水平スケーリング
バージョン3.5.6から、Server Proは水平スケーリングをサポートしています。
このドキュメントは技術要件を列挙し、複数ノードでServer Proを実行するためのガイドラインを提供します。
Server CE/Server Proの開始バージョンから 5.0.3 Overleaf CE/Server Pro 以降では 環境変数は から SHARELATEX_*.
からリブランドされて OVERLEAF_* バージョン(またはそれ以前)では、変数に適切にプレフィックスが付けられていることを確認してください(例: SHARELATEX_SITE_URL の代わりに OVERLEAF_SITE_URL)
水平スケーリングの設定には相当の作業が必要です。ある規模に達したときに水平スケーリングを検討することをお勧めします。 のみ 例として、合計1000ユーザー向けのServer Proインストールは、2つの4コアプロセッサと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コンテナをホストするインスタンスのローカルディスク
ロードバランサ要件永続的ルーティング
(例:クッキーを使用)
を使用します。
LaTeXコンパイルはパフォーマンス向上のために出力とコンパイルキャッシュをローカルに保持します。あるServer Proインスタンスにコンパイル要求を出した場合、以降のPDF/ログダウンロード要求は同じServer Proインスタンスにルーティングされる必要があります。 長いリクエストタイムアウト
大きなLaTeX文書のコンパイルをサポートするため WebSocketサポート
最適なパフォーマンスのため
POSTペイロードサイズ50MB キープアライブタイムアウト
Server Proのキープアライブタイムアウトより短くする必要があります
NGINX_KEEPALIVE_TIMEOUTServer Proのキープアライブタイムアウトは環境変数で設定できます、デフォルト値は65秒です。
デフォルト設定では、ロードバランサ側で60秒のキープアライブタイムアウトが機能します。
もしNGINX_KEEPALIVE_TIMEOUT=120を設定した場合、ロードバランサは115秒を選ぶ可能性があります。
クライアントIP
リクエストヘッダを設定してくださいX-Forwarded-Forが にクライアントIPを含めること。
SSL終端
ロードバランサはリクエストヘッダを追加する必要があります.
server server-pro-ha-3 198.18.1.3:80 cookie server-pro-ha-3
Server Proの設定
シークレット
Server Proインスタンスは共有シークレットに合意する必要があります:WEB_API_PASSWORD(ウェブAPI認証)およびSTAGING_PASSWORDV1_HISTORY_PASSWORD同じ値(履歴認証)CRYPTO_RANDOM(セッションクッキー用)OT_JWT_AUTH_KEY
(履歴認証)
これらすべてのシークレットはそれぞれ固有の値で設定され、インスタンス間で共有される必要があります。
設定されていない場合、ユーザーのリクエストが異なるServer Proインスタンスにルーティングされると認証チェックに失敗し、頻繁にログインページにリダイレクトされたり、UIでの操作が予期せず失敗したりします。 設定されていない場合、Server Proは各シークレットに対して新しいランダム値を /dev/urandom
MongoDB
dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev | tr -d '\n+/' OVERLEAF_MONGO_URL (もしあなたが ポイント OVERLEAF_* バージョン
Redis
dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev | tr -d '\n+/' OVERLEAF_REDIS_HOST (およびそれ以前)は中央のMongoDBインスタンスを指すようにしてください。 ポイント OVERLEAF_* SHARELATEX_REDIS_HOST REDIS_HOST およびそれ以前)および
中央のRedisインスタンスを指すようにしてください。
プロジェクトおよび履歴ファイル用のS3互換ストレージ S3 互換ストレージ 詳細についてはドキュメントの
の要件セクションを参照してください。
を参照してください。 /var/lib/overleaf (ローカルSSDのデフォルトのバインドマウント先は ポイント OVERLEAF_* /var/lib/sharelatex SANDBOXED_COMPILES およびそれ以前)で十分です。ホスト上のマウントポイントを必ず
に向けてください。
ローカルディスクの使用を強く推奨します。NFSやEBSのようなネットワークディスクを使用すると、予期せぬコンパイルエラーやその他のパフォーマンス問題が発生する可能性があります。
プロキシの設定
設定してください(OVERLEAF_BEHIND_PROXY=trueポイントOVERLEAF_*SHARELATEX_BEHIND_PROXYプロキシの設定
およびそれ以前)は正確なクライアントIPのために。TRUSTED_PROXY_IPS
ロードバランサのIPに設定してください(複数のCIDRはカンマで区切って指定できます)。
Git-bridge
Git-bridgeの統合
git-bridgeコンテナは受信するgitリクエストを処理するための兄弟Server Proコンテナを必要とします。この兄弟コンテナは通常のユーザートラフィックも処理できます。サンプル構成では最初のインスタンスがgit-bridgeの兄弟コンテナとして働きますが、実際にはどのインスタンスでもその役割を果たせます。
なぜgit-bridgeのために1つのServer Proコンテナを兄弟として指定する必要があるのか?Server Proは履歴サービス用のダウンロードURLをgit-bridgeに渡します。これらの履歴URLがgit-bridgeコンテナからアクセス可能であるように設定する必要があります。
プロキシの設定
Server Proコンテナの設定:からGIT_BRIDGE_ENABLEDプロキシの設定
'true'からGIT_BRIDGE_HOST<git-bridgeコンテナ名>git-bridgeプロキシの設定
例:から8000プロキシの設定
GIT_BRIDGE_PORTからV1_HISTORY_URL.http://<server-proの兄弟コンテナ名>:3100/api
注:これはgit-bridgeコンテナの兄弟コンテナ上でのみ必要です。他のインスタンスはデフォルトのlocalhostのURLを使用できます。
プロキシの設定
git-bridgeコンテナの設定:からGIT_BRIDGE_API_BASE_URLで、例えばhttp://<server-proの兄弟コンテナ名>/api/v0プロキシの設定
http://server-pro-ha-1/api/v0からGIT_BRIDGE_OAUTH2_SERVERで、例えばhttp://<server-proの兄弟コンテナ名>プロキシの設定
http://server-pro-ha-1からGIT_BRIDGE_POSTBACK_BASE_URLで、例えばhttp://<git-bridgeコンテナ名>:8000プロキシの設定
http://git-bridge:8000GIT_BRIDGE_ROOT_DIRバインドマウントされたgit-bridgeデータディスクを指す、例えば
/data/git-bridge
docker-compose.ymlのサンプル構成 OVERLEAF_SITE_URL (SHARELATEX_SITE_URL ポイント OVERLEAF_* 以下の構成は自己完結型のセットアップを示しています。デモを動作させるには有効なSSL鍵/証明書を用意し、
ipv4_address: 198.18.0.4
ハードウェア
水平スケーリングに参加するすべてのServer Proインスタンスで同じハードウェア仕様を使用することを推奨します。 一般的な推奨事項は Server Proインスタンス向けのハードウェア仕様
に適用されます。
Server Proのアップグレード 使用してはいけません アップグレードの一環として、Server Proは自動的にデータベースマイグレーションを実行します。これらのマイグレーションは
並列に複数インスタンスから実行されることを想定して設計されています。 マイグレーションは実際のウェブアプリケーションが起動する前に終了する必要があります。ログに Finished migrations
のエントリがあるかを確認するか、アプリケーションがトラフィックを受け入れるまで待つことができます。
アップグレード手順は次のようになります:
メンテナンス時間を予定する
すべてのServer Proインスタンスを停止する 一貫性のあるバックアップを取り(ドキュメントに記載の方法で)、
ドキュメント
を参照してください。
新バージョンで単一のServer Proインスタンスを起動する。」「t393":"新しいインスタンスが期待通りに動作することを検証する。","t394":"他のインスタンスを新バージョンで起動する"}
最終更新