FastDFS分佈式文件系統

這篇文章介紹如何搭建FastDFS 集羣nginx

FastDFS是一個開源的輕量級分佈式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文件爲載體的在線服務,如相冊網站、視頻網站等等。c++

FastDFS爲互聯網量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,使用FastDFS很容易搭建一套高性能的文件服務器集羣提供文件上傳、下載等服務。

vim

環境準備

系統系統 centos6.5
六臺服務器:192.168.53.85/86/90
192.168.54.73/74/75
安裝包:centos

fastdfs-5.05.tar.gz
libfastcommon-1.0.36.zip
nginx-1.7.9.tar.gz

服務器規劃瀏覽器

tracker服務器:192.168.53.85/86
storage服務器:192.168.53.90
192.168.54.73/74/75



緩存

安裝Fastdfs(所有)

安裝依賴包bash

注意:FastDFS 5.x 取消了對 libevent 的依賴,添加了對 libfastcommon 的依賴。服務器

  • 在安裝FastDFS和Nginx以前,需確保gcc、gcc-c++、 libstdc++-devel、make等依賴庫和工具已經安裝
#安裝依賴軟件 yum -y install gcc gcc-c++ libstdc++-devel pcre-devel zlib-devel wget make yum -y groupinstall 'Development Tools' 

安裝libfastcommon類庫負載均衡

安裝FastDFS必須先安裝libfastcommon類庫,不然會致使報錯,安裝直接根據以下幾個步驟便可~tcp

unzip libfastcommon-1.0.36.zip  -d /usr/local cd /usr/local/libfastcommon-1.0.36 ./make.sh ./make.sh install

安裝FastDFS

tar -xvzf fastdfs-5.05.tar.gz -C /usr/local cd /usr/local/fastdfs-5.05 ./make.sh ./make.sh install

安裝好以後,在/usr/bin目錄下,能夠看fdfs開頭的命令工具

FastDFS安裝完成以後,全部配置文件在/etc/fdfs目錄下,tracker須要tracker.conf配置文件,storage須要storage.conf配置文件。

 

安裝tracker(85/86)

將tracker.conf.sample文件重命名爲tracker.conf,而後修改配置文件/etc/fdfs/tracker.conf

# 存儲日誌和數據的根目錄 mkdir /root/fastdfs cd /etc/fdfs cp tracker.conf.sample tracker.conf

只須要修改 base_pash路徑(文件存儲路徑)

vi tracker.conf
base_path=/root/fastdfs

配置文件中有這幾個參數須要注意:

#啓用配置文件 disabled=false #設置tracker的端口號 port=22122 #設置tracker的數據文件和日誌目錄(需手動建立) base_path=/root/fastdfs #設置http端口號 http.server_port=9090

使用/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start嘗試啓動tracker

[root@localhost ~]# fdfs_trackerd /etc/fdfs/tracker.conf restart [root@localhost ~]# 

沒有報錯,查看端口22122是否開始監聽,確認啓動是否成功。

[root@localhost ~]# ps -ef|grep fdfs root 6078 1 0 11:59 ? 00:00:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start root 6101 6054 0 12:01 pts/2 00:00:00 grep fdfs [root@localhost ~]# netstat -unltp | grep fdfs tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 6078/fdfs_trackerd 

也能夠查看tracker的日誌是否啓動成功

[root@localhost ~]# cat /root/fastdfs/logs/trackerd.log [2017-10-09 11:59:12] INFO - FastDFS v5.05, base_path=/root/fastdfs, run_by ...

至此,一個簡單的的tracker配置就完成了,Tracker也成功啓動~, 接下來要作的就是完成Storage的配置~

 

安裝storage(90/73/74/75)

將存儲節點分爲兩個組,其中group1 (7二、73)、group2 (7四、75)。

建立存儲目錄和配置文件

mkdir /root/fastdfs

cd /etc/fdfs cp storage.conf.sample storage.conf

修改配置

storage主要完成base_path,store_path以及tracker的鏈接地址以及storage的http服務端口配置等。

主要有以下幾個參數:

vi /etc/fdfs/storage.conf
# 內容 group_name=group1 # 組名(第一組爲group1,第二組爲group2,依次類推...) base_path=/root/fastdfs # 數據和日誌文件存儲根目錄 store_path0=/root/fastdfs #第一個存儲目錄,第二個存儲目錄起名爲:store_path1=xxx,其它存儲目錄名依次類推... store_path_count=1 # 存儲路徑個數,須要和store_path個數匹配 tracker_server=192.168.53.85:22122 # tracker服務器IP和端口 tracker_server=192.168.53.86:22122 # tracker服務器IP和端口

