
我們有三台運行 Ubuntu Server 10.04 的伺服器,透過 DNS 在它們之間進行負載平衡。我們使用 Django、nginx 來提供內容,並使用 PostgresQL 作為資料庫。
對於PostgresQL,有一些鏡像解決方案,但是使用“三主”模式鏡像我們的靜態文件的最佳方法是什麼?
我想僅僅重新同步它們並不是一種可擴展且易於維護的方式。
答案1
只要檔案不經常更改並且必須始終保持同步,為什麼不使用 rsync 呢?只要確保您擁有一台用於編輯文件的主伺服器,這樣可以更輕鬆地進行同步。
除此之外,像 NFS 這樣的網路檔案系統可能會起作用,或者你實作類似的東西DRBD以始終保持文件同步。
答案2
還有很多其他解決方案(afs、unionfs...),但 rsync 對於單向複製效果出奇地好,並且具有自我修復功能 - 並且可以隨著您定義的複製路徑進行擴展(單個主伺服器最多可以容納大約5 個從站,但除此之外,可能有充分的理由進行多層複製)。
唯一的問題是複製的時間。由於您使用的是循環 DNS,因此您已經具有伺服器關聯性 - 因此您不會遇到用戶更新伺服器 A 然後因為他正在查看伺服器 B 而看不到更新的問題。 (特別是如果您的程式碼依賴對公共資料庫的DDL 變更)。
如果您必須進行雙向複製(盡可能避免),那麼即時複製系統會更合適。
如果您目前正在手動/透過 cron 執行 rsync,則可以考慮使用 inotify 在檔案發生變更時對檔案執行 rsync,從而使延遲變得非常短。
C。