- 以複本集執行的 MongoDB 8(它會使用交易)。分散在三個節點上的三個成員可以承受失去一個節點;只有一個成員也能運作。
- Redis 7,一台啟用 AOF 持久化的伺服器。Redis 保存尚未寫入 MongoDB 的編輯、工作階段,以及 Overleaf 各服務之間的訊息。Overleaf 只會連線至單一 Redis 伺服器:不支援 Sentinel 與 Redis Cluster。
您也可以改用代管服務,例如 MongoDB Atlas 或您雲端平台的 Redis。請略過本頁,並在步驟 4 中將
OVERLEAF_MONGO_URL 與 OVERLEAF_REDIS_HOST 設為這些服務。1
MongoDB
10-mongo.yaml
PRIMARY,其餘為 SECONDARY。Job 會持續重試直到所有成員都回應,因此出現幾個失敗的 Job Pod 是正常的。- Headless Service 需要
publishNotReadyAddresses: true:成員必須在複本集建立之前就能以名稱找到彼此。 - 成員是以其穩定的名稱(
mongo-0.mongo.overleaf.svc.cluster.local)加入,絕不使用每次重新啟動都會改變的 Pod IP。 - 若只要一個成員,請設定
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。
