FastDFS文件存儲系統搭建

FastDFS介紹

FastDFS是一款開源的高性能分佈式文件系統(DFS)

主要功能:文件存儲,文件同步和文件訪問,以及高容量和負載平衡

主要解決了海量數據存儲問題,特別適合以中小文件爲載體的在線服務

FastDFS系統有三個角色:

跟蹤服務器(Tracker Server)

存儲服務器(Storage Server)

客戶端(Clinet)

Tracker Server:跟蹤服務器,主要做調節工作,起到均衡的作用;負責管理所有的storage server和group,每個storage在啓動後會連接Tracker,告知自己所屬group等信息,並保持週期性心跳。
Storage Server:存儲服務器。主要提供容量和備份服務器;以group爲單位,每個group內可以有多臺storage server,數據互爲備份。
Client:客戶端,上傳下載數據的服務器,也就是我們自己的項目部署在的服務器。


單機部署fastdfs

安裝centos7.2系統,最小化安裝

設置好網絡和防火牆  網絡需要能訪問外網,

ip 192.168.0.201

下面關閉防火牆

setenforce 0

systemctl stop firewalld

systemctl disable firewalld

sed -i 's/enforcing/disabled/g' /etc/sysconfig/selinux


設置yum源

cd /etc/yum.repos.d/

yum install vim unzip lrzsz wget net-tools -y

wget http://mirrors.aliyun.com/repo/Centos-7.repo

wget http://mirrors.aliyun.com/repo/epel-7.repo

yum -y install epel-release


安裝依賴包

yum install zip zlib zlib-devel make cmake gcc gcc-c++ pcre pcre-devel openssl openssl-devel perl perl-devel -y


創建目錄

mkdir -p /opt/fastdfs     #創建包目錄

mkdir -p /data/fastdfs    #創建數據目錄


安裝libfastcommon

cd /opt/fastdfs/
wget
https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz
tar zxf V1.0.39.tar.gz 

cd libfastcommon-1.0.39/
./make.sh
 ./make.sh install


安裝fastdfs

cd /opt/fastdfs/
 wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
 tar zxf V5.11.tar.gz
 cd fastdfs-5.11/
 ./make.sh
  ./make.sh install

創建配置文件

下面文件分別是tracker storage client nginx nginx 服務使用

cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
cp /opt/fastdfs/fastdfs-5.11/conf/http.conf /etc/fdfs/
cp /opt/fastdfs/fastdfs-5.11/conf/mime.types /etc/fdfs/


-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

配置tracker

mkdir /data/fastdfs/tracker                ##創建tracker的日誌數據目錄

vim /etc/fdfs/tracker.conf

port=22122                                           ##tracker服務端口
base_path=/data/fastdfs/tracker        ##tracker數據日誌目錄
http.server_port=80                            ##http端口,必須與nginx的相同


編輯tracker啓動文件

vim /usr/lib/systemd/system/fastdfs-tracker.service

[Unit]
Description=The FastDFS File server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
ExecStop=/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf stop
ExecRestart=/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

[Install]
WantedBy=multi-user.target

添加到開機啓動

systemctl daemon-reload
systemctl enable fastdfs-tracker.service
systemctl start fastdfs-tracker.service

查看進程

netstat -lnupt |grep tracker

[root@localhost tmp]# netstat -lnupt |grep tracker
tcp    0   0 0.0.0.0:22122     0.0.0.0:*    LISTEN    24487/fdfs_trackerd

-------------------------------------------------------------------------

-------------------------------------------------------------------------


配置storage

mkdir /data/fastdfs/storage
vim /etc/fdfs/storage.conf

port=23000                                     # storage服務端口(默認23000,一般不修改)
base_path=/data/fastdfs/storage             # 數據和日誌文件存儲根目錄

group_name=group1                      #默認組名,根據實際情況修改

store_path_count=1                          #存儲路徑個數,需要和store_path個數匹配

store_path0=/data/fastdfs/storage             # 第一個存儲目錄
tracker_server=192.168.0.201:22122             # tracker服務器IP和端口
http.server_port=80                         # http端口(默認8888,需要和nginx中80保持一致)


編輯storage啓動文件

vim /usr/lib/systemd/system/fastdfs-storage.service

[Unit]
Description=The FastDFS File server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
ExecStop=/usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop
ExecRestart=/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

[Install]
WantedBy=multi-user.target


添加到開機啓動

systemctl daemon-reload
systemctl enable fastdfs-storage.service
systemctl start fastdfs-storage.service

查看進程

netstat -lnupt |grep storage

[root@localhost tmp]# netstat -lnupt |grep storage
tcp     0    0 0.0.0.0:23000    0.0.0.0:*     LISTEN    24544/fdfs_storaged


