天天看點

sersync實作多台伺服器實時同步檔案

基本架構

   如上圖所示,線程組線程是等待線程隊列的守護線程,當隊列中有資料的時候,線程組守護線程逐個喚醒,當隊列中inotify事件較多的時候就會被全部喚醒一起工作。這樣設計的目的是能夠同時處理多個inotify事件,重發利用伺服器的并發能力(核數*2+2)。

   之是以稱之為線程組線程,是因為每個線程在工作的時候,會根據伺服器的數量建立子線程,子線程可以保證所有的檔案與各個伺服器同時同步,當要同步的檔案較大的時候,這樣設計可以保證各個遠端伺服器可以同時獲得要同步的檔案。

   服務線程的作用有三個,首先是處理同步失敗的檔案,将這些檔案再次同步,對于再次同步失敗的檔案會生成rsync_fail_log.sh腳本,記錄失敗的事件。同時每隔10個小時執行腳本一次,同時清空腳本。服務線程的第三個作用是crontab功能,可以每隔一定時間,将所有路徑整體同步一次。

由此圖總結可見:

◆sersync支援多線程;

◆支援隊列過濾,節省網絡帶寬;

◆失敗後重傳機制;

◆具有socket,httpd等套接字,友善二次開發。

sersync還具有一下機制:

◆能實作雙向同步,隻需要在兩個機器上都配置就行了;

◆雙向同步過程中,如果同僚修改一個檔案,則以時間為準

1 、server端安裝配置(不用啟動rsync)

這裡rsync使用了認證使用者和密碼,是以要定義一下密碼檔案(相當于--password-file=/etc/rsyncd/rsync.pass)

然後修改權限

修改配置檔案confxml.xml

2、client配置rsync服務

首先安裝rsync

建立rsync的配置檔案

vim /etc/rsyncd.conf

定義密碼檔案

開啟服務

如果需要将sersync運作前,已經存在的所有檔案或目錄全部同步到遠端,要以-r參數運作sersync,将本地與遠端整體同步一次。

如果設定了過濾器,即在xml檔案中,filter為true,則暫時不能使用-r參數進行整體同步。-r參數将會無效

開啟服務使用以下指令

對于sersync使用可執行檔案目錄下的預設配置檔案confxml.xml,如果需要使用另一個配置檔案,可以使用-o參數指定其它配置檔案。

指定預設的線程池的線程總數

——————————————

拉取,即同步複制rsync server的檔案至web1,web2

本地複制

遠端複制