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