Ayakaleaf Pro 支援水平擴展。我們已測試並驗證它在多個副本下能正確執行。
從 Server CE/Server Pro
5.0.3 開始,環境變數已從 SHARELATEX_* 更名為 OVERLEAF_*。如果您使用的是 4.x(或更早)版本,請確保變數使用對應的前綴(例如使用 SHARELATEX_SITE_URL 而非 OVERLEAF_SITE_URL)需求

外部集中式資料儲存
Server Pro 中的資料儲存可分為四種資料存放區:-
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
Server Pro 從 4.0.1 版開始提供 Git-bridge。
- 一個可供所有 Server Pro 執行個體存取的集中式 MongoDB 執行個體
- 一個可供所有 Server Pro 執行個體存取的集中式 Redis 執行個體
- 一個用於專案與歷史檔案的集中式 S3 相容儲存後端
- 每個執行個體上用於暫存檔案的本機磁碟
- 託管 git-bridge 容器之執行個體上用於 git-bridge 資料的本機磁碟
負載平衡器需求
-
持久性路由,例如使用 cookie
此需求源自以下元件:
- Server Pro 的即時編輯功能使用 WebSockets,並以 XHR 輪詢作為備援。每個編輯工作階段在伺服器端都有本機狀態,因此特定編輯工作階段的請求必須始終路由至同一個 Server Pro 執行個體。協作功能使用 Redis Pub/Sub 在多個 Server Pro 執行個體之間共享更新。
- LaTeX 編譯會在本機保留輸出與編譯快取,以獲得最佳效能。向某個 Server Pro 執行個體發出編譯請求後,後續的 PDF/日誌下載請求必須路由至同一個 Server Pro 執行個體。
- 較長的請求逾時時間,以支援大型 LaTeX 文件的編譯
- WebSocket 支援,以獲得最佳效能
- 50MB 的 POST 承載大小
-
Keep-alive 逾時時間必須低於 Server Pro 的 keep-alive 逾時時間
Server Pro 中的 keep-alive 逾時時間可以使用環境變數
NGINX_KEEPALIVE_TIMEOUT設定,預設值為 65 秒。 使用預設值時,負載平衡器的 keep-alive 逾時時間設為 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 以預設方式 bind-mount 至 /var/lib/overleaf(4.x 及更早版本為 /var/lib/sharelatex)即已足夠。請務必將 SANDBOXED_COMPILES_HOST_DIR 指向主機上的掛載點。
我們強烈建議使用本機磁碟。使用任何類型的網路磁碟(例如 NFS 或 EBS)都可能導致非預期的編譯錯誤及其他效能問題。
- 設定
OVERLEAF_BEHIND_PROXY=true(4.x及更早版本為SHARELATEX_BEHIND_PROXY),以取得正確的用戶端 IP。 - 將
TRUSTED_PROXY_IPS設為負載平衡器的 IP(可指定多個 CIDR,以逗號分隔)。
Server Pro 從 4.0.1 版開始提供 Git-bridge。
-
將
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設為以 bind-mount 掛載的 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 執行個體
- 驗證新執行個體是否如預期運作
- 以新版本啟動其他執行個體