查看tracker和storage綁定狀態

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

圖片.png

==============================================================


配置client

vim /etc/fdfs/client.conf

http.tracker_server_port=80                ##保持與tracker服務器的http端口相同

base_path=/data/fastdfs/tracker        ##tracker服務器文件目錄

tracker_server=192.168.0.201:22122    ##tracker服務器的ip和端口


安裝nginx和fastdfs-nginx-module

 下載安裝

wget http://nginx.org/download/nginx-1.15.2.tar.gz
 wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz
 tar zxf nginx-1.15.2.tar.gz
 tar zxf V1.20.tar.gz

編譯nginx

 cd nginx-1.15.2

vim /opt/fastdfs/fastdfs-nginx-module-1.20/src/config   ##修改module參數

ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

執行編譯

 ./configure --prefix=/usr/local/nginx --add-module=/opt/fastdfs/fastdfs-nginx-module-1.20/src/

make && make install


配置mod-fastdfs.conf文件

 cp /opt/fastdfs/fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs

 vim /etc/fdfs/mod_fastdfs.conf

base_path=/data/fastdfs
tracker_server=192.168.0.201:22122        ##tracker地址
storage_server_port=23000             ##storage server端口
group_name=group1
url_have_group_name = true                        ##設置爲true,url包含group名
store_path_count=1                ##存儲路徑個數,與store_path的個數匹配
store_path0=/data/fastdfs/storage        ##存儲文件位置

配置nginx

 vim /usr/local/nginx/conf/nginx.conf

        location ~/group[0-9]/M00 {
            root /data/fastdfs/storage/data;
            ngx_fastdfs_module;
        }

啓動nginx
/usr/local/nginx/sbin/nginx

------------------------------------------

測試fastdfs

新建文檔並用命令上傳文件

touch test.xtx
echo "jhdkjfoiajgi" > test.xtx

/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf test.xtx
/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf /tmp/1.jpg

上傳文件
[root@localhost home]# /usr/bin/fdfs_upload_file  /etc/fdfs/client.conf test.xtx 
group1/M00/00/00/wKgAyVzADQKAKftBAAAADUotZKc946.xtx
[root@localhost home]# /usr/bin/fdfs_upload_file  /etc/fdfs/client.conf /tmp/1.jpg 
group1/M00/00/00/wKgAyVzADYOAYzniAADtzKPg5UU160.jpg
查看文件 
[root@localhost home]# ll /data/fastdfs/storage/data/00/00/wKgAyVzADQKAKftBAAAADUotZKc946.xtx 
-rw-r--r-- 1 root root 13 4月  24 15:15 /data/fastdfs/storage/data/00/00/wKgAyVzADQKAKftBAAAADUotZKc946.xtx
[root@localhost home]# ll /data/fastdfs/storage/data/00/00/wKgAyVzADYOAYzniAADtzKPg5UU160.jpg 
-rw-r--r-- 1 root root 60876 4月  24 15:17 /data/fastdfs/storage/data/00/00/wKgAyVzADYOAYzniAADtzKPg5UU160.jpg

通過wget下載

[root@node1 home]# wget http://192.168.0.201/group1/M00/00/00/wKgAyVzADYOAYzniAADtzKPg5UU160.jpg
--2019-04-24 15:18:17--  http://192.168.0.201/group1/M00/00/00/wKgAyVzADYOAYzniAADtzKPg5UU160.jpg
正在連接 192.168.0.201:80... 已連接。
已發出 HTTP 請求,正在等待迴應... 200 OK
長度:60876 (59K) [image/jpeg]
正在保存至: “wKgAyVzADYOAYzniAADtzKPg5UU160.jpg”
100%[====================================================>] 60,876      --.-K/s 用時 0.005s  
2019-04-24 15:18:17 (11.9 MB/s) - 已保存 “wKgAyVzADYOAYzniAADtzKPg5UU160.jpg” [60876/60876])

通過瀏覽器訪問

 http://192.168.0.201/group1/M00/00/00/wKgAyVzADYOAYzniAADtzKPg5UU160.jpg

2345截圖20190424151912.jpg


服務端下載文件操作

/usr/bin/fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKgAyVzADQKAKftBAAAADUotZKc946.xtx

服務端刪除文件操作

/usr/bin/fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgAyVzADQKAKftBAAAADUotZKc946.xtx

到這裏整個fastdfs搭建完成了。


fastdfs可參考文章:

https://www.cnblogs.com/handsomeye/p/9451568.html

https://www.cnblogs.com/sunnydou/p/49b92d511047f4f9da6cd727cfd415d5.html

http://www.bubuko.com/infodetail-2296971.html


 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章