分布式檔案系統可以解決以下四大問題:
1、代碼伺服器存儲被快速占滿; 2、分布式系統無法讀取檔案問題; 3、檔案共享和備份; 4、檔案統一管理等。
當然目前的分布式檔案系統工具比較多(比如:mogileFS,fastDFS,mooseFS,glusterFS,ceph,lustre,NFS等),本文主要介紹如何安裝與使用FastDFS分布式檔案系統,有興趣的小夥伴可以研究以下其他工具。。。
安裝軟體全家桶可以到這裡下載下傳:https://download.csdn.net/download/u011909918/11979479
第一章:FastDFS的介紹
Fast檔案系統主要由跟蹤伺服器(Tracker Server),存儲伺服器(Storage Server)和用戶端(Client)三部分組成
- Tracker Server: 負責管理、排程和均衡所有的存儲伺服器和存儲伺服器組。
- Storage Server:提供容量和備份服務(簡單來說就是用來存儲檔案的伺服器);以 group 為機關,每個 group 内可以有多台 storage server,資料互為備份;每個 storage 在啟動後會連接配接 Tracker,告知自己所屬 group 等資訊,并保持周期性心跳。
- Client:用戶端,上傳下載下傳資料的伺服器,也就是我們自己的項目所部署在的伺服器。
第二章:FastDFS的安裝
注:安裝的時候可能會因為一些類似perl,gcc等工具未安裝報錯 ./make.sh: line 184: perl: command not found。請自行安裝相關工具,然後繼續下一步。。。
一、安裝依賴包libfastcommon
1、下載下傳:libfastcommon下載下傳;
2、上傳下載下傳的zip包到安裝伺服器;
3、解壓并安裝;
## 解壓代碼包
unzip libfastcommon-master.zip
## 進入解壓目錄
cd libfastcommon-master
##編譯
./make.sh
## 安裝
./make.sh install
二、安裝FastDFS
1、下載下傳:FastDFS下載下傳(下載下傳你想要的版本,我用的最新的);
2、上傳下載下傳的tar包到安裝伺服器;
3、解壓并安裝(tar包的解壓方式與zip包不一樣);
## 解壓代碼包
tar zxvf FastDFS_v5.08.tar.gz
## 進入解壓目錄
cd FastDFS
##編譯
./make.sh
## 安裝
./make.sh install
三、配置跟蹤伺服器(Tracker Server)
注意:配置的base_path位址不存在時需要手動建立,否則會報錯
##進入配置檔案目錄
cd /etc/fdfs/
##修改配置檔案名
mv tracker.conf.sample tracker.conf
##修改配置檔案
vi tracker.conf
##修改base_path(資料和日志位址)位址:例如 base_path=/opt/fastdfs
##啟動tracker
fdfs_trackerd /etc/fdfs/tracker.conf
##檢視啟動結果
netstat -unltp|grep fdfs
##設定開機自啟動
vim /etc/rc.local
## 添加指令fdfs_trackerd /etc/fdfs/tracker.conf 到rc.local檔案中
四、配置存儲伺服器(Storage Server)
注意:配置的base_path位址不存在時需要手動建立,否則會報錯; Tracker Server位址必須配置
##進入配置檔案目錄
cd /etc/fdfs/
##修改配置檔案名
mv storage.conf.sample storage.conf
##修改配置檔案
vi storage.conf
##修改base_path(日志和資料位址)位址:例如 base_path=/opt/fastdfs
##tracker_server=127.0.0.1:22122
##group_name=group1用于配置叢集
##啟動storage
fdfs_storaged /etc/fdfs/storage.conf
##檢視啟動結果
netstat -unltp|grep fdfs
##設定開機自啟動
vim /etc/rc.local
## 添加指令fdfs_storaged /etc/fdfs/storage.conf 到rc.local檔案中
啟動完成時候使用 fdfs_monitor /etc/fdfs/storage.conf 指令檢視存儲伺服器叢集詳情,檢視是否已經注冊到Tracker Server上:
四、配置用戶端(Client)
vi /etc/fdfs/client.conf
## tracker_server=127.0.0.1:22122
## http.tracker_server_port=80
## base_path=/home/fastdfs
至此,FastDFS安裝完成。。。
測試:
fdfs_test /etc/fdfs/client.conf upload /opt/aaaa.txt
上傳成功!!!!
注意:上面的安裝好之後就已經實作了分布式檔案伺服器的功能,下面的第三章隻是為了更加友善的用浏覽器可以檢視上傳的檔案。
第三章 FastDFS與Nginx內建
一、準備工作
安裝一些編譯代碼所需要的軟體
yum install -y gcc(安裝libfastcommon時已經安裝過)
yum install -y gcc-c++(安裝libfastcommon時已經安裝過)
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
二、安裝和配置Nginx和fastdfs-nginx-module
1、下載下傳 fastdfs-nginx-module和Nginx
## 下載下傳 fastdfs-nginx-module與Nginx
## 網上搜下fastdfs-nginx-module_v1.16.tar.gz, 一大把。 完了上傳到伺服器
wget http://nginx.org/download/nginx-1.10.1.tar.gz
2、解壓 fastdfs-nginx-module和Nginx
## 解壓 fastdfs-nginx-module與Nginx
tar zxvf fastdfs-nginx-module_v1.16.tar.gz
tar zxvf nginx-1.10.1.tar.gz
3、修改fastdfs-nginx-module配置檔案
vi /opt/practice/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf
## base_path=/home/fastdfs
## tracker_server=127.0.0.1:22122
## store_path0=/home/fastdfs
## storage_server_port=23001
vi /opt/practice/fastdfs/fastdfs-nginx-module/src/config
## CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
4、添加fastdfs子產品到Nginx
## 進入Nginx目錄
cd nginx-1.10.1
## 為Nginx添加fastdfs子產品
./configure --prefix=/usr/local/nginx --add-module=/opt/practice/fastdfs/fastdfs-nginx-module/src/
添加成功标志:
5、編譯和安裝Nginx
cd nginx-1.10.1
make && make install
編譯成功辨別:
檢視安裝結果
/usr/local/nginx/sbin/nginx -V
fastdfs-nginx-module 安裝成功。。
6、配置Nginx
vi /usr/local/nginx/conf/nginx.conf
添加:
location /group1/M00 {
root /home/fastdfs/data;
ngx_fastdfs_module;
}
7、拷貝配置檔案到 /etc/fdfs/
## 拷貝FastDFS的配置檔案
cd /opt/practice/fastdfs/FastDFS/conf/
scp anti-steal.jpg http.conf mime.types /etc/fdfs/
## 拷貝fastdfs-nginx-module的配置檔案
scp /opt/practice/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
8、啟動Nginx
## 建立軟連接配接
ln -s /home/fastdfs/data /home/fastdfs/data/M00
## 啟動Nginx
/usr/local/nginx/sbin/nginx
## 關閉防火牆(開放80端口也行)
service iptables stop
啟動成功:
9 測試
fdfs_test /etc/fdfs/client.conf upload /opt/test.jpg
源檔案:
檢視上傳結果:
OK,大功告成!!!!