透過分散式檔案系統進行備份

透過分散式檔案系統進行備份

我希望我能盡可能準確地闡明我的問題。

我正在尋找一種方法來盡快且頻繁地為我的虛擬機器伺服器進行備份,因為它們正在處理/生成的資料很有價值。我有一個 KVM 主機和至少 2 個來賓:Web 伺服器 (Apache/PHP) 和資料庫伺服器 (MySQL/Solr)。我不太關心主人,但關心客人。我不想讓您深入了解這個主題的 KVM 或虛擬化。該執行緒應該適用於所有基於 vm 的環境以及所有其他環境。虛擬機器場景非常適合,因為它更棘手,並且代表了我想像中最複雜的情況之一。至少,我需要在此基礎上。

目前,我有虛擬機器內備份和基於 LVM 的快照,每天產生 1-2 次。如果發生硬體故障(我最近遇到過),在最好的情況下我會丟失一大堆資料。

因此,一種方法可能是減少每個應用程式/服務並應用可用的最佳備份策略。應根據具體情況進行考慮。

另一個有趣的方法似乎是使用分散式檔案系統。這個想法是建立一個有點像 MySQL 的二進位日誌的檔案系統。或者更一般地說:它會捕獲檔案系統上的所有寫入操作並將其非同步複製到另一台電腦。根據網路和寫入的資料量,這可能會導致幾秒鐘或幾分鐘的延遲,不用說它會錯過快取中保留的所有操作。因此,我有一個虛擬機器位於安裝在虛擬機器主機上的分散式檔案系統上。然後,每個寫入作業都會非同步應用於(例如)備份伺服器。當現在出現硬體故障時,我可以切換到備份伺服器(理論上)作為新的主伺服器,或者簡單地將檔案複製回恢復的主伺服器,以防萬一,停機比資料遺失更容易接受。其效果應該是虛擬機器的行為就像在幾秒到幾分鐘前才剛關閉一樣。但不是幾個小時。我不尋求檔案系統層級的主主複製,因為大多數應用程式不支援這種複製,尤其是像 MySQL 這樣的資料庫伺服器!

所以我的問題是:是否有人已經在此類配置方面積累了一些經驗,或者擁有對於備份資料嘗試有利和不利的知識?我對這些文件系統沒有深入的經驗。特別是在可靠性和性能方面。

答案1

分散式檔案系統不是備份,而是冗餘。它還會“備份”您的意外刪除。

也就是說,DRBD

答案2

針對您的情況的最佳答案是叢集存儲,其中資料在區塊層級冗餘存儲。有幾種不同的方法來實現這一點,但我能想像的最好的方法(至少按照您的正常運行時間規範)將是開放堆疊叢集。 Openstack 將分配儲存和運算,以便在發生硬體故障時,執行和儲存都是冗餘且不間斷的。換句話說,維護資料完整性和正常運行時間的最佳方法是先確保應用程式不會崩潰。正如 yoonix 指出的那樣,這不會保護您免受用戶/邏輯錯誤的影響,但開放​​堆疊還包括用於磁碟映像/備份的工具 - 載入映像和啟動需要幾分鐘(如果不是幾秒鐘)。 Amazon Web Services 和 Rackspace 是 OpenStack 部署的範例。 http://www.openstack.org/

devstack 是開始使用 openstack 的一個好地方(幾乎是一個部署腳本,具有各種不同的部署模式可供測試) http://devstack.org/

這種實現的弱點是缺乏硬件,該系統在只有兩台實體伺服器等的小型辦公室中並不完全適用(儘管與刀片系統配合使用效果很好)

答案3

您是否考慮過遷移到 VMware 平台並使用他們的解決方案?

「容錯」(使用 vLockstep)可讓任何虛擬機器的第二個「備用」副本保持最新狀態,並包含對虛擬機器主版本所做的所有變更。如果主版本出現問題,系統會立即故障轉移到輔助虛擬機器。 (幾乎沒有停機時間或影響)

「高可用性」可讓備用虛擬機器保持準備狀態,但備用虛擬機器保持關閉狀態。如果主虛擬機器發生故障,系統會自動在備用虛擬機器上啟動。 (停機幾分鐘)

這個東西效果很好而且非常可靠。但是……很貴。如果您沒有運行這些技術所需的許可預算,那麼此建議對您根本沒有幫助。希望它至少能讓您對現有的工具有更多的了解。

相關內容