FastDFS 集群 安装 配置
原文:http://www.cnblogs.com/ityouknow/p/7769142.html
?
?
這篇文章介紹如何搭建FastDFS 集群
FastDFS是一個(gè)開源的輕量級(jí)分布式文件系統(tǒng),它對(duì)文件進(jìn)行管理,功能包括:文件存儲(chǔ)、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲(chǔ)和負(fù)載均衡的問題。特別適合以文件為載體的在線服務(wù),如相冊(cè)網(wǎng)站、視頻網(wǎng)站等等。
FastDFS為互聯(lián)網(wǎng)量身定制,充分考慮了冗余備份、負(fù)載均衡、線性擴(kuò)容等機(jī)制,并注重高可用、高性能等指標(biāo),使用FastDFS很容易搭建一套高性能的文件服務(wù)器集群提供文件上傳、下載等服務(wù)。
環(huán)境準(zhǔn)備
系統(tǒng)系統(tǒng) centos6.5
六臺(tái)服務(wù)器:192.168.53.85/86/90
192.168.54.73/74/75
安裝包:
服務(wù)器規(guī)劃
tracker服務(wù)器:192.168.53.85/86
storage服務(wù)器:192.168.53.90
192.168.54.73/74/75
安裝Fastdfs(全部)
安裝依賴包
注意:FastDFS 5.x 取消了對(duì) libevent 的依賴,添加了對(duì) libfastcommon 的依賴。
- 在安裝FastDFS和Nginx之前,需確保gcc、gcc-c++、 libstdc++-devel、make等依賴庫和工具已經(jīng)安裝
安裝libfastcommon類庫
安裝FastDFS必須先安裝libfastcommon類庫,否則會(huì)導(dǎo)致報(bào)錯(cuò),安裝直接根據(jù)如下幾個(gè)步驟即可~
unzip libfastcommon-1.0.36.zip -d /usr/localcd /usr/local/libfastcommon-1.0.36 ./make.sh ./make.sh install安裝FastDFS
tar -xvzf fastdfs-5.05.tar.gz -C /usr/localcd /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
# 存儲(chǔ)日志和數(shù)據(jù)的根目錄 mkdir /root/fastdfscd /etc/fdfs cp tracker.conf.sample tracker.conf只需要修改 base_pash路徑(文件存儲(chǔ)路徑)
vi tracker.conf base_path=/root/fastdfs配置文件中有這幾個(gè)參數(shù)需要注意:
#啟用配置文件 disabled=false #設(shè)置tracker的端口號(hào) port=22122 #設(shè)置tracker的數(shù)據(jù)文件和日志目錄(需手動(dòng)創(chuàng)建) base_path=/root/fastdfs #設(shè)置http端口號(hào) http.server_port=9090使用/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start嘗試啟動(dòng)tracker
[root@localhost ~]# fdfs_trackerd /etc/fdfs/tracker.conf restart [root@localhost ~]#沒有報(bào)錯(cuò),查看端口22122是否開始監(jiān)聽,確認(rèn)啟動(dòng)是否成功。
[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的日志是否啟動(dòng)成功
[root@localhost ~]# cat /root/fastdfs/logs/trackerd.log [2017-10-09 11:59:12] INFO - FastDFS v5.05, base_path=/root/fastdfs, run_by ...至此,一個(gè)簡單的的tracker配置就完成了,Tracker也成功啟動(dòng)~, 接下來要做的就是完成Storage的配置~
?
安裝storage(90/73/74/75)
將存儲(chǔ)節(jié)點(diǎn)分為兩個(gè)組,其中g(shù)roup1 (72、73)、group2 (74、75)。
創(chuàng)建存儲(chǔ)目錄和配置文件
mkdir /root/fastdfscd /etc/fdfs cp storage.conf.sample storage.conf修改配置
storage主要完成base_path,store_path以及tracker的連接地址以及storage的http服務(wù)端口配置等。
主要有如下幾個(gè)參數(shù):
vi /etc/fdfs/storage.conf # 內(nèi)容 group_name=group1 # 組名(第一組為group1,第二組為group2,依次類推...) base_path=/root/fastdfs # 數(shù)據(jù)和日志文件存儲(chǔ)根目錄 store_path0=/root/fastdfs #第一個(gè)存儲(chǔ)目錄,第二個(gè)存儲(chǔ)目錄起名為:store_path1=xxx,其它存儲(chǔ)目錄名依次類推... store_path_count=1 # 存儲(chǔ)路徑個(gè)數(shù),需要和store_path個(gè)數(shù)匹配 tracker_server=192.168.53.85:22122 # tracker服務(wù)器IP和端口 tracker_server=192.168.53.86:22122 # tracker服務(wù)器IP和端口啟動(dòng)Storage
啟動(dòng)storage,會(huì)根據(jù)配置文件的設(shè)置自動(dòng)創(chuàng)建多級(jí)存儲(chǔ)目錄,查看端口23000是否開始監(jiān)聽,確認(rèn)啟動(dòng)是否成功。
[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的日志是否啟動(dòng)成功。
[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 ...驗(yàn)證storage是否登記到tracker服務(wù)器
使用fdfs_monitor /etc/fdfs/storage.conf,運(yùn)行fdfs_monitor查看storage服務(wù)器是否已經(jīng)登記到tracker服務(wù)器。
可以在任一存儲(chǔ)節(jié)點(diǎn)上使用如下命令查看集群的狀態(tài)信息
fdfs_monitor /etc/fdfs/storage.conf如果出現(xiàn)ip_addr =?Active, 則表明storage服務(wù)器已經(jīng)登記到tracker服務(wù)器,如下:
Storage 1:id = 192.168.53.90ip_addr = 192.168.53.90 (localhost) ACTIVE至此,tracker、storage等配置都完成并成功啟動(dòng)
接下來,繼續(xù)完成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的時(shí)候,添加 fastdfs-nginx-module-master模塊,如:
./configure --add-module=../fastdfs-nginx-module/src/
configure 成功輸出結(jié)果:
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成功了
接下來執(zhí)行make和make install
make確定編譯沒有出錯(cuò),再進(jìn)行install
make install安裝成功,查看版本信息
/usr/local/nginx/sbin/nginx -V?
配置
配置fastdfs-nginx-module
進(jìn)入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 一般只需改動(dòng)以下幾個(gè)參數(shù)即可: base_path=/root/fastdfs #保存日志目錄 tracker_server=192.168.53.85:22122 tracker_server=192.168.53.86:22122 storage_server_port=23000 #storage服務(wù)器的端口號(hào) group_name=group1 #當(dāng)前服務(wù)器的group名 url_have_group_name = true #文件url中是否有g(shù)roup名 store_path_count=1 #存儲(chǔ)路徑個(gè)數(shù),需要和store_path個(gè)數(shù)匹配 store_path0=/root/fastdfs #存儲(chǔ)路徑 group_count = 2 #設(shè)置組的個(gè)數(shù)在末尾增加3個(gè)組的具體信息:
[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至存儲(chǔ)目錄的符號(hào)連接。
ln -s /root/fastdfs/data /root/fastdfs/data/M00 ll /root/fastdfs/data/M00
配置nginx
編輯/usr/local/nginx/conf配置文件目錄下的nginx.conf,設(shè)置添加storage信息并保存。
vim /usr/local/nginx/conf/nginx.conf將server段中的listen端口號(hào)改為8080,啟動(dòng)用戶使用root。
user root listen 8080;在server段中添加:
location ~/group[1-2]/M00 {root /root/fastdfs/data;ngx_fastdfs_module; }復(fù)制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插件模塊設(shè)置完成。
運(yùn)行
運(yùn)行nginx之前,先要把防火墻中對(duì)應(yīng)的端口打開(本例中為8080)。
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT /etc/init.d/iptables save啟動(dòng)nginx,確認(rèn)啟動(dòng)是否成功。(查看是否對(duì)應(yīng)端口8080是否開始監(jiān)聽)
[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的日志是否啟動(dòng)成功或是否有錯(cuò)誤。
cat /usr/local/nginx/logs/error.log在error.log中沒有錯(cuò)誤,既啟動(dòng)成功。可以打開瀏覽器,直接訪問http://192.168.53.90:8080,查看是否彈出nginx歡迎頁面。
查看到歡迎頁則說明,nginx運(yùn)行成功。之后依次在其它storage上全部安裝上nginx并確認(rèn)運(yùn)行正常。
將nginx設(shè)置為開機(jī)啟動(dòng):
vim /etc/rc.d/rc.local將運(yùn)行命令行添加進(jìn)文件:/usr/local/nginx/sbin/nginx
在tracker上安裝nginx
在tracker上安裝的nginx主要為了提供http訪問的反向代理、負(fù)載均衡以及緩存服務(wù)。
安裝
解壓
tar -zvxf nginx-1.7.9.tar.gz -C /usr/local運(yùn)行./configure進(jìn)行安裝前的設(shè)置,主要設(shè)置安裝路徑
cd /usr/local/nginx-1.7.9 ./configure --prefix=/usr/local/nginx運(yùn)行make進(jìn)行編譯,確保編譯成功。
make運(yùn)行make install進(jìn)行安裝。
make install?
配置
編輯/usr/local/nginx/conf配置文件目錄下的nginx.conf,設(shè)置負(fù)載均衡
vim /usr/local/nginx/conf/nginx.conf配置信息
worker_processes 4; #根據(jù)CPU核心數(shù)而定 events { worker_connections 65535; #最大鏈接數(shù) use epoll; #新版本的Linux可使用epoll加快處理性能 } http { #設(shè)置group1的服務(wù)器 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; } #設(shè)置group2的服務(wù)器 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 { #設(shè)置服務(wù)器端口 listen 8080; #設(shè)置group1的負(fù)載均衡參數(shù) location /group1/M00 { proxy_pass http://fdfs_group1; } #設(shè)置group2的負(fù)載均衡參數(shù) location /group2/M00 { proxy_pass http://fdfs_group2; } } }至此,nginx設(shè)置完成。
運(yùn)行
運(yùn)行nginx之前,先要把防火墻中對(duì)應(yīng)的端口打開(本例中為8080)
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT /etc/init.d/iptables save啟動(dòng)nginx,確認(rèn)啟動(dòng)是否成功。(查看是否對(duì)應(yīng)端口8080是否開始監(jiān)聽)
[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的日志是否啟動(dòng)成功或是否有錯(cuò)誤。
cat /usr/local/nginx/logs/error.log嘗試上傳一個(gè)文件到FastDFS,然后訪問試試。先配置client.conf文件。
cp client.conf.sample client.conf vim /etc/fdfs/client.conf修改以下參數(shù):
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上傳一個(gè)文件,程序會(huì)自動(dòng)返回文件的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看有查看到圖片,說明集群搭建成功!
生產(chǎn)中可以將:/root/fastdfs?替換為:/fdfs/storage
報(bào)錯(cuò)
編譯nginx的時(shí)候報(bào)錯(cuò)
在nginx目錄下,執(zhí)行configure之后,進(jìn)行make編譯報(bào)錯(cuò),報(bào)錯(cuò)內(nèi)容如下:
s -I src/mail \-o objs/addon/src/ngx_http_fastdfs_module.o \/usr/local/fastdfs-nginx-module/src/ngx_http_fastdfs_module.c In file included from /usr/local/fastdfs-nginx-module/src/ngx_http_fastdfs_module.c:6: /usr/local/fastdfs-nginx-module/src/common.c:21:25: error: fdfs_define.h: No such file or directory ...... /usr/local/fastdfs-nginx-module/src/ngx_http_fastdfs_module.c:933: error: ‘true’ undeclared (first use in this function) make[1]: *** [objs/addon/src/ngx_http_fastdfs_module.o] Error 1 make[1]: Leaving directory `/usr/local/nginx-1.7.9' make: *** [build] Error 2做以下修改
vim /usr/local/fastdfs-nginx-module/src/config將、
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"修改為:
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/local/include/fastcommon/"其實(shí)就是改動(dòng)了fastdfs的路徑,沒改之前直接訪問cd /usr/local/include/fastdfs為空目錄。
或者設(shè)置對(duì)應(yīng)的軟連接也可以。
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目錄,重新configure和make就好了。
./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module/src make?
啟動(dòng)nginx報(bào)錯(cuò)
在在storage上配置nginx相關(guān)信息后啟動(dòng)nginx,查看日志發(fā)現(xiàn)報(bào)錯(cuò):
cat /usr/local/nginx/logs/error.log ngx_http_fastdfs_process_init pid=12770 [2017-10-10 13:41:44] ERROR - file: ini_file_reader.c, line: 631, include file "http.conf" not exists, line: "#include http.conf" [2017-10-10 13:41:44] ERROR - file: /usr/local/fastdfs-nginx-module/src/common.c, line: 155, load conf file "/etc/fdfs/mod_fastdfs.conf" fail, ret code: 2 2017/10/10 13:41:44 [alert] 12769#0: worker process 12770 exited with fatal code 2 and cannot be respawned解決方案:
復(fù)制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
killall nginx /usr/local/nginx/sbin/nginx查看日志,還報(bào)錯(cuò):
[root@localhost logs]# cat /usr/local/nginx/logs/error.log ngx_http_fastdfs_process_init pid=12813 [2017-10-10 14:05:33] ERROR - file: /usr/local/fastdfs-nginx-module/src/common.c, line: 180, config file: /etc/fdfs/mod_fastdfs.conf, you must set url_have_group_name to true to support multi-group! 2017/10/10 14:05:33 [alert] 12812#0: worker process 12813 exited with fatal code 2 and cannot be respawned解決方案:
vim /etc/fdfs/mod_fastdfs.conf將
url_have_group_name=false改為
url_have_group_name=true重啟正常
?
測(cè)試圖片無法訪問
搭建完成之后,訪問http://192.168.53.85:8080/group2/M00/00/00/wKg26VncfamAEqZ0AAu-4Kcs3QI677.jpg
地址圖片總是報(bào)404無法找到,跟蹤到storage服務(wù)器,查看nginx的error日志發(fā)現(xiàn)如下;
原因是nginx啟動(dòng)的時(shí)候默認(rèn)會(huì)以nobody用戶來啟動(dòng),這樣的話就權(quán)限訪問/root/fastdfs/data的權(quán)限
修改這個(gè)問題有兩個(gè)版本,第一個(gè)方案設(shè)置nginx以root身份啟動(dòng),或者設(shè)置nobody用戶權(quán)限可以訪問/root/fastdfs/data地址。這里只展示第一種方案的修改
vim /usr/local/nginx/conf/nginx.conf # 修改nobody為root user root重啟nginx后問題解決
這里有一個(gè)網(wǎng)友整理的word版本的安裝配置文檔,包括緩存各方面的內(nèi)容比較全面,需要的朋友在公眾號(hào)回復(fù):“fastdfs”
參考:
CentOS上安裝分布式文件系統(tǒng)FastDFS & 配置和問題
總結(jié)
以上是生活随笔為你收集整理的FastDFS 集群 安装 配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 探寻新的治疗方法,研究人员用VR可视化D
- 下一篇: gitlab服务器邮箱配置