天天看點

fastdfs-分布式存儲設計指導(三)

分布式檔案存儲系統是應對海量檔案時所使用的的一種HA的存儲方案,如何實作檔案的橫向擴容,檔案備援備份,快速的配置擴充,高效的讀取以及跨語言的api是非常重要的。前兩章節介紹了關于fastdfs的安裝配置已經使用等,下面将從整個系統的架構,談一談如何設計一個基于fastdfs的分布式檔案存儲系統,進而适合各種基本的業務場景。

下面的架構流程圖

fastdfs-分布式存儲設計指導(三)

1、nginx的負載均衡,分發請求至應用伺服器。

2、應用伺服器叢集,每一個伺服器的應用都是相同的執行個體。

3、tracker追蹤伺服器叢集,這裡配置兩台。

4、storage存儲伺服器叢集,這裡分為三組,每一組兩台服務存儲,互為備份,每一組存儲的檔案都是相同的。

下面說一下各個叢集的配置。

一、應用伺服器叢集:

(1)應用伺服器不需要安裝fastdfs,但需要安裝fastdfs的php_client擴充安裝過程在前面以說們這裡不詳說),安裝完之後,将php_client/fastdfs_client.ini的内容追加到php.ini中,fastdfs_client.ini中注意配置fastdfs_client.tracker_group0 = /etc/fdfs/client.conf

(2)同時需要在/etc/下面建立fdfs檔案夾,再在fdfs先建立一個client.conf的檔案(先為空,後續它的内容将從安裝了fastdfs的伺服器中複制過來一份即可)

client.conf這個檔案裡面,主要是注意tracker_server這個配置項,因為這裡有兩個tracker,是以這裡需要配置兩個tracker_server,一行一個。

那麼它的整個過程是php通過client.conf這個檔案與tracker_server取得聯系,進而傳回關于一些storage伺服器的資訊,最後php與storage通信,完成上傳檔案功能。

二、tracker伺服器叢集

每一台的tracker伺服器都需要安裝fastdfs,安裝完畢後,将在/etc/fdfs/生産幾個個檔案,其中一個是trackered.conf,那麼對于trackered.conf伺服器,隻需要配置trackered.conf這個檔案即可,(配置過程請看前兩章),當然,我們也可以配置一下client.conf這個檔案,便于用于指令行測試上傳和下載下傳功能。在這裡我們可以将client.conf複制内容至應用伺服器的client.conf,再根據需求更改配置。

三、storage伺服器叢集

(1)每一台storage伺服器都要安裝fastdfs和nginx,還有fastdfs-nginx-module子產品(安裝過程請看前兩章)

(2)安裝完成後,每一台伺服器都會在/etc/fdfs下生成幾個配置檔案,有一個storaged.conf配置檔案,主要是設定裡面的group_name相同,比如group1,相同組名的是相同的一組,檔案互為備份。

(2)在配置mod_fastdfs.conf這個子產品配置檔案,group_name與本組storaged.conf相同,tracker_server有多少個就寫多少個,一行一個。例如tracker_server=192.168.1.67:22122,請參考前面兩章配置。

然後再配置nginx.conf這個配置檔案。

這裡mod_fasfdfs.conf這個檔案時放在/etc/fastdfs下面的,在nginx.conf配置好之後,将會通過這個配置檔案和tracker服務叢集取得聯系,傳回一些storage叢集的資訊。然後nginx在與storage通信通路。

那麼對于上面的這個流程圖來說

第一步:

首先在web前端上傳檔案至應用伺服器,上傳完畢後,應用伺服器通過php_client的api将檔案準備傳至storag伺服器叢集。

第二步:

檔案上傳至storage伺服器叢集後,傳回檔案相關的資訊,應用伺服器儲存資訊值相關資料庫。

第三步:

前端通過nginx代理通路存貯伺服器,直接将通路storage伺服器叢集的檔案

以上隻是本人在實驗性驗證過程,還沒有在真實生産環境使用,其實這個隻是一個大概的過程,裡面還有許多技術細節,比如從應用伺服器上傳至storage叢集,這個需要用到異步或者多線程來實作,因為使用者在浏覽器上傳完畢後,這個過程是一直在等待的,上傳大檔案本來就比較長時間,上傳到應用伺服器的臨時檔案夾後,再要上傳至storage,那麼這個過程就更加長了。是以,我們希望從應用伺服器上傳至storage叢集時,能夠異步上傳,然後再回調請求應用伺服器。

繼續閱讀