主頁 > 其他 > Web集群中文件存儲系統的解決方案

Web集群中文件存儲系統的解決方案

PDF版本

Web集群中,文件系統的分布式是最重要的一個環節,因為多個Web節點需要訪問同一套文件系統,多個節點之間訪問文件需要完全同步,跟一臺機器上的文件一樣。

首先Web集群需要一個Load Balancer,然后多個節點共享數據庫和文件系統,比如訪問網站example.com,上傳了一個文件,這個時候通過LB轉發到了A節點,那么文件保存到了A機器,然后我們刷新頁面,LB轉發到了B節點,如果這個文件在B機器上不存在,就會產生錯誤。
在Drual系統中就是Files目錄,比如我們在A網站上生成了一個image style,如果LB再訪問到B上面,如果這個image style不存在,就會出錯。

上面的問題,就是我們本文要解決的Web集群中的文件共享。

另外,drupal也有臨時文件目錄,這個要不要放到共享文件夾里面呢?這個答案請移步這里:
集群服務器,需要共享temp文件夾嗎?

那么WEB服務器集群中,文件同步的方案主要有一下幾個解決方案。

Rsync

Rsync是最簡單的解決方案,通過Linux的rsync命令,就可以非常迅速的實現多個服務器的文件同步。但是Rsync有致命的缺點,首先,rsync會有延時,因為rsync是定時同步,不可能做到及時同步,因此會出現延時,比如傳到A機器的圖片在B機器上看不見。

說到延時,可以通過session sticky的方案來解決,session sticky簡單來說就是訪問A機器的用戶,會在之后的請求都訪問A機器,這樣就可以保證用戶在下次訪問文件的時候不出錯。

但是,rsync還有一些問題,比如,A機器上面有一個文件,而B機器上面沒有這個文件,從理論上講,我們不知道是B機器刪除了這個文件,還是A機器新加了這個問題,因此這個時候『同步』就是一個很頭疼的問題。

因此,Rsync不是一個有效的解決方案。

GlusterFS

GlusterFS(GNU ClusterFile System)是一個開源的分布式文件系統,它的歷史可以追溯到2006年,最初的目標是代替Lustre和GPFS分布式文件系統。現在,GlusterFS在開源社區活躍度非常高,已經與Lustre、MooseFS、CEPH并列成為四大開源分布式文件系統。
Glusterfs主要有三種基本的集群模式,即分布式集群(Distributed cluster)、條帶集群(Stripe cluster)、復制集群(Replica cluster)。這三種基本集群還可以采用類似堆積木的方式,構成更加復雜的復合集群。
當然,GlusterFS不是一個完美的分布式文件系統,這個系統自身也有許多不足之處,包括眾所周知的元數據性能和小文件問題。

Gluster通過簡單的brick組成一個volume,這個volume就可以被各種終端使用,比如FUSE或者NFS協議等等使用。

具體的GlusterFS的講解請參考這一篇文章:使用GlusterFS做為Drupal文件存儲的云服務

NFS

比較簡單的解決方案就是使用NFS服務,NFS做完linux系統廣泛通用的文件共享系統,從NFSv1,NFSv2到NFSv3和NFSv4,NFS也是非常穩定和久經考驗的解決方案。

NFS的缺點也是比較明顯的,單節點風險,比如NFS服務掛掉,整個文件就能訪問,網站Down掉,因此NFS只能作為一個暫存的解決方案,使用NFS一定要有一個備份系統。

NFS集群

說到NFS的缺點,我們可以使用NFS集群的方案來解決,NFS+DRBD, DRBD是一個用軟件實現的、無共享的、服務器之間鏡像塊設備內容的存儲復制解決方案,因此可以通過DRBD分發實現NFS的復制,來解決單節點NFS的缺點。

DRBD實際上是一種塊設備的實現,主要被用于Linux平臺下的高可用(HA)方案之中。他是有內核模塊和相關程序而組成,通過網絡通信來同步鏡像整個設備,有點類似于一個網絡RAID的功能。也就是說當你將數據寫入本地的DRBD設備上的文件系統時,數據會同時被發送到網絡中的另外一臺 主機之上,并以完全相同的形式記錄在一個文件系統中(實際上文件系統的創建也是由DRBD的同步來實現的)。本地節點(主機)與遠程節點(主機)的數據可以保證實時的同步,并保證IO的一致性。所以當本地節點的主機出現故障時,遠程節點的主機上還會保留有一份完全相同的數據,可以繼續使用,以達到高可用的目的。

DRBD需要構建在底層設備之上,然后構建出一個塊設備出來。對于用戶來說,一個DRBD設備,就像是一塊物理的磁盤,可以在商脈內創建文件系統。DRBD所支持的底層設備有以下這些類:
1. 一個磁盤,或者是磁盤的某一個分區;
2. 一個soft raid 設備;
3. 一個LVM的邏輯卷;
4. 一個EVMS(Enterprise Volume Management System,企業卷管理系統)的卷;
5. 其他任何的塊設備。

nfs-drbd

 

更多參考:

《Drupal 文件系統剖析(二)》

《File System和Stream Wrapper的原理介紹》

PS:本文參考了網上相關文章以及圖片。

相關提問,請到Drupal大學,http://drupal001.net


聲明: 本站所有文章歡迎轉載,所有文章未說明,均屬于原創,轉載均請注明出處。
本文有效鏈接: http://www.tbdskt.live/2015/06/multiple-servers-file-storage/
版權所有: Drupal與高性能網站架構 http://www.tbdskt.live


, , ,

評論:1

發表評論
  1. avatar
    回復 nolotus
    15/06/18

    不錯,希望多寫。或者更多細節,受教了

發表評論

電子郵件地址不會被公開。 必填項已用 * 標注


九 − = 6

您可以使用這些 HTML 標簽和屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

引用:0

下面所列的是引用到本博客的鏈接
Web集群中文件存儲系統的解決方案 來自 Drupal與高性能網站架構
頂部
四川时时彩投注平台