啓動Storage

啓動storage,會根據配置文件的設置自動建立多級存儲目錄,查看端口23000是否開始監聽,確認啓動是否成功。

[root@localhost fdfs]# fdfs_storaged /etc/fdfs/storage.conf restart [root@localhost fdfs]# netstat -unltp | grep fdfs tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 5551/fdfs_storaged 

也能夠查看storage的日誌是否啓動成功。

[root@localhost logs]# cat /root/fastdfs/logs/storaged.log [2017-10-09 15:39:12] INFO - FastDFS v5.05, base_path=/root/fastdfs, store_path_count=1 ...

驗證storage是否登記到tracker服務器

使用fdfs_monitor /etc/fdfs/storage.conf,運行fdfs_monitor查看storage服務器是否已經登記到tracker服務器。

能夠在任一存儲節點上使用以下命令查看集羣的狀態信息

fdfs_monitor /etc/fdfs/storage.conf

若是出現ip_addr = Active, 則代表storage服務器已經登記到tracker服務器,以下:

Storage 1:
        id = 192.168.53.90
        ip_addr = 192.168.53.90 (localhost)  ACTIVE

至此,tracker、storage等配置都完成併成功啓動

接下來,繼續完成Nginx和fastdfs-nginx-module的安裝和配置



在storage上安裝nginx

注意:fastdfs-nginx-module模塊只須要安裝到storage上。

 

安裝

解壓安裝包

tar -xvzf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local tar -zvxf nginx-1.7.9.tar.gz -C /usr/local

須要先配置軟連接:

ln -sv /usr/include/fastcommon /usr/local/include/fastcommon ln -sv /usr/include/fastdfs /usr/local/include/fastdfs ln -sv /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so

安裝nginx的時候,添加 fastdfs-nginx-module-master模塊,如:
./configure --add-module=../fastdfs-nginx-module/src/

cd /usr/local/nginx-1.7.9 ./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module/src

configure 成功輸出結果:

checking for OS + Linux 2.6.32-431.el6.x86_64 x86_64 checking for C compiler ... found + using GNU C compiler + gcc version: 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) checking for gcc -pipe switch ... found ...... nginx http access log file: "/usr/local/nginx/logs/access.log" nginx http client request body temporary files: "client_body_temp" nginx http proxy temporary files: "proxy_temp" nginx http fastcgi temporary files: "fastcgi_temp" nginx http uwsgi temporary files: "uwsgi_temp" nginx http scgi temporary files: "scgi_temp" 

configure成功了

接下來執行make和make install

make

肯定編譯沒有出錯,再進行install

make install

安裝成功,查看版本信息

/usr/local/nginx/sbin/nginx -V

 

配置

配置fastdfs-nginx-module

進入fastdfs-nginx-module的src目錄,將md_fastdfs.conf配置文件拷貝到/etc/fdfs/目錄中

cd /usr/local/fastdfs-nginx-module/src cp mod_fastdfs.conf /etc/fdfs/

配置 mod_fastdfs.conf

vim /etc/fdfs/mod_fastdfs.conf
通常只需改動如下幾個參數便可:
base_path=/root/fastdfs           #保存日誌目錄 tracker_server=192.168.53.85:22122 tracker_server=192.168.53.86:22122 storage_server_port=23000 #storage服務器的端口號 group_name=group1 #當前服務器的group名 url_have_group_name = true #文件url中是否有group名 store_path_count=1 #存儲路徑個數,須要和store_path個數匹配 store_path0=/root/fastdfs #存儲路徑 group_count = 2 #設置組的個數

在末尾增長3個組的具體信息:

