一.什麼是FastDFSlinux
FastDFS一個開源的輕量級分佈式文件系統,它對文件進行管理,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文件爲載體的在線服務,如相冊網站、視頻網站等等。nginx
二.工做原理vim
FastDFS服務端有兩個角色:跟蹤器(tracker)和存儲節點(storage)。tomcat
1.tracke 跟蹤器的做用:服務器
主要作調度工做,在訪問上起負載均衡的做用;其中全部的跟蹤器服務都是對等平級的,能夠根據服務器的壓力的大小隨時增長或減小。架構
2.storage 存儲節點的做用:負載均衡
完成文件管理的全部功能。(主要用於存儲文件,存儲完成後會返回一個地址給跟蹤器(tracker))tcp
爲了能夠支持擴容,跟蹤器和存儲節點均可以由一臺或多臺服務器構成。若是訪問的壓力大,能夠多增長跟蹤器,若是存儲量大,能夠增長多個存儲節點,同時,能夠把同一存儲節點進行備份(back-up)。分佈式
系統架構圖性能
三.安裝過程
1.準備工做
準備2個不一樣ip的 linux 操做系統,安裝 gcc 環境(fastdfs是C語言開發的,所以須要安裝)
2.安裝過程
①安裝libfastcommon
解壓: tar -zxvf libfastcommonV1.0.7.tar.gz
編譯: ./make.sh ./make.sh install
注意:libfastcommon安裝好後會自動將庫文件拷貝至/usr/lib64下,因爲FastDFS程序引用usr/local/lib目錄因此須要將/usr/lib64下的庫文件拷貝至/usr/local/lib下。
② 創建軟鏈接
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib
ln -s /usr/lib64/libfdfsclient.so /usr/lib
做用: 將原文件複製到指定的路徑下,而不佔用磁盤空間,並保持原文件的鏡像鏈接不被破壞。
③安裝FastDFS(共同部分)
解壓: tar -zxvf FastDFS_v5.05.tar.gz
編譯: ./make.sh ./make.sh install
④修改FastDFS 服務腳本bin
由於FastDFS服務腳本設置的bin目錄爲:/usr/local/bin/下,可是實際上安裝在了/usr/bin/下面,因此咱們須要修改FastDFS配置文件,也就是須要修改2個配置文件
命令: vim /etc/init.d/fdfs_storaged
進行全局替換命令: %s+/usr/local/bin+/usr/bin
命令: vim /etc/init.d/fdfs_trackerd
進行全局替換命令: %s+/usr/local/bin+/usr/bin
⑤ tracker 跟蹤器的配置(192.168.25.131節點)
1.進入 cd /etc/fdfs/ 目錄下
2.複製1個tracker
命令: cp tracker.conf.sample tracker.conf
3修改tracker.conf的配置
命令: vim tracker.conf
1.修改base_path的路徑爲:
base_path=/fastdfs/tracker [此目錄用於存儲tracker的存儲信息]
2.建立以前定義好的文件夾
命令: mkdir -p /fastdfs/tracker
⑥ 啓動 tracker 跟蹤器
啓動命令: /etc/init.d/fdfs_trackerd start
中止命令: /etc/init.d/fdfs_trackerd stop
查看進程: ps -ef | grep fdfs
⑦設置開機啓動tracker 服務
通常生產環境須要開機啓動一些服務,如keepalived、linux、tomcat等等
命令: vim /etc/rc.d/rc.local
加入配置: /etc/init.d/fdfs_trackerd strat
⑧ storage 存儲器的配置(192.168.25.132節點)
1.進入 cd /etc/fdfs/ 目錄下
2.複製1個storage
命令: cp storage.conf.sample storage.conf
3修改storage.conf的配置
命令: vim storage.conf
1.配置內容爲:
base_path=/fastdfs/storage
store_path0=/fastdfs/storage
tracker_server=192.168.25.131:22122
http.server_prot=8888 [這個基本上不用配]
2.建立以前定義好的文件夾
命令: mkdir -p /fastdfs/storage
4.打開防火牆
若是是生產環境,須要打開防火牆
命令: vim /etc/sysconfig/iptables
添加: -A INPUT -m state NEW -m tcp -p tcp -dport 23000 -j ACCEPT
重啓: service iptables restart
⑨啓動 storage 存儲器
在啓動 storage 以前須要先將 tracker啓動,由於 storage 中用到tracke的服務.[注意關掉 tracker中的防火牆]
啓動 tracker 命令: /etc/init.d/fdfs_trackerd start
中止 tracker 命令: /etc/init.d/fdfs_trackerd stop
啓動 storage 命令: /etc/init.d/fdfs_storaged start
中止 storage 命令: /etc/init.d/fdfs_storaged stop
查看進程命令: ps -ef | grep fdfs
-------------------------------------------------------------------------------------------------------------------------
至此,咱們的FastDFS 環境已經搭建完成
⑩建立 client 端進行測試
Client端能夠單獨出一個ip來配置,在這裏用 tracker 來配置
1.進入 cd /etc/fdfs/ 目錄下
2.複製1個client
命令: cp client.conf.sample client.conf
3修改client.conf 的配置
命令: vim client.conf
配置內容爲:
base_path=/fastdfs/tracker
tracker_server=192.168.25.131:22122
4.測試上傳
在 tracker中上傳1張照片到 /usr/local/software 下
5.在 tracker 中進行上傳【記得關掉2邊的防火牆】
命令: /usr/bin/fdfs_upload_file /etc/fdfs/client.conf + 要上傳文件的路徑(/usr/local/software/IMG_20160831_191057.jpg)
使用fdfs_upload_file 這個命令經過client.conf這個客戶端,將這個jpg文件上傳到服務器中
若是有返回值: /group1/M00/00/00/wKgZhFo9As2AeSMYABWdflqP_oo764.jpg 說明上傳成功
-------------------------------------------------------------------------------------------------------------------------
至此,咱們的FastDFS 測試已完成
⑪FastDFS和Nginx的整合搭建
在存儲節點上(storage ) 安裝fastdfs-nginx-module
1.解壓 fastdfs-nginx-module_v1.16.tar.gz
命令: mkdir -p /usr/local/fast/
命令: tar -zxvf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/fast/
2.進入module的src目錄
命令: cd /usr/local/fast/fastdfs-nginx-module/src
3.編輯配置文件 config
命令: vim config
把原先有local的路徑給去掉
⑫ 安裝Nginx
1.上傳解壓 nginx
2.下載所須要的依賴庫
命令: yum install pcre yum install pcre-devel
命令: yum install zlib yum install zlib-devel
3.進入nginx目錄下
命令: cd /usr/local/software/nginx-1.8.0/ && ll
加入模塊命令:
./configure --add-module=/usr/local/fast/fastdfs-nginx-module/src/
在nginx的src 中把 module中的命令添加進來
從新編譯安裝命令:
make && make install
4.複製 fastdfs-nginx-module 中的配置文件,到 /etc/fdfs 目錄中
命令: cp /usr/local/fast/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
由於啓動FastDFS時會用到fastdfs-nginx-module整合包中的命令,因此將它拷貝到啓動文件夾下
5.修改剛纔複製過來的文件 mod_fastdfs.conf
命令: vim /etc/fdfs/mod_fastdfs.conf
修改內容: 鏈接超時時間、跟蹤器路徑配置、url 的group 配置
connect_timeout=10
tracker_server=192.168.25.131:22122
url_have_group_name=true(這樣才能夠經過地址欄訪問到)
store_path0=/fastdfs/storage
6.複製剛纔安裝FastDfs下的配置文件
進入命令:cd /usr/local/software/FastDFS/conf && ll
複製命令: cp http.conf mime.types /etc/fdfs/
7.建立軟鏈接
在/fastdfs/storage 文件存儲目錄下建立軟鏈接,將其連接到實際存放數據的目錄
命令: ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00
8.修改nginx的配置文件(這個nginx是加過module 的這個nginx,不是單一的nginx)
進入命令: cd /usr/local/nginx/conf && ll
修改命令: vim nginx.conf
1.修改服務端口號
由於咱們在配置 storage的http.server_prot=8888 因此要跟這個服務保持一致
2.修改 location 的匹配規則
location ~/group([0-9]/M00){
ngx_fastdfs_module;
}
9.最後檢查防火牆,而後咱們啓動 nginx服務
啓動nginx命令: /usr/local/nginx/sbin/nginx
關閉nginx命令: /usr/local/nginx/sbin/nginx -s stop
從新加載命令: /usr/local/nginx/sbin/nginx -s reload
啓動成功:
10.查看nginx啓動成功
地址欄: http://192.168.25.132:8888
11.驗證上傳圖片
1.把tracker 和storaged 2個服務啓起來
2.上傳
上傳命令: /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/software/img.jpg
3.在地址欄進行訪問
把 storaged 的地址和返回的group id 拼接,進行訪問
地址:
192.168.25.132:8888/group1/M00/00/00/wKgZhFo9As2AeSMYABWdflqP_oo764.jpg