簡體   English   中英

保持多台Linux服務器同步的最佳方法是什么?

[英]What's the best way to keep multiple Linux servers synced?

我在一個相當廣泛的區域有幾個不同的位置,每個位置都有一個存儲公司數據的Linux服務器。 這些數據每天在不同的位置以不同的方式變化。 我需要一種方法來使這些數據保持最新並在所有這些位置之間同步。

例如:

在一個位置,有人將一組圖像放在他們的本地服務器上。 在另一個位置,其他人在其本地服務器上放置一組文檔。 第三個位置將少量圖像和文檔添加到其服務器。 在其他兩個位置,根本不會對其本地服務器進行任何更改。 到第二天早上,我需要所有五個位置的服務器都擁有所有這些圖像和文檔。

我的第一直覺是使用rsync和一個cron作業來進行夜間同步(凌晨1點到早上6點左右),這時我們所在位置的所有帶寬都沒有被使用。 在我看來,最好讓一台服務器成為“中央”服務器,首先從其他服務器中提取所有文件。 然后它會將這些更改推回到每個遠程服務器? 或者是否有另一種更好的方法來執行此功能?

我的方式(在Debian / Ubuntu盒子上):

  • 使用dpkg --get-selections獲取已安裝的軟件包
  • 使用dpkg --set-selections從創建的列表中安裝這些包
  • 使用源代碼管理解決方案來管理配置文件。 我以集中的方式使用git,但是顛覆可以像使用一樣容易。

AFAIK, rsync是您的最佳選擇 ,它支持各種其他功能之間的部分文件更新。 設置完成后非常可靠。 您甚至可以使用帶時間戳的日志文件設置cron,以跟蹤每次運行中更新的內容。

如果rsync不是最適合您的解決方案,那么Unison就是另一種選擇。 Unison在Windows下工作,它有一些功能可以在雙方都有變化時進行處理(不一定需要選擇一個服務器作為主服務器,如你所建議的那樣)。

根據任務的復雜程度,任何一個都可以工作。

您可以(理論上)做的一件事是使用Python或其他東西創建腳本以及inotify內核功能(例如,通過pyinotify包)。

您可以運行腳本,該腳本注冊以接收特定樹上的事件。 然后,您的腳本可以查看目錄,然后在每個服務器上發生更改時更新所有其他服務器。

例如,如果有人將spreadsheet.doc上傳到服務器,腳本會立即看到它; 如果在5分鍾內沒有修改或刪除文檔,腳本可以將其復制到其他服務器(例如通過rsync)

理論上,這樣的系統可以從一台機器到另一台機器實現一種有限的“文件系統復制”。 有點干凈的想法,但你可能需要自己編寫代碼。

我不知道這有多實用,但源控制系統可能在這里工作。 在白天的某個時間點(可能每小時?),一個cron作業運行一個提交,一夜之間,每台機器都運行一個結賬。 當結帳需要運行時,你可能遇到長時間提交沒有完成的問題,基本上同樣的事情可以做rsync。

我想我的想法是中央服務器會讓你的同步操作更容易 - 沖突可以在中央處理一次,然后推送到其他機器。

rsync將是您的最佳選擇。 但您需要仔細考慮如何解決不同站點上相同數據更新之間的沖突。 如果site-1已更新'customers.doc'且site-2對同一文件有不同的更新,您將如何解決它?

我必須同意Matt McMinn,特別是因為它是公司數據,我使用源代碼控制,並且根據變化率,更頻繁地運行它。

我認為中央票據交換所是個好主意。

取決於以下*需要同步多少台服務器/計算機? **如果有太多服務器使用rsync成為問題**要么使用線程並同時同步到多個服務器,要么一個接一個地同步。 因此,在后一種情況下,您在給定時間點查看源計算機上的高負載或服務器(在集群中)的一致數據

  • 需要同步的文件夾的大小以及更改的頻率

    • 如果數據很大,那么rsync將需要時間。
  • 文件數量

    • 如果文件數量很大,特別是如果它們是小文件,則rsync將再次花費大量時間

所有這些都取決於是否使用rsync,NFS,Version控件的場景

  • 如果服務器數量較少,數據量較少,那么每小時運行一次rysnc是有意義的。 如果數據偶爾發生變化,您還可以將內容打包到RPM中

通過提供的信息,IMO版本控制將最適合您。

如果兩個人上傳具有相同名稱的不同文件,則Rsync / scp可能會出現問題。 多個位置的NFS需要完美地構建

為什么不擁有單個/多個存儲庫,每個存儲庫只提交到這些存儲庫。 您需要做的就是保持存儲庫同步。 如果數據很大且更新頻繁,那么您的存儲庫服務器將需要大量的RAM和良好的I / O子系統

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM