一.什么是FastDFS
FastDFS一個開源的輕量級分布式文件系統,它對文件進行管理,充分考慮了冗余備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文件為載體的在線服務,如相冊網站、視頻網站等等。
二.工作原理
FastDFS服務端有兩個角色:跟蹤器(tracker)和存儲節點(storage)。
1.tracke 跟蹤器的作用:
主要做調度工作,在訪問上起負載均衡的作用;其中所有的跟蹤器服務都是對等平級的,可以根據服務器的壓力的大小隨時增加或減少。
2.storage 存儲節點的作用:
完成文件管理的所有功能。(主要用於存儲文件,存儲完成后會返回一個地址給跟蹤器(tracker))
為了可以支持擴容,跟蹤器和存儲節點都可以由一台或多台服務器構成。如果訪問的壓力大,可以多增加跟蹤器,如果存儲量大,可以增加多個存儲節點,同時,可以把同一存儲節點進行備份(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