[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/root/fastdfs

[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/root/fastdfs

創建M00至存儲目錄的符號鏈接。

ln -s /root/fastdfs/data /root/fastdfs/data/M00
ll /root/fastdfs/data/M00



配置nginx

編輯/usr/local/nginx/conf配置文件目錄下的nginx.conf,設置添加storage信息並保存。

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

將server段中的listen端口號改成8080,啓動用戶使用root。

user root
listen       8080;

在server段中添加:

location ~/group[1-2]/M00 {
    root /root/fastdfs/data;
    ngx_fastdfs_module;
}

複製fastdfs中的http.conf、mime.types文件到/etc/fdfs

cp /usr/local/fastdfs-5.05/conf/http.conf /usr/local/fastdfs-5.05/conf/mime.types /etc/fdfs

至此,nginx以及FastDFS插件模塊設置完成。

運行

運行nginx以前,先要把防火牆中對應的端口打開(本例中爲8080)。

iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
/etc/init.d/iptables save

啓動nginx,確認啓動是否成功。(查看是否對應端口8080是否開始監聽)

[root@localhost ~]# /usr/local/nginx/sbin/nginx ngx_http_fastdfs_set pid=12768 [root@localhost ~]# netstat -unltp | grep nginx tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 12769/nginx 

也可查看nginx的日誌是否啓動成功或是否有錯誤。

cat /usr/local/nginx/logs/error.log

在error.log中沒有錯誤,既啓動成功。能夠打開瀏覽器,直接訪問http://192.168.53.90:8080,查看是否彈出nginx歡迎頁面。

查看到歡迎頁則說明,nginx運行成功。以後依次在其它storage上所有安裝上nginx並確認運行正常。

將nginx設置爲開機啓動:

vim /etc/rc.d/rc.local

將運行命令行添加進文件:/usr/local/nginx/sbin/nginx



在tracker上安裝nginx

在tracker上安裝的nginx主要爲了提供http訪問的反向代理、負載均衡以及緩存服務。

安裝

解壓

tar -zvxf nginx-1.7.9.tar.gz  -C /usr/local

運行./configure進行安裝前的設置,主要設置安裝路徑

cd /usr/local/nginx-1.7.9 ./configure --prefix=/usr/local/nginx

運行make進行編譯,確保編譯成功。

make

運行make install進行安裝。

make install

 

配置

編輯/usr/local/nginx/conf配置文件目錄下的nginx.conf,設置負載均衡

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

配置信息

worker_processes  4;                  #根據CPU核心數而定 events { worker_connections 65535; #最大連接數 use epoll; #新版本的Linux可以使用epoll加快處理性能 } http { #設置group1的服務器 upstream fdfs_group1 { server 192.168.53.90:8080 weight=1 max_fails=2 fail_timeout=30s; server 192.168.54.229:8080 weight=1 max_fails=2 fail_timeout=30s; } #設置group2的服務器 upstream fdfs_group2 { server 192.168.54.233:8080 weight=1 max_fails=2 fail_timeout=30s; server 192.168.54.234:8080 weight=1 max_fails=2 fail_timeout=30s; } server { #設置服務器端口 listen 8080; #設置group1的負載均衡參數 location /group1/M00 { proxy_pass http://fdfs_group1; } #設置group2的負載均衡參數 location /group2/M00 { proxy_pass http://fdfs_group2; } } }

至此,nginx設置完成。

運行

運行nginx以前,先要把防火牆中對應的端口打開(本例中爲8080)

iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
/etc/init.d/iptables save

啓動nginx,確認啓動是否成功。(查看是否對應端口8080是否開始監聽)

[root@localhost ~]# /usr/local/nginx/sbin/nginx ngx_http_fastdfs_set pid=12768 [root@localhost ~]# netstat -unltp | grep nginx tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 12769/nginx 

也可查看nginx的日誌是否啓動成功或是否有錯誤。

cat /usr/local/nginx/logs/error.log

嘗試上傳一個文件到FastDFS,而後訪問試試。先配置client.conf文件。

cp client.conf.sample  client.conf
vim /etc/fdfs/client.conf

修改如下參數:

base_path=/root/fastdfs                   #日誌存放路徑 tracker_server=192.168.53.85:22122 tracker_server=192.168.53.86:22122 http.tracker_server_port=8080

使用/usr/local/bin/fdfs_upload_file上傳一個文件,程序會自動返回文件的URL。

[root@localhost fdfs]# fdfs_upload_file /etc/fdfs/client.conf /root/test.jpg group2/M00/00/00/wKg26VncfamAEqZ0AAu-4Kcs3QI677.jpg

而後使用瀏覽器訪問:

http://192.168.53.85:8080/group2/M00/00/00/wKg26VncfamAEqZ0AAu-4Kcs3QI677.jpg

看有查看到圖片,說明集羣搭建成功!

相關文章
相關標籤/搜索