- レプリカセットとして構成した MongoDB 8(トランザクションを使用するため)。3 つのノードに分散した 3 つのメンバーであれば、ノード 1 台の喪失に耐えられます。メンバー 1 つでも動作します。
- AOF 永続化を有効にした 1 台の Redis 7 サーバー。Redis には、まだ MongoDB に書き込まれていない編集、セッション、Overleaf サービス間のメッセージが保持されます。Overleaf は 1 台の Redis サーバーに接続します。Sentinel と Redis Cluster はサポートされていません。
代わりに、MongoDB Atlas やクラウドの Redis などのマネージドサービスを使用することもできます。その場合はこのページをスキップし、手順 4 で
OVERLEAF_MONGO_URL と OVERLEAF_REDIS_HOST にそれらを設定してください。1
MongoDB
10-mongo.yaml
PRIMARY、その他が SECONDARY になっているはずです。Job はすべてのメンバーが応答するまで再試行するため、Job の Pod がいくつか失敗するのは正常です。- ヘッドレス Service には
publishNotReadyAddresses: trueが必要です。レプリカセットが存在する前に、メンバー同士が名前で互いを見つける必要があるためです。 - メンバーは安定した名前(
mongo-0.mongo.overleaf.svc.cluster.local)で追加します。再起動のたびに変わる Pod の IP は決して使用しないでください。 - メンバーを 1 つにする場合は、
replicas: 1に設定し、Job にはmongo-0だけを残してください。
2
Redis
20-redis.yaml
Q&A
新しいカーネルで MongoDB 8 が起動時にクラッシュします。なぜですか?
新しいカーネルで MongoDB 8 が起動時にクラッシュします。なぜですか?
回答: MongoDB 8 は Linux カーネル 6.19 以降で失敗します(SERVER-121912)。
10-mongo.yaml の GLIBC_TUNABLES 環境変数のコメントを解除してください。MongoDB にはどのくらいのメモリが必要ですか?
MongoDB にはどのくらいのメモリが必要ですか?
回答: デフォルトでは、MongoDB はノードのメモリから 1 GB を引いた量の半分をキャッシュに使用します。また、参照するのは Pod の制限ではなくノードのメモリです。ノードに合わせて
--wiredTigerCacheSizeGB を設定してください。4 GB のテストノードでは、0.25 で各メンバーが約 200〜260 MiB に収まりました。
