首頁>技術>

高可用分散式檔案系統的組建

傳統的單機版Web應用的檔案管理方式,例如圖片和影片檔案的上傳和使用等,大多是將檔案儲存在伺服器本地,但這種管理方式無法應用在微服務應用中。一方面,微服務應用釋出在分散式環境中,隨時隨地都可以進行多副本的部署,所以它的媒體檔案必須存放在一個統一的地方。另一方面,建立一個獨立而高效的檔案系統,也是高可用、高效能應用平臺的一個有機組成部分。

如果我們租用雲服務,就可以使用雲服務商提供的分散式檔案系統,例如,阿里雲或騰訊雲的物件儲存OSs。

下面,為了加深讀者對分散式檔案系統的理解,我們使用開源的FastDFS構建一個高可用的分散式檔案系統。

FastDFS架構

FastDFS是一個輕量級的分散式檔案系統,使用FastDFS可以搭建一個高可用且可持續擴充套件的分散式檔案系統。

FastDFS由跟蹤器(Tracker)和儲存節點(Storage)兩部分組成。跟蹤器用來排程來自客戶端的請求,並記錄儲存伺服器的資訊。儲存節點用來儲存檔案及其屬性,同時進行檔案同步處理工作。檔案的儲存還使用分組(或分卷)的方式進行組織。搭建兩個以上的跟蹤器就可以組成一個高可用的分散式檔案系統,如圖14-1所示。

基於圖14-1所示的架構設計,我們將使用四臺伺服器搭建一個高可用的分散式檔案系統,程式碼如下所示。

Tracker Server1: 10.10.10.22Tracker Server2:10.10.10.32Storagel:10.10.10.23Storage2:10.10.10.33

在這種架構設計中,增加儲存節點即可提高和擴充套件檔案的存取效能。在安裝了分散式檔案系統之後,即可使用Nginx為 Web端的檔案訪問搭建一個負載均衡服務。

本章會用到下列所示的安裝包,讀者可自行從網上下載。

libfastcommon-1.0.35.tar.gzfastdfs-5.10.tar.gzpcre-8.40.tar.gznginx-1.10.3.tar.gz
FastDFS的安裝

下列安裝過程在四個伺服器中都要完成。假設把下載的安裝包都放在目錄/opt 中。

首先,建立FastDFS 和 Nginx使用者:

useradd fastdfs -M -s/sbin/nologinuseradd nginx一M -s /sbin/nologin

然後,安裝編譯環境:

yum -y install gcc gcc+ gcc-c++ openssl openssl-devel pcre pcre-deve

安裝libfastcommon,按順序執行下列命令:

tar -zxVf libfastcommon-1.0.35.tar.gzcd libfastcommon-1.0.35./make.sh./make.sh install

完成之後,建立下列所示的軟連結,以便安裝程式能夠找到相關的庫檔案:

ln -sv /usr/include/fastcommon /usr/local/include/fastcommonln -sv /usr/include/fastdfs /usr/local/include/fastdfsln -sv /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so

按順序執行下列命令,安裝FastDFS:

tar -zxv fastdfs-5.10.tar.gzcd fastdfs-5.10./make.sh./make.sh install

安裝結束後將輸出成功標誌,接下來配置各個服務。

跟蹤伺服器配置

在Tracker Server機器上,建立資料儲存目錄:

mkdir -p /data/fastdfs/tracker

按順序執行下列命令,編輯tracker.conf配置:

cd /etc/fdfscp tracker.conf.sample tracker.confvi /etc/fdfs/tracker.conf

在配置檔案中編輯下列各項配置:

#繫結IP地址,如果為空,則表示使用本機IP地址bind addr=#埠port=22122#連線超時時間connect timeout=30#日誌資料路徑base path=/data/fastdfs/tracker#上傳檔案時選擇group 的方法#0:輪詢,1:指定組,2:選擇剩餘空間最大store lookup=2#如果上面的配置是1,那麼這裡必須指定組名store group-group2#上傳檔案時選擇server的方法#0:輪詢,1:按IP地址排序,2:按權重排序store server=0#storage上預留的空間reserved storage space =10%http.server port=8080

儲存並退出,然後使用下列命令啟動Tracker Server:

service fdfs trackerd start

使用下列命令檢視Tracker Server 監聽的埠:

netstat -unltplgrep fdfs
儲存節點配置

在 Storage伺服器上,建立如下所示的資料儲存目錄:

mkdir -p/data/fdfs storage/basemkdir -p /data/fdfs storage/storage0mkdir -p /data/fdfs_storage/storage1

按順序執行下列命令,編輯儲存節點配置:

cd /etc/fdfscp storage.conf.sample storage.confvi storage.conf

按下列命令編輯各項內容:

#storage server所屬組名group name=group1#繫結IP地址bind addr=#storage server的埠port=23000#連線超時時間connect timeout=30#日誌資料路徑base path=/data/fdfs storage/base#storage path 的個數store pathcount=2store path0=/data/fdfs storage/storage0store pathl=/data/fdfs storage/storagel#跟蹤伺服器tracker server=10.10.10.22:22122tracker server=10.10.10.32:22122

儲存編輯後,使用下列命令啟動儲存節點:

service fdfs_storaged start

使用下列命令檢查服務執行狀態:

/usr/bin/fdfs monitor /etc/fdfs/storage.conf
上傳檔案測試

現在回到Tracker Server機器上(如IP地址為10.10.10.22),使用下列方法進行上傳檔案測試。

按順序執行如下命令,編輯客戶端配置:

cd /etc/fdfscp client.conf.sample client.confvi /etc/fdfs/client.conf

修改下列各項內容:

base path=/data/fastdfs/tracker #Tracker伺服器上的檔案路徑tracker server=10.10.10.22:22122 #Tracker伺服器的IP地址和埠號http.tracker_server port=8080 # Tracker伺服器上的HTTP埠號,必須和Tracker的#設定一樣

假如在/opt 中存在一個圖片檔案為1.png,則可以使用如下命令上傳檔案:

/usr/bin/fdfs upload file /etc/fdfs/client.conf /opt/1.png

若上傳成功,則返回如下所示的檔案資訊:

13
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • ASP.NET實戰024:Win Server配置安裝IIS