Fast DFS概述
Fast DFS是一個開源的輕量級分布式檔案系統,它對檔案進行管理,功能包括:檔案存儲、檔案同步、檔案通路(檔案上傳、檔案下載下傳)等,解決了大容量存儲和負載均衡的問題。特别适合中小檔案(建議範圍:4KB < file size <500MB),以檔案為載體的線上服務,如相冊網站、視訊網站等等。
Fast DFS為網際網路量身定制,充分考慮了備援備份、負載均衡、線性擴容等機制,并注重高可用、高性能等名額,使用Fast DFS很容易搭建一套高性能的檔案伺服器叢集提供檔案上傳、下載下傳等服務。
FastDFS架構包括 (跟蹤器)Tracker server和(存儲節點)Storage server。用戶端請求Tracker server進行檔案上傳、下載下傳,通過Tracker server排程最終由Storage server完成檔案上傳和下載下傳。
Tracker Server作用是負載均衡和排程,通過Trackerserver在檔案上傳時可以根據一些政策找到Storageserver提供檔案上傳服務。可以将tracker稱為追蹤伺服器或排程伺服器。
Storage Server作用是檔案存儲,用戶端上傳的檔案最終存儲在Storage伺服器上,Storage server沒有實作自己的檔案系統而是利用作業系統 的檔案系統來管理檔案。可以将storage稱為存儲伺服器。
下面來看一下應該如何安裝以及配置吧
( 參考部落格:https://blog.csdn.net/qq_34301871/article/details/80060235)
1、下載下傳運作環境需要的安裝包(這個是我個人使用的環境包)
下載下傳位址:
**
https://github.com/lxg19970202/FastDFS-/tree/lxg19970202-fastdfs
**

2、首先下載下傳 所需全部工具運作指令
yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget
下載下傳完成,安裝 rz 指令-------->進行上傳檔案
yum install lrzsz -y
/home目錄下建立一個目錄将下載下傳的安裝包通過rz指令上傳到自己建立的目錄
cd /home
mkdir lxg
ls
cd lxg
rz
3.安裝libfastcommon
解壓剛才上傳的libfastcommon
cd libfastcommon-master
unzip libfastcommon-master.zip
然後進入解壓完成的檔案目錄進行編譯安裝
./make.sh
./make.sh install
4.安裝Fast DFS
傳回上一級去解壓fastdfs
cd ..
unzip fastdfs-5.11.zip
解壓完成進入fastdfs5.11目錄并進行編譯安裝
cd fastdfs-5.11
./make.sh
./make.sh install
安裝成功之後切換到 /etc/fdfs下
cd /etc/fdfs/
ll
使用指令将這三個執行個體檔案複制一份,且去掉sample
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
5、安裝Tracker Server
建立tracker工作目錄以用來存儲tracker的data和log
使用
cd
指令切換目錄
使用
mkdir
指令建立檔案夾
檔案夾的最終目錄是:/usr/lxg_workspace/dev/fastdfs/fasstdfs_tracker
建立完畢之後進入 /etc/fdfs/配置tracker的conf檔案
vi /etc/fdfs/tracker.conf
insert
鍵進行插入
以下是暫時需要配置的内容
1.disabled=false #預設開啟
2.port=22122 #預設端口号
3.base_path=/usr/lxg_workspace/dev/fastdfs/fastdfs_tracker #剛剛建立的目錄
4.http.server_port=6666 #預設端口是8080
再次點選insert切換模式
Esc退出
wq儲存
測試啟動tracker
service fdfs_trackerd start
如果不能成功啟動,可以通systemctl指令
systemctl start fdfs_trackerd
設定服務開機啟動
加執行權限
chmod +x /etc/rc.d/rc.local
開始修改rc.local
vi /etc/rc.d/rc.local
添加開啟指令
service fdfs_trackerd start
啟動成功之後的界面:
啟動之後可以檢視一下服務端口:
同時進入咱們建立的fastdfs_tracker目錄後也會看到自動生成data和log兩個目錄
6、安裝Storage Server
咱們前面建立 fastdfs_tracker 目錄的同時已經建立了工作目錄 fastdfs_storage 以及存儲資料的目錄 fastdfs_storage_data,直接去配置就可以了
vi /etc/fdfs/storage.conf
設定以下内容:
1.disabled=false
2.group_name=group1 #組名,根據實際情況修改
3.port=23000 #設定storage的端口号,預設是23000,同一組的storage端口号必須一緻
4.base_path=/usr/lxg/dev/fastdfs/fastdfs_storage #設定storage資料檔案和日志目錄
5.store_path_count=1 #存儲路徑個數,需要和store_path個數比對
6.base_path0=/usr/lxg_workspace/dev/fastdfs/fastdfs_storage_data #實際檔案存儲路徑
7.tracker_server=192.168.150.132:22122 #虛拟機的ip位址
8.http.server_port=8888 #設定 http 端口号
儲存之後 建立軟引用
ln -s /usr/bin/fdfs_storaged /usr/local/bin
啟動storage
service fdfs_storaged start
設定開機自動啟動
加執行權限
chmod +x /etc/rc.d/rc.local
開始修改rc.local
vi /etc/rc.d/rc.local
添加開啟指令
service fdfs_storaged start
檢視服務端口:
netstat -unltp | grep fdfs
最後我們再确認一下,storage是否注冊到了tracker中去。
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
接下來去修改配置檔案
vi /etc/fdfs/client.conf
修改以下配置:
base_path=/usr/lxg_workspace/dev/fastdfs/fastdfs_tracker #tracker伺服器檔案路徑
tracker_server=192.168.150.167:22122 #tracker伺服器IP位址和端口号
http.tracker_server_port=6666 # tracker 伺服器的 http端口号,必須和tracker對應
修改完之後,咱們可以上傳圖檔測試一下啦
使用指令:rz 上傳圖檔 (我的是上傳到了root下面)
rz
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/1.png #你上傳的圖檔路徑(linux上的)
去剛才上傳的路徑檢視是否上傳成功~~~
cd /usr/lxg_workspace/dev/fastdfs/fastdfs_storage_data/data
ls
cd 00
ls
cd 00
ls
data下有256個1級目錄,每級目錄下又有256個2級子目錄,總共65536個檔案,新寫的檔案會以hash的方式被路由到其中某個子目錄下,然後将檔案資料直接作為一個本地檔案存儲到該目錄中。
然後我們HTTP通路檔案
輸入192.168.150.167:8888/group1/M00/00/00/wKiW10ptyyAbBTGAADALhN48uw668.png
現在無法通路,早在4.05的時候,就remove embed HTTP support了
Version 4.05 2012-12-30
- client/fdfs_upload_file.c can specify storage ip port and store path index
- add connection pool
- client load storage ids config
- common/ini_file_reader.c does NOT call chdir
- keep the mtime of file same
- use g_current_time instead of call time function
- remove embed HTTP support
7、Nginx的安裝及配置
我們可以了解到Nginx是一個http伺服器。是一個使用c語言開發的高性能的http伺服器及反向代理伺服器。Nginx是一款高性能的http 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器。由俄羅斯的程式設計師Igor Sysoev所開發,官方測試nginx能夠支支撐5萬并發連結,并且cpu、記憶體等資源消耗卻非常低,運作非常穩定。
應用場景
1、 http伺服器。Nginx是一個http服務可以獨立提供http服務。可以做網頁靜态伺服器。
2、 虛拟主機。可以實作在一台伺服器虛拟出多個網站。例如個人網站使用的虛拟主機。
基于端口的,不同的端口
基于域名的,不同域名
3、 反向代理,負載均衡。當網站的通路量達到一定程度後,單台伺服器不能滿足使用者的請求時,需要用多台伺服器叢集可以使用nginx做反向代理。并且多台伺服器可以平均分擔負載,不會因為某台伺服器負載高當機而某台伺服器閑置的情況。
(1)配置storage nginx
切換到上傳的壓縮包的檔案夾
cd /home/lxg
解壓nginx,和fastdfs-nginx-module:
tar -zxvf nginx-1.12.0.tar.gz
unzip fastdfs-nginx-module-master.zip
然後進入nginx安裝目錄,添加fastdfs-nginx-module:
./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --add-module=/usr/local/src/fastdfs/fastdfs-nginx-module-master/src --with-stream
我這裡安裝的時候報了一個錯:
解決方案:
檢查檔案夾路徑是否和安裝以及擷取的一緻,如果一緻的話,重新開機電腦,然後删除已經解壓的檔案,重新解壓縮,重新添加。一般兩方的檔案夾的路徑不一緻,前面的是nginx的安裝目錄。後面的是fastdfs-nginx-module-master目錄
make
:執行
make遇到的錯誤
編輯
vi fastdfs-nginx-module-1.20/src/config
打開之後:
改變的檔案内容
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
"
解決完這個問題繼續安裝又會報錯
解決方案:
切換到上傳環境包的那個路徑:
cd /home/lxg/
在這個裡面運作:
./configure --prefix=/usr/bin/nginx-1.12.0 --conf-path=/usr/bin/nginx-1.12.0/conf/nginx.conf --add- module=/usr/local/src/fastdfs/fastdfs-nginx-module-master/src --with-stream
例如:在解壓的nginx目錄下運作:
./configure --prefix=/usr/bin/nginx-1.12.0 --conf-path=/usr/bin/nginx-1.12.0/conf/nginx.conf --add-module=/usr/local/src/fastdfs/fastdfs-nginx-module-master/src --with-stream
然後
make
make install
成功後界面:
現在開始配置nginx.conf
cd /usr/local/nginx
—nginx預設的安裝目錄
ll
cd conf
vi nginx.conf
--編輯
修改端口号,
修改連接配接的伺服器名稱,我這裡是虛拟機本機的ip
添加一個 :
location /group1/M00 {
root /usr/lxg/dev/fastdfs/fastdfs_storage_data/data;
ngx_fastdfs_module;
}
然後進入FastDFS安裝時的解壓過的目錄,将http.conf和mime.types拷貝到/etc/fdfs目錄下:
先建立好存放的檔案夾:
cd /usr/lxg_workspace/
mkdir ftp
cd ftp
mkdir /fastdfs-5.11
将之前上傳解壓的包複制到此目錄下
cp -r /home/lxg/fastdfs-5.11 /usr/lxg_workspace/ftp/fastdfs-5.11
進到剛剛複制過去的目錄,将http.conf和mime.types拷貝到/etc/fdfs目錄下:
cd /usr/lxg_workspace/ftp/fastdfs-5.11/
ll
cd conf
cp http.conf /etc/fdfs/
cp mime.types /etc/fdfs/
另外還需要把fastdfs-nginx-module安裝目錄中src目錄下的mod_fastdfs.conf也拷貝到/etc/fdfs目錄下:
cp /usr/lxg_workspace/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/
剛剛拷貝過去的mod_fastdfs.conf檔案進行修改:
vi /etc/fdfs/mod_fastdfs.conf
base_path=/usr/lxg_workspace/dev/fastdfs/fastdfs_storage #儲存日志目錄
tracker_server=192.168.150.132:22122 #tracker伺服器的IP位址以及端口号
storage_server_port=23000 #storage伺服器的端口号
url_have_group_name = true #檔案 url 中是否有 group 名
store_path0=/usr/lxg_workspace/dev/fastdfs/fastdfs_storage_data #存儲路徑
group_count = 3 #設定組的個數,事實上這次隻使用了group1
往下同時設定組名等資訊:需要幾個組就設定幾個
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/usr/muyou/dev/fastdfs/fastdfs_storage_data
store_path1=/usr/muyou/dev/fastdfs/fastdfs_storage_data
建立M00至storage存儲目錄的符号連接配接:
ln -s /usr/lxg_workspace/dev/fastdfs/fastdfs_storage_data/data/ /usr/lxg_workspace/dev/fastdfs/fastdfs_storage_data/data/M00
接下來嘗試啟動nginx:
/usr/local/nginx_storage/sbin/nginx
成功啟動:
。。重新進入浏覽器嘗試下:
http://192.168.218.25:8888/
成功界面如下:
(2)配置tracker nginx
還是進入剛剛解壓的nginx解壓包,然後重新運作此指令,将nginx再次編譯安裝到另一個檔案夾nginx2
./configure --prefix=/usr/local/nginx2 --conf-path=/usr/local/nginx2/conf/nginx.conf --add-module=/usr/lxg_workspace/fastdfs-nginx-module-master/src
make
make install
接下來還是修改nginx.conf,端口号可以不改,用80的。需将upstream指向tracker的nginx位址
vi /usr/local/nginx_tracker/conf/nginx.conf
upstream fdfs_group1 {
server 127.0.0.1:8888;
}
server {
listen 8889;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location /group1/M00 {
proxy_pass http://fdfs_group1;
}
啟動nginx:
/usr/local/nginx_tracker/sbin/nginx
成功界面如下:
注意這兩個界面的端口号是不一緻的!!!
再次使用浏覽器登陸嘗試
http://192.168.218.25:8888/group1/M00/00/00/wKjaGV0q03KAWMw6AADALhN48uw532.png
效果如下:
咱們的單機Fast DFS配置就算基本搭建成功啦!!!