1. 程式人生 > >【FastDFS篇】FastDFS單節點安裝及使用

【FastDFS篇】FastDFS單節點安裝及使用

第一部分:簡介

  • 1、FastDFS是一個人開源的輕量級的分散式檔案系統,它對檔案進行管理,功能包括:檔案儲存、檔案同步、檔案訪問(檔案上傳、下載)等,解決了大容量儲存和負載均衡的問題。特別適合以檔案為載體的線上服務。如,相簿網站、視訊網站等。
  • 2、FastDFS實現了軟體方式的RAID,可以使用廉價的IDE硬碟進行儲存。
  • 3、支援儲存伺服器線上擴容
  • 4、支援相同內容的檔案只儲存一份,節約磁碟空間
  • 5、FastDFS只能通過Client API訪問,不支援POSIX訪問方式

系統架構-架構圖:
這裡寫圖片描述

系統架構-上傳檔案流程圖:
這裡寫圖片描述
1. client詢問tracker上傳到的storage,不需要附加引數;
2. tracker返回一臺可用的storage;
3. client直接和storage通訊完成檔案上傳

系統架構-下載檔案流程圖:
這裡寫圖片描述
1. client詢問tracker下載檔案的storage,引數為檔案標識(組名和檔名);
2. tracker返回一臺可用的storage;
3. client直接和storage通訊完成檔案下載

備:相關術語
Tracker Server:跟蹤伺服器,主要做排程工作,在訪問上起負載均衡的作用。記錄storage server的狀態,是連線Client和Storage server的樞紐。
Storage Server:儲存伺服器,檔案和meta data都儲存到儲存伺服器上
group:組,也可稱為卷。同組內伺服器上的檔案是完全相同的
檔案標識:包括兩部分:組名和檔名(包含路徑)
meta data:檔案相關屬性,鍵值對(Key Value Pair)方式,如:width=1024,heigth=768

第二部分:安裝

  • 一、準備工作(倆臺機器同時進行)
  • 1.準備c的編譯環境:yum install make cmake gcc gcc-c++
  • 1.1.上傳檔案:
    fastdfs_client_java._v1.25.tar.gz
    fastdfs-nginx-module_v1.16.tar.gz
    FastDFS_v5.05.tar.gz
    ngx_cache_purge-2.3.tar.gz

    (下載地址:點我噢 密碼:2x9m)

  • 2.安裝libfastcommon(倆臺機器同時進行)

    • 2.1.上傳libfastcommon-master.zip到/usr/local/software下
    • 2.2.進行解壓libfastcommon-master.zip:
      命令:unzip libfastcommon-master.zip -d /usr/local/fast/
    • 2.3.進入目錄:cd /usr/local/fast/libfastcommon-master/
    • 2.4.進行編譯和安裝:
      命令:./make.sh
      命令:./make.sh install
      備註:注意看預設安裝的路徑:libfastcommon預設安裝到了/usr/lib64/這個位置
    • 2.5.進行軟體建立。FastDFS主程式設定的目錄為/usr/local/lib/,所以我們需要建立/
      usr/lib64/下的一些核心執行程式的軟連線檔案。
      命令:mk dir /usr/local/lib/
      命令:ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
      命令:ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
      命令:ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
      命令:ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
  • 3.安裝FastDFS
    • 3.1 進入到cd /usr/local/software下,解壓FastDFS_v5.05.tar.gz檔案
      命令:cd /usr/local/software
      命令:tar -zxvf FastDFS_v5.05.tar.gz -C /usr/local/fast/
    • 3.2 安裝編譯
      命令:cd /usr/local/fast/FastDFS/
      編譯命令:./make.sh
      安裝命令:./make.sh install
    • 3.3.採用預設安裝方式指令碼檔案說明:
      1、服務指令碼在:cd /etc/init.d && ls | grep fdfs
      /etc/init.d/fdfs_storaged
      /etc/init.d/fdfs_trackerd

      2、配置檔案在:cd /etc/fdfs
      /etc/fdfs/client.conf.sample
      /etc/fdfs/storage.conf.sample
      /etc/fdfs/tracker.conf.sample

      3、命令列工具在/usr/bin/目錄下
      Fdfs_*的一些列執行指令碼
      cd /usr/bin/ && ls | grep fdfs
      4、因為FastDFS服務指令碼設定的bin目錄為/usr/local/bin/下,但是實際我們安裝在了/usr/bin/下面。所以我們需要修改FastDFS配置檔案中的路徑,也就是需要修改倆
      個配置檔案:
