FastDFS搭建文件管理系統(tǒng)

1.什么是FastDFS屈张?

????????FastDFS是用c語(yǔ)言編寫的一款開源的分布式文件系統(tǒng)擒权。FastDFS為互聯(lián)網(wǎng)量身定制,充分考慮了冗余備份阁谆、負(fù)載均衡碳抄、線性擴(kuò)容等機(jī)制,并注重高可用场绿、高性能等指標(biāo)剖效,使用FastDFS很容易搭建一套高性能的文件服務(wù)器集群提供文件上傳、下載等服務(wù)焰盗。

2.FastDFS架構(gòu)

????????FastDFS架構(gòu)包括 Tracker server和Storage server璧尸。客戶端請(qǐng)求Tracker server進(jìn)行文件上傳熬拒、下載爷光,通過Tracker server調(diào)度最終由Storage server完成文件上傳和下載。

Tracker server作用是負(fù)載均衡和調(diào)度澎粟,通過Tracker server在文件上傳時(shí)可以根據(jù)一些策略找到Storage server提供文件上傳服務(wù)蛀序。可以將tracker稱為追蹤服務(wù)器或調(diào)度服務(wù)器活烙。

Storage server作用是文件存儲(chǔ)徐裸,客戶端上傳的文件最終存儲(chǔ)在Storage服務(wù)器上,Storage server沒有實(shí)現(xiàn)自己的文件系統(tǒng)而是利用操作系統(tǒng) 的文件系統(tǒng)來管理文件啸盏≈睾兀可以將storage稱為存儲(chǔ)服務(wù)器


????????服務(wù)端兩個(gè)角色:

????????Tracker:管理集群,tracker也可以實(shí)現(xiàn)集群回懦。每個(gè)tracker節(jié)點(diǎn)地位平等气笙。

收集Storage集群的狀態(tài)。FastDFS集群中的Tracker server可以有多臺(tái)粉怕,Tracker server之間是相互平等關(guān)系同時(shí)提供服務(wù)健民,Tracker server不存在單點(diǎn)故障抒巢∑侗矗客戶端請(qǐng)求Tracker server采用輪詢方式,如果請(qǐng)求的tracker無(wú)法提供服務(wù)則換另一個(gè)tracker。

????????Storage:實(shí)際保存文件稚晚,Storage分為多個(gè)組崇堵,每個(gè)組之間保存的文件是不同的。每個(gè)組內(nèi)部可以有多個(gè)成員客燕,組成員內(nèi)部保存的內(nèi)容是一樣的鸳劳,組成員的地位是一致的,沒有主從的概念也搓。Storage集群采用了分組存儲(chǔ)方式赏廓。storage集群由一個(gè)或多個(gè)組構(gòu)成,集群存儲(chǔ)總?cè)萘繛榧褐兴薪M的存儲(chǔ)容量之和傍妒。一個(gè)組由一臺(tái)或多臺(tái)存儲(chǔ)服務(wù)器組成幔摸,組內(nèi)的Storage server之間是平等關(guān)系,不同組的Storage server之間不會(huì)相互通信颤练,同組內(nèi)的Storage server之間會(huì)相互連接進(jìn)行文件同步既忆,從而保證同組內(nèi)每個(gè)storage上的文件完全一致的。一個(gè)組的存儲(chǔ)容量為該組內(nèi)存儲(chǔ)服務(wù)器容量最小的那個(gè)嗦玖,由此可見組內(nèi)存儲(chǔ)服務(wù)器的軟硬件配置最好是一致的患雇。

采用分組存儲(chǔ)方式的好處是靈活、可控性較強(qiáng)宇挫。比如上傳文件時(shí)苛吱,可以由客戶端直接指定上傳到的組也可以由tracker進(jìn)行調(diào)度選擇。一個(gè)分組的存儲(chǔ)服務(wù)器訪問壓力較大時(shí)器瘪,可以在該組增加存儲(chǔ)服務(wù)器來擴(kuò)充服務(wù)能力(縱向擴(kuò)容)又谋。當(dāng)系統(tǒng)容量不足時(shí),可以增加組來擴(kuò)充存儲(chǔ)容量(橫向擴(kuò)容)娱局。

3.文件上傳的流程


????????客戶端上傳文件后存儲(chǔ)服務(wù)器將文件ID返回給客戶端彰亥,此文件ID用于以后訪問該文件的索引信息。文件索引信息包括:組名衰齐,虛擬磁盤路徑任斋,數(shù)據(jù)兩級(jí)目錄,文件名耻涛。例如:

????????組名:文件上傳后所在的storage組名稱废酷,在文件上傳成功后有storage服務(wù)器返回,需要客戶端自行保存抹缕。

????????虛擬磁盤路徑:storage配置的虛擬路徑澈蟆,與磁盤選項(xiàng)store_path*對(duì)應(yīng)。如果配置了store_path0則是M00卓研,如果配置了store_path1則是M01趴俘,以此類推睹簇。

????????數(shù)據(jù)兩級(jí)目錄:storage服務(wù)器在每個(gè)虛擬磁盤路徑下創(chuàng)建的兩級(jí)目錄,用于存儲(chǔ)數(shù)據(jù)文件寥闪。

????????文件名:與文件上傳時(shí)不同太惠。是由存儲(chǔ)服務(wù)器根據(jù)特定信息生成,文件名包含:源存儲(chǔ)服務(wù)器IP地址疲憋、文件創(chuàng)建時(shí)間戳凿渊、文件大小、隨機(jī)數(shù)和文件拓展名等信息缚柳。

4.文件下載的流程


????????tracker根據(jù)請(qǐng)求的文件路徑即文件ID 來快速定義文件埃脏。比如請(qǐng)求下邊的文件:

????????1.通過組名tracker能夠很快的定位到客戶端需要訪問的存儲(chǔ)服務(wù)器組是group1,并選擇合適的存儲(chǔ)服務(wù)器提供客戶端訪問秋忙。 ?

????????2.存儲(chǔ)服務(wù)器根據(jù)“文件存儲(chǔ)虛擬磁盤路徑”和“數(shù)據(jù)文件兩級(jí)目錄”可以很快定位到文件所在目錄剂癌,并根據(jù)文件名找到客戶端需要訪問的文件。

5.FastDFS安裝

5.1FastDFS--tracker安裝

5.1.1FastDFS安裝環(huán)境? ? ? ?

?????????FastDFS是C語(yǔ)言開發(fā)翰绊,建議在linux上運(yùn)行佩谷,本教程使用Centos7作為安裝環(huán)境。

????????安裝FastDFS需要先將官網(wǎng)下載的源碼進(jìn)行編譯监嗜,編譯依賴gcc環(huán)境谐檀,如果沒有g(shù)cc環(huán)境,需要安裝gcc:

????????yum install gcc-c++

5.1.2安裝libfastcommon

????????下載:下載libfastcommon

????????將libfastcommon.zip復(fù)制到linux系統(tǒng)的/usr/local目錄下并解壓:unzip libfastcommon.zip

? ??????cd libfastcommon

????????./make.sh

????????./make.sh install

5.1.3安裝libevent

? ??????FastDFS依賴libevent庫(kù)裁奇,需要安裝:

????????yum -y install libevent

5.1.4tracker編譯安裝

? ??????將fastdfs.zip拷貝至/usr/local/下并解壓:

????????unzip fastdfs.zip

? ? ? ? cd fastdfs

? ? ? ?編譯: ./make.sh

? ? ? ?安裝:./make.sh install

5.1.5配置

????????cd? /etc/fdfs

????????拷貝一份新的tracker配置文件:

????????cp tracker.conf.sample tracker.conf

????????修改tracker.conf

????????vim tracker.conf

????????base_path=/home/yuqing/FastDFS???

????????改為:

????????base_path=/home/FastDFS

5.1.6啟動(dòng)tracker

????????/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

5.2安裝FastDFS--storage

在安裝tracker時(shí)已經(jīng)安裝了libevent與libfastcommon兩個(gè)庫(kù)桐猬。編譯安裝tracker時(shí)也已經(jīng)把storage一同編譯安裝了。

?5.2.1配置storage

? ? ? ? cd? /etc/fdfs

? ??????拷貝一份新的storage配置文件:

????????cp storage.conf.sample storage.conf

????????修改storage.conf

????????vim storage.conf

? ??????group_name=group1

????????base_path=/home/yuqing/FastDFS改為:????????base_path=/home/FastDFS

????????store_path0=/home/yuqing/FastDFS改為:????????store_path0=/home/FastDFS/fdfs_storage

? ??????#如果有多個(gè)掛載磁盤則定義多個(gè)store_path刽肠,如下

????????#store_path1=.....

????????#store_path2=......

????????tracker_server=192.168.xx.xx:22122#配置tracker服務(wù)器:IP

????????#如果有多個(gè)則配置多個(gè)tracker

????????tracker_server=192.168.xx.xx:22122

5.2.2啟動(dòng)storage

????????/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

6.上傳圖片測(cè)試

??????? FastDFS安裝成功可通過/usr/bin/fdfs_test測(cè)試上傳溃肪、下載等操作。?

????????修改/etc/fdfs/client.conf ??

? ??????base_path=/home/fastdfs

????????tracker_server=192.168.xx.xx:22122

? ??????使用格式:

????????/usr/bin/fdfs_test客戶端配置文件地址upload上傳文件

? ??????比如將/home下的圖片上傳到FastDFS中:

????????/usr/bin/fdfs_test /etc/fdfs/client.conf upload /root/picture.jpeg

? ??????http://192.168.xx.xxx/group1/M00/00/00/wKgghFwqIqaAJKEWAAE8SA5LkVU02_big.jpeg就是文件的下載路徑音五。

? ??????對(duì)應(yīng)stroage服務(wù)器上的/home/FastDFS/fdfs_storage/data/00/00/wKgghFwqIqaAJKEWAAE8SA5LkVU02_big.jpeg文件惫撰。

? ??????由于現(xiàn)在還沒有和nginx整合無(wú)法使用http下載。

7.FastDFS和nginx整合

7.1FastDFS-nginx-module

????????下載FastDFS-nginx-module?

? ? ? ? 將FastDFS-nginx-module.zip傳至/usr/local/下?并解壓

? ? ? ? unzip?fastdfs-nginx-module.zip

? ??????cd FastDFS-nginx-module/src

????????修改config文件將/usr/local/路徑改為/usr/

????????將FastDFS-nginx-module/src下的mod_fastdfs.conf拷貝至/etc/fdfs/下?????????? ? ?

????????cp mod_FastDFS.conf /etc/fdfs/

????????并修改mod_FastDFS.conf的內(nèi)容:

????????vim /etc/fdfs/mod_FastDFS.conf

????????base_path=/home/FastDFS

????????tracker_server=192.168.xx.xx:22122

????????#tracker_server=192.168.xx.xx:22122(多個(gè)tracker配置多行)

????????url_have_group_name=true? #url中包含group名稱

????????store_path0=/home/FastDFS/fdfs_storage #指定文件存儲(chǔ)路徑

????????將libfdfsclient.so拷貝至/usr/lib下

????????cp /usr/lib64/libfdfsclient.so /usr/lib/

????????創(chuàng)建nginx/client目錄

????????mkdir -p /var/temp/nginx/client

?7.2安裝nginx

? ? ? ? 添加FastDFS-nginx-module模塊

? ? ? ? ./configure \

????????--prefix=/usr/local/nginx \

????????--pid-path=/var/run/nginx/nginx.pid \

????????--lock-path=/var/lock/nginx.lock \

????????--error-log-path=/var/log/nginx/error.log \

????????--http-log-path=/var/log/nginx/access.log \

????????--with-http_gzip_static_module \

????????--http-client-body-temp-path=/var/temp/nginx/client \

????????--http-proxy-temp-path=/var/temp/nginx/proxy \

????????--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \

????????--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \

????????--http-scgi-temp-path=/var/temp/nginx/scgi \

????????--add-module=/usr/local/fastdfs-nginx-module/src

? ? ? ? 編譯:make

? ? ? ? 安裝:make install

7.3nginx配置文件

? ????cd /usr/local/nginx

? ? ? ?在nginx.conf方件中添加server:

????????server {

????????????????listen ??????80;

????????????????server_name ?192.168.xx.xx;

????????????????location /group1/M00/{

????????????????????????#root /home/FastDFS/fdfs_storage/data;

????????????????????????ngx_fastdfs_module;

? ? ? ? ????????}

????????}

????? ? ??說明:

????????server_name指定本機(jī)ip

????????location /group1/M00/:group1為nginx 服務(wù) FastDFS的分組名稱躺涝,M00是FastDFS自動(dòng)生成編號(hào)厨钻,對(duì)應(yīng)store_path0=/home/FastDFS/fdfs_storage,如果FastDFS定義store_path1坚嗜,這里就是M01

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末夯膀,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子苍蔬,更是在濱河造成了極大的恐慌诱建,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碟绑,死亡現(xiàn)場(chǎng)離奇詭異俺猿,居然都是意外死亡茎匠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門辜荠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人抓狭,你說我怎么就攤上這事伯病。” “怎么了否过?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵午笛,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我苗桂,道長(zhǎng)药磺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任煤伟,我火速辦了婚禮癌佩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘便锨。我一直安慰自己围辙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布放案。 她就那樣靜靜地躺著姚建,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吱殉。 梳的紋絲不亂的頭發(fā)上掸冤,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音友雳,去河邊找鬼稿湿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛押赊,可吹牛的內(nèi)容都是我干的缎罢。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼考杉,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼策精!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起崇棠,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤咽袜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后枕稀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體询刹,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谜嫉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了凹联。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沐兰。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蔽挠,靈堂內(nèi)的尸體忽然破棺而出住闯,到底是詐尸還是另有隱情煌珊,我是刑警寧澤兼蜈,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站婶熬,受9級(jí)特大地震影響杠巡,放射性物質(zhì)發(fā)生泄漏量窘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一氢拥、第九天 我趴在偏房一處隱蔽的房頂上張望蚌铜。 院中可真熱鬧,春花似錦嫩海、人聲如沸厘线。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)造壮。三九已至,卻和暖如春骂束,著一層夾襖步出監(jiān)牢的瞬間耳璧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工展箱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留旨枯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓混驰,卻偏偏與公主長(zhǎng)得像攀隔,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子栖榨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容