
我有一個最佳實踐問題。我們有一個應用程式在負載平衡器後面的兩台伺服器上運行。大多數資料位於公共資料庫中,使用者上傳的檔案位於物件儲存中。因此,除了使用者透過應用程式後端產生的一些 YAML 設定檔之外,沒有太多需要保持同步的內容。
保持這些文件同步的最佳做法是什麼?我想到的解決方案是安裝一個共享卷來託管程式碼和設定檔。有更好的解決方案嗎?
答案1
假設只有一個「最佳實踐」是一個陷阱。總是有不只一種解決方案。
將設定檔的內容儲存在資料庫中是一種選擇。由某些應用程式管理的 Blob,如果其他事物正在讀取,則可能會寫出到磁碟。或更改應用程式以使用資料庫中的離散資料欄位而不是 YAML 文件。利用現有的中央資料庫,但要求該資料庫首先可用。
將設定檔儲存在包含應用程式的軟體包或映像中。透過升級應用程式來部署新的應用程式。只有當這些檔案由同一個人或更新應用程式的進程更改時才有意義。
按計劃或更改時將文件從權威副本複製到每個實例。選擇檔案複製軟體、rsync、sftp。如果安裝是事務性的,則需要一些額外的腳本,因為所有檔案都已安裝,或者沒有安裝。
掛載網路檔案共用。請注意,如果 NFS 或 SMB 共享以計劃外的方式斷開連接,則可能會導致效能問題。