2012年11月11日 星期日

深入淺出Gluster Geo-replication

Gluster Geo-replication是什麼?

Gluster Geo-replication(下稱geo-replication)是一種異地備份技術,它主要應用在於把Cluster中的一個volume,近乎即時地(near real-time)透過wan備份到遠端。本文主旨不在如何使用geo-replication,而是深入探討它內部之運作方式,若有未儘或錯誤之處再請各位讀者隨時指正。

設定geo-replication時,須指定一個master volume及一個slave volume,slave也可以是路徑不一定得是gluster volume。master代表的是將被備份的資料來源,而slave代表的則是備份的目的地。

Gluster Geo-replication的運作主要依靠三個元件:


  1. Marker translator
  2. Crawler
  3. Syncer

Marker translator

在啟動geo-replication後,gluster會啟動marker這個translator。在第一次啟動時,marker會對master volume內的所有檔案賦予一個叫做xtime的extended attribute,這也是為什麼geo-replication要求cluster的時間要一致的原因。並同時透過syncer將檔案連同xtime做rsync送至slave。而之後這個marker會做什麼事呢?marker會攔截master volume的檔案操作,並在每個檔案(或資料夾)被操作時,去更新該檔案的xtime,以及該檔案的所有祖先的xtime。圖解如下。(為簡化說明,筆者假設master和slave皆為gluster volume)

Step 1:


啟動marker後,marker會為所有檔案建立xtime,並將檔案連同xtime送至slave端。

Step 2:

當有使用者透過任何一個節點操作檔案時,marker會更新該檔案的xtime。

Step 3:

接著更新所有該檔案的祖先的xtime。

marker的工作到此結束,剩下就是crawler和syncer的工作。

Crawler

而crawler做什麼事呢?crawler會不斷地監視master及slave兩端root的xtime。而root的xtime有更新時,便掃描在它的子檔案及子資料夾的xtime,若沒更新則不做任何事,若是檔案且xtime有更新,便把該檔案加入syncer的list中;若是資料夾xtime有更新便進去裡頭重覆上述的動作。遞迴式地爬完所有有更新xtime的地方。對刪除的處理而是若slave有該檔案或資料夾,而master沒有的話便刪除。如圖所示。




crawler只要不斷監視兩端root的xtime,並透過marker的幫忙,能有目地的搜尋並找到被變更的檔案。接著把檔案加入syncer的list中。

Syncer

最後是syncer,syncer的工作是負責將crawler收到的file list連同xtime透過rsync送至slave端,這樣便不會在下次的monitor中被重送。


整個來說,筆者給geo-replication技術下的註解是:「有目的地的rsync。」

希望這篇文章對希望了解geo-replication技術的人有幫助。