Skip to content

使用 GlusterFS 在 Ubuntu 上建構雙節點叢集檔案系統

Published: 4 分鐘

在網站的叢集系統中,除了資料庫需要讓各個伺服器存取外,常常也會需要讓檔案(圖檔, CSS 等等)可以被叢集中的伺服器存取。 傳統上,常常使用 NFS 伺服器來達到此目的,但 NFS 本身往往成為單一失敗點(single point of failure)。 本文介紹 GlusterFS 來建構一個簡單的雙節點叢集檔案系統,具備高可用性、高擴充性等特性。

GlusterFS 是一套純軟體實現的檔案存儲解決方案,使用它的原因除了因為它具備叢集檔案系統必須的高可用性、 高擴充性以及可靠性等優點外,主要在於其安裝與管理上的簡易性。

目標

  • 要在兩個節點之間採用複製模式(replication),建立叢集檔案系統。在此模式下,任一台故障,都不會影響檔案的可存取性。

前提假設

  • 假設叢集中有兩個節點,主機名稱分別為 node1 跟 node2。
  • 作業系統為: Utuntu 10.04 64-bit
  • GlusterFS 版本: 3.2.x
  • 所有安裝操作都是以 root 權限進行。
  • node1 跟 node2 上作為真正儲存空間的檔案路徑:/exp1。
  • 叢集的 Volume 名稱(webshare)。
  • /srv/cfs 為共享的檔案目錄,任一主機可以同時對此目錄修改,其他主機可以即時看到修改後的結果。

安裝 GlusterFS

下載 GlusterFS

到 GlusterFS 官網提供的下載網址,下載 Ubuntu 專用的安裝包。

EDIT 2015-09-06: 本文使用的版本, GlusterFS 已經不再提供下載。

執行安裝指令

# apt-get -y install glusterfs_3.2.6-1_amd64.deb

建立叢集檔案系統

從 node1 的命令列,執行下列指令:

# gluster peer probe node2
# gluster peer status
Number of Peers: 1

Hostname: node2
Uuid: cf79a2b7-39f3-40fc-a629-f980d8683cf2
State: Peer in Cluster (Connected)

注意 UUID 會跟環境有所不同。

建立 Volume

# gluster volume create webshare replica 2 transport tcp node1:/exp1 node2:/exp1
Creation of test-volume has been successful
Please start the volume to access data.

筆者伺服器內部使用 IP 網段為 192.168.x.x, 因此設定這個 volume 只能由同網段的伺服器存取。

# gluster volume set webshare auth.allow 192.168.*

設定 GlusterFS 客戶端

本文所介紹的設置方式,檔案系統的客戶端跟伺服端都需要在同一主機設定。由於希望能夠一開機時就自動掛載(mount) /srv/cfs,需要在/etc/fstab 中新增下列內容:

localhost:/webshare    /srv/cfs   glusterfs defaults,_netdev      0       0

可能因為 fuse 模組載入順序或者其他因素,在/etc/fstab 作上述設定並無法成功讓/opt/cfs 自動被掛載,需要在/etc/rc.local 中加入(加在最後的 exit 0 敘述前):

mount /srv/cfs

結語

透過這樣的設定,兩個節點可以即時分享檔案,只要將網站要用到的檔案佈署到這個叢集檔案目錄,不管客戶是從哪一台伺服器進入,應該都可以檢視同樣的內容。

郭信義 (Sam Kuo)

奔騰網路科技技術長,專長分散式系統、Web 應用與雲端服務架構、設計、開發、部署與維運。工作之餘,喜歡關注自由軟體的發展與應用,偶爾寫一下部落格文章。

你可能會有興趣的文章