Linux

兩台遠端linux伺服器之間大文件樹的雙向實時同步

  • September 6, 2019

大文件樹是指大約 200k 個文件,並且一直在增長。但是,在任何給定小時內都會更改相對少量的文件。

雙向我的意思是更改可能發生在任一伺服器上並且需要推送到另一台伺服器,因此 rsync 似乎不合適。

遠端我的意思是伺服器都在數據中心,但在地理位置上彼此遠離。目前只有 2 台伺服器,但可能會隨著時間的推移而擴大。

通過實時,同步之間有一點延遲是可以​​的,但是每 1-2 分鐘執行一次 cron 似乎並不正確,因為在任何給定的小時內,只有一小部分文件可能會發生變化,更不用說分鐘了。

編輯:這是在 VPS 上執行的,所以我可能會受限於我能做的核心級別的東西。此外,VPS 的資源並不豐富,所以我會迴避需要大量記憶體的解決方案(比如 Gluster?)。

完成這項工作的最佳/最“接受”的方法是什麼?這似乎是一種常見的需求,但我還沒有找到一種普遍接受的方法,這令人驚訝。(我正在尋求群眾的安全。:)

我遇到了lsyncd在文件系統更改級別觸發同步。這似乎很聰明,雖然不是很常見,而且我對各種 lsyncd 方法有點困惑。只是將 lsyncd 與 rsync 一起使用,但似乎這對於雙向性來說可能很脆弱,因為 rsync 沒有記憶體的概念(例如,要知道是否應該在 B 上刪除 A 上的已刪除文件或者它是否是 B 上的新文件應複製到 A)。 lipsync似乎只是一個 lsyncd+rsync 實現,對吧?

然後將 lsyncd 與csync2一起使用,如下所示:https ://icicimov.github.io/blog/devops/File-system-sync-with-Csync2-and-Lsyncd/ …我傾向於這種方法,但是csync2 有點古怪,儘管我確實成功地測試了它。我最擔心的是我無法找到很多社區對這種方法的確認。

這裡的人似乎很喜歡 Unison,但它似乎不再處於積極開發中,並且不清楚它是否具有像 lsyncd 這樣的自動觸發器。

我見過提到的Gluster,但可能對我需要的東西有點矯枉過正?

更新: fyi-我最終選擇了我提到的原始解決方案:lsyncd+csync2。它似乎工作得很好,我喜歡讓伺服器非常鬆散地連接的架構方法,這樣每台伺服器都可以無限期地獨立執行,而不管它們之間的連結質量如何。

帶有代理雙主模式下的DRBD是一個選項。

在您的情況下,我建議在雙主模式和 gfs 或 ocfs 中結合使用 DRBD。

雙主中的 DRBD 的缺點是它將以同步模式執行。但是寫入速度在這裡似乎並不重要,對吧?

DRBD 的替代方案可能是使用許多 (2+) iSCSI-Targets 的 Soft-Raid1 - 但我更喜歡具有兩個節點的 DRBD。

引用自:https://serverfault.com/questions/311305