命令:vim /etc/init.d/fdfs_storaged
進行全域性替換命令:%s+/usr/local/bin+/usr/bin
命令:vim /etc/init.d/fdfs_trackerd
進行全域性替換命令:%s+/usr/local/bin+/usr/bin
  • 4、配置跟蹤器(注意是tracker的節點)
    • 4.1 進入 cd
      /etc/fdfs/目錄配置跟蹤器檔案(注意是tracker節點),把tracker.conf.samp
      le檔案進行cope一份:去修改tracker.conf檔案
      cd /etc/fdfs cp tracker.conf.sample tracker.conf
    • 4.2 修改tracker.conf檔案
      命令:vim /etc/fdfs/tracker.conf
      如下圖所示:我們暫時修改配置檔案裡的base_path即可。
      這裡寫圖片描述

修改為自己的路徑地址:base_path=/fastdfs/tracker
注意:對於tracker.conf配置檔案引數解釋可以找官方文件,地址為:
http://bbs.chinaunix.net/thread-1941456-1-1.html

    • 4.3 最後我們一定要建立之前定義好的目錄(也就是/fastdfs/tracker):
      命令:mkdir -p /fastdfs/tracker
    • 4.4 關閉防火牆:(我們在學習時可以不用考慮防火牆的問題)
      Vim /etc/sysconfig/iptables
      新增:-A INPUT -m state –state NEW -m tcp -p tcp –dport 22122 -j ACCEPT
      重啟:service iptables restart
    • 4.5 啟動跟蹤器
      如圖所示:cd /fastdfs/tracker/ && ll
      測試為空。
      啟動tracker命令:/etc/init.d/fdfs_trackerd start
      檢視程序命令:ps -el | grep fdfs
      這裡寫圖片描述
      cd /fastdfs/tracker/ && ll
      這裡寫圖片描述
      停止tracker命令:/etc/init.d/fdfs_trackerd stop
      這裡寫圖片描述
    • 4.6.可以設定開機啟動跟蹤器:(一般生產環境需要開機啟動一些服務,如keepalived、linux、tomcat等等)
      命令:vim /etc/rc.d/rc.local
      加入配置:/etc/init.d/fdfs_trackerd start
  • 5.配置FastDFS儲存(另外一個非tracker節點!)

    • 5.1進入檔案目錄:cd /etc/fdfs/,進行copy storage檔案一份
      命令:cd /etc/fdfs/
      命令:cp storage.conf.sample storage.conf

    • 5.2 修改storage.conf檔案
      命令:vim /etc/fdfs/storage.conf
      修改內容:
      base_path=/fastdfs/storage
      store_path0=/fastdfs/storage
      tracker_server=192.168.1.172:22122
      http.server_port=8888

    • 5.3 建立儲存目錄:mkdir -p /fastdfs/storage
    • 5.4 開啟防火牆:
      命令:vim /etc/sysconfig/iptables
      新增:-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
      重啟:service iptables restart
    • 5.5 啟動儲存(storage)
      命令:/etc/init.d/fdfs_storaged start (關閉:/etc/init.d/fdfs_storaged stop)
      (初次啟動成功後會在/fastdbf/storage/ 目錄下建立 data、logs倆個目錄)
    • 5.6 檢視FastDFS storage 是否啟動成功
      命令:ps -ef | grep fdfs
      這裡寫圖片描述
      並且我們進入到/fastdfs/storage/data/資料夾下會看到一些目錄檔案(256*256)如下:
      命令:cd /fastdfs/storage/data/ && ls
      這裡寫圖片描述
    • 5.7同理,也可以設定開機啟動儲存器:(一般生產環境需要開機啟動一些服務,
      如keepalived、linux、tomcat等等)
      命令:vim /etc/rc.d/rc.local
      加入配置:/etc/init.d/fdfs_storaged start
      到此為止我們的FastDFS環境已經搭建完成!
  • 6、測試環境

    • 6.1 我們先使用命令上傳一個檔案。注意:是在tracker(跟蹤器)中上傳。
      首先我們在跟蹤器(tracker節點)裡copy一份client.conf檔案。
      命令:cd /etc/fdfs/
      命令:cp client.conf.sample client.conf

    • 6.2 編輯client.conf檔案
      命令:vim /etc/fdfs/client.conf
      修改內容:
      base_path=/fastdfs/tracker
      tracker_server=trackerIP:22122

    • 6.3 我們找到命令的指令碼位置,並且使用命令,進行檔案的上傳:
      命令:cd /usr/bin/
      命令:ls | grep fdfs
      這裡寫圖片描述

    • 6.4 使用命令fdfs_upload_file進行上傳操作:
      首先,我們先看一下儲存器(192.168.1.173),進入到data下,在進入00資料夾
      下,發現00資料夾下還有一堆資料夾,然後繼續進入00資料夾下,最終我們所進入的資料夾為:
      /fastdfs/storage/data/00/00 裡面什麼檔案都沒有。
      然後,我們進行上傳操作,比如把之前的/usr/local/software/資料夾下的某一個
      檔案上傳到FastDFS系統中去,在跟蹤器(trancker節點)中上傳檔案,命令如下:
      /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/software/FastDFS_v5.05.tar.gz(臨時測試用,後面舉例用圖片)
      最後我們發現,命令執行完畢後,返回一個group1/M00/00/00/…的ID,其實就
      是返回當前所上傳的檔案在儲存器(storeage節點)中的哪一個組、哪一個目
      錄位置,所以我們檢視儲存器中的/fastdfs/storage/data/00/00資料夾位置,發現
      已經存在了剛才上傳的檔案,到此為止,我們的測試上傳檔案已經OK了。如下
      這裡寫圖片描述

  • 7、FastDFS與Nginx整合

    • 7.1 首先兩臺機器裡必須先安裝nginx
    • 7.2 然後我們在儲存節點上(storeage節點)安裝fastdfs-nginx-module_v1.16.tar.gz包進行整合。
      cd /usr/local/software/
      tar -zxvf /usr/local/software/fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/fast/
    • 7.3 進入目錄:cd fastdfs-nginx-module/src/
      這裡寫圖片描述
    • 7.4 編輯配置檔案config
      命令:vim /usr/local/fast/fastdfs-nginx-module/src/config
      修改內容:去掉下圖中的local檔案層次
      這裡寫圖片描述
      修改完畢為
      這裡寫圖片描述
    • 7.5 FastDFS與nginx進行整合
      首先把之前的nginx進行刪除
      目錄命令:cd /usr/local/
      刪除命令:rm -rf nginx
      進入到nginx目錄命令:cd nginx-1.6.2/
      加入模組命令:./configure --add-module=/usr/local/fast/fastdfs-nginx-module/src/
      重新編譯命令:make && make install
    • 7.6 複製fastdfs-ngin-module中的配置檔案,到/etc/fdfs目錄中,如圖所示:
      這裡寫圖片描述
      copy命令:cp /usr/local/fast/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
    • 7.7 進行修改 /etc/fdfs/ 目錄下,我們剛剛copy過來的mod_fastdfs.conf 檔案。
      命令:vim /etc/fdfs/mod_fastdfs.conf
      修改內容:比如連線超時時間、跟蹤器路徑配置、url的group配置、
      connect_timeout=10
      tracker_server=192.168.1.172:22122
      url_have_group_name = true
      store_path0=/fastdfs/storage
    • 7.8 複製FastDFS裡的2個檔案,到/etc/fdfs目錄中,如圖所示:
      這裡寫圖片描述
      目錄命令:cd /usr/local/fast/FastDFS/conf/
      Copy命令:cp http.conf mime.types /etc/fdfs/
    • 7.9.建立一個軟連線,在/fastdfs/storage檔案儲存目錄下建立軟連線,將其連結到實際存放資料的目錄。
      ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00
    • 7.10 修改Nginx配置檔案,
      cd /usr/local/nginx/conf/
      命令:vim nginx.conf
      修改配置內容如下圖所示:
      vim nginx.conf
      這裡寫圖片描述
      修改內容為:
listen 8888;
server_name localhost;
location ~/group([0-9])/M00 {
#alias /fastdfs/storage/data;
ngx_fastdfs_module;
}

注意:nginx裡的埠要和第五步 配置FastDFS儲存中的storage.conf檔案配置一致,也就是(http.server_port=88880)

  • 7.11 最後檢查防火牆,然後我們啟動nginx服務
    啟動命令:/usr/local/nginx/sbin/nginx,我們剛才上傳了一個檔案,上傳成功,

現在我們使用這個ID用瀏覽器訪問地址:【訪問storeage節點的nginx!!!】

http://192.168.159.40:8888/group1/M00/00/00/wKifKFqx1viANk_pAAIXab_3x9U382.PNG
我們就可以下載這個檔案了,如果是圖片及直接會顯示。
這裡寫圖片描述
運維注意:我們在使用FastDFS的時候,需要正常關機,不要使用kill -9
強殺FastDFS程序,不然會在檔案上傳時出現丟資料的情況。
到此,我們的FastDFS與Nginx整合完畢。

八:啟動停止服務步驟如下:
啟動命令:
啟動tracker命令:/etc/init.d/fdfs_trackerd start
檢視程序命令:ps -el | grep fdfs
啟動storage命令:/etc/init.d/fdfs_storaged start
檢視程序命令:ps -el | grep fdfs
啟動nginx命令:/usr/local/nginx/sbin/nginx
停止命令:
停止tracker命令:/etc/init.d/fdfs_trackerd stop
關閉storage命令:/etc/init.d/fdfs_storaged stop
關閉nginx命令:/usr/local/nginx/sbin/nginx -s stop