FastDFS单机、单节点和多节点集群部署文档
FastDFS单机版部署
环境准备工作
名称 | 说明 |
---|---|
服务器IP | 192.168.11.134 |
CentOS | 7.x(mini最小化安装系统) |
libfastcommon | V1.0.39,FastDFS分离出的一些公用函数包 |
FastDFS | v5.11,FastDFS本体 |
fastdfs-nginx-module | v1.16,FastDFS和nginx的关联模块,解决组内同步延迟问题 |
nginx | nginx 1.15.2,建议1.18 |
安装FastDFS依赖
FastDFS是C语言开发的应用。安装必须使用make、cmake和gcc编译
yum install -y make cmake gcc gcc-c++ wget perl lrzsz
#yum groups install Development Tools -y
1.安装libfastcommon
下载和解压
mkdir /fastdfs
cd /fastdfs
#下载文件
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz
tar -zxvf V1.0.39.tar.gz
ls
编译和安装
cd libfastcommon-1.0.39/
./make.sh && ./make.sh install
2.安装FastDFS主程序
cd /fastdfs
#下载fdfs文件,预计有问题,建议自行上传
#wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
#解压到指定目录,进入目录
tar -zxvf V5.11.tar.gz
cd fastdfs-5.11/
#执行编译和安装
./make.sh && ./make.sh install
#查看可执行命令
ls -la /usr/bin/fdfs*
#配置文件准备,注意目录的位置
#tracker节点
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
#storage节点
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
#客户端文件,测试用
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
#供nginx访问使用,
cp /fastdfs/fastdfs-5.11/conf/http.conf /etc/fdfs/
#供nginx访问使用
cp /fastdfs/fastdfs-5.11/conf/mime.types /etc/fdfs/
#创建软链接
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
tracker server配置:
cd /etc/fdfs
yum install net-tools vim -y
#创建存储日志和数据的根目录
mkdir -p /fastdfs/tracker/base
#需要修改的内容如下:
vi /etc/fdfs/tracker.conf
# the base path to store data and log files
#base_path=/home/yuqing/fastdfs
#存储日志和数据的根目录(此目录必须存在 )
base_path=/fastdfs/tracker/base
#非开机自启动(支持start|stop|restart|status)
service fdfs_trackerd start
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
#查看状态
service fdfs_trackerd status
storage server配置
storage可以和tracker不在同一台服务器上。示例中把storage和tracker安装在同一台服务器上。
service firewalld stop
#创建运行时存放临时文件和日志的目录(此目录必须存在)
mkdir -p /fastdfs/storage/base
#创建上传文件的目录(此目录必须存在)
mkdir -p /fastdfs/storage/data
vim /etc/fdfs/storage.conf
# the base path to store data and log files
#base_path=/home/yuqing/fastdfs
#更改为运行时存放临时文件和日志的目录(此目录必须存在)
base_path=/fastdfs/storage/base
# store_path#, based 0, if store_path0 not exists, it's value is base_path
# the paths must be exist
#store_path0=/home/yuqing/fastdfs
#更改为上传文件的目录(此目录必须存在)
store_path0=/fastdfs/storage/data
# tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
#更改为tracker_server的ip地址
tracker_server=192.168.11.134:22122
#非开机自启动(支持start|stop|restart|status)
service fdfs_storaged start
#启动成功后,配置文件中 base_path指向的目录中出现FastDFS服务相关数据目录( data目录、logs目录),配置文件中的store_path0指向的目录中
#可通过monitor来查看storage是否成功绑定
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
#若成功绑定会弹出很多行信息,失败则弹出几行
service fdfs_storaged无法启动原因:
解决方案:卸载fdfs,换个安装包
Client配置
#创建运行时存放临时文件和日志的目录(此目录必须存在)
mkdir -p /fastdfs/client/base
vim /etc/fdfs/client.conf
# the base path to store log files
base_path=/fastdfs/client/base
# tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
tracker_server=192.168.11.134:22122
#客户端client配置完成
#查看fdfs功能文件
ls /usr/bin/ | grep fdfs
#上传文件测试
fdfs_upload_file /etc/fdfs/client.conf /fdfs/V1.0.39.tar.gz
group1/M00/00/00/wKgLhmEkoCKAVNQTAAJZX-7XAV0.tar.gz
#即group1/M00/=/fastdfs/storage/data/data/00/
#查看源文件
ls /fastdfs/storage/data/data/00/00
#查看文件信息
fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/wKgLhmEkoCKAVNQTAAJZX-7XAV0.tar.gz
#下载文件信息
fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKgLhmEkoCKAVNQTAAJZX-7XAV0.tar.gz /libfast.tar.gz
ll /
3.Nginx安装和fastdfs-nginx-module安装
nginx安装
#安装编译工具及库文件
yum -y install gcc automake autoconf libtool make gcc-c++ pcre* zlib openssl openssl-devel
cd /fastdfs
#下载PCRE,让Nginx支持重写功能。
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
tar -zxvf pcre-8.35.tar.gz
cd pcre-8.35
#编译安装
./configure
make && make install
#查看版本
pcre-config --version
#上传nginx和fastdfs-nginx-module_v1.16.tar.gz到/fastdfs
cd /fastdfs
tar -zxvf nginx-1.15.2.tar.gz
fastdfs-nginx-module安装
cd /fastdfs
tar -zxf fastdfs-nginx-module_v1.16.tar.gz
vim fastdfs-nginx-module/src/config
#去掉local
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
cd /fastdfs/nginx-1.15.2
./configure --add-module=/fastdfs/fastdfs-nginx-module-1.20/src/
make
/usr/local/nginx/sbin/nginx -V
make intall
#/usr/local/nginx/sbin/nginx -V 后如下图继续进行,不去检查nginx启动情况,需配置后启动
fastdfs-nginx-module安装编译失败解决方案
原因是:
无该/usr/include/local/fastdfs和/usr/include/local/fastcommon/文件
需将该路径修改到能找到该路径为止
vim fastdfs-nginx-module/src/config
# 1.16版本修改为如下内容(建议使用1.16版本的fastdfs-nginx-module)
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
# 1.20版本修改为如下内容
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/
nginx访问配置
将fastdfs-nginx-module/src下的mod-fastdfs.conf配置文件拷贝到/etc/fdfs文件目录下(在安装FastDFS主程序时已复制)
进入/etc/fdfs目录,修改mod_fastdfs.conf文件
vim /etc/fdfs/mod_fastdfs.conf
# 日志文件存放路径
base_path=/tmp
# tracker的地址
tracker_server=192.168.11.134:22122
# 组名 group_name=group1
# url是否包含group名称
url_have_group_name=true
# 需要和storage配置的相同
storage_server_port=23000
# 存储路径个数,需要和store_path个数匹配
store_path_count=1
# 上传文件存储的位置,可自定义但一定要存在
store_path0=/fastdfs/storage/data
配置nginx,80端口,server中的 location如:
server {
listen 8888;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location ~/group([1-9])/M00 {
root /fastdfs/storage/data/data;
ngx_fastdfs_module;
index index.html index.htm;
}
说明:
A、8888 端口值是要与/etc/fdfs/storage.conf 中的 http.server_port=8888 相对应, 因为 http.server_port 默认为 8888,如果想改成 80,则要对应修改过来。
B、Storage 对应有多个 group 的情况下,访问路径带 group 名,如/group1/M00/00/00/xxx, 对应的 Nginx 配置为:
location ~/group([0-9])/M00 {
root /fastdfs/storage/data/data;
ngx_fastdfs_module;
}
复制http访问配置文件(2.安装FastDFS主程序中已经复制)
#供nginx访问使用
cp /fdfs/fastdfs-5.11/conf/http.conf /etc/fdfs/
#供nginx访问使用
cp /fdfs/fastdfs-5.11/conf/mime.types /etc/fdfs/
启动nginx
#启动nginx
/usr/local/nginx/sbin/nginx
#重启
/usr/local/nginx/sbin/nginx -s reload
HHTP访问
利用client上传文件(以图为例)
#先将PC的图片上传带系统/fdfs路径下
fdfs_upload_file /etc/fdfs/client.conf /fdfs/1.png
上传成功后显示:
/group1/M00/00/00/wKgLhmEnDUiAD8WVAAQ8qaqNyck734.png
打开浏览器访问:
http://192.168.11.134:8888/group1/M00/00/00/wKgLhmEnDUiAD8WVAAQ8qaqNyck734.png
即显示如下:
创建访问data快捷方式——用于nginx代理访问时,可快捷输入找到目标文件
ln -s /fastdfs/storage/data/data/ /fastdfs/M00
4、卸载FastDFS
注意:所有删除操作请务必先查看是否存在文件文件是否为FastDFS相关和其他重要文件
FastDFS软件并未提供一键卸载功能,卸载比较麻烦,具体步骤可参考如下:
1、停止服务
# 停止tracker服务
service fdfs_trackerd stop
# 停止storage服务
service fdfs_storaged stop
2、通过storage.conf找到base_path和store_path,然后删除相关文件
cat /etc/fdfs/storage.conf |grep base_path
cat /etc/fdfs/storage.conf |grep store_path
# 注意,如果有未备份的文件,请先备份再删除 rm -rf base_path文件夹 rm -rf store_path文件夹
3、通过tracker.conf找到base_path和store_path,然后删除相关文件
cat /etc/fdfs/tracker.conf |grep base_path
rm -rf base_path文件夹
4、删除配置文件目录
rm -rf /etc/fdfs/
5、删除链接文件
rm –rf /usr/local/bin/fdfs_trackerd
rm –rf /usr/local/bin/stop.sh
rm –rf /usr/local/bin/restart.sh
6、删除storage的链接文件
rm –rf /usr/local/bin/fdfs_storaged
7、删除/usr/bin/目录下FastDFS的可执行文件
# 列表查看
ll /usr/bin/fdfs_*
# 执行删除
rm -rf /usr/bin/fdfs_*
8、删除/usr/include/目录下FastDFS相关的shell脚本
# 列表查看
ll /usr/include/fastdfs/*
# 删除
rm -rf /usr/include/fastdfs/
9、删除/usr/lib64/目录下的库文件
# 列表查看
ll libfdfsclient*
# 删除
rm -rf libfdfsclient*
10、删除/usr/lib/目录下的库
# 列表查看
ll libfdfsclient*
# 删除
rm -rf libfdfsclient*
FastDFS单节点集群部署
环境准备工作
名称 | 说明 |
---|---|
服务器IP | 192.168.11.134 |
服务器IP | 192.168.11.135 |
CentOS | 7.x(mini最小化安装系统) |
libfastcommon | V1.0.39,FastDFS分离出的一些公用函数包 |
FastDFS | v5.11,FastDFS本体 |
fastdfs-nginx-module | v1.16,FastDFS和nginx的关联模块,解决组内同步延迟问题 |
nginx | nginx 1.15.2,建议1.18 |
在集群中的每台服务器都根据FastDFS单机版部署后,每台服务器上应配置:
配置storage服务器
vi /etc/fdfs/storage.conf
#追加所有的tracker_server
tracker_server=192.168.11.134:22122
tracker_server=192.168.11.135:22122
保存后重启storage服务器
/etc/init.d/fdfs_storaged restart
配置Tracker服务器客户端
vim /etc/fdfs/client.conf
#追加所有的tracker_server
tracker_server=192.168.11.134:22122
tracker_server=192.168.11.135:22122
验证
/usr/bin/fdfs_test /etc/fdfs/client.conf upload client.conf
在每台服务器上使用如下命令,可发现数据已经同步
ls /fastdfs/storage/data/data/00/00
使用浏览器访问集群中的任意IP,显示结果一致
http://192.168.11.134:8888/group1/M00/00/00/wKgLh2EsmmSAQ_CQAAF_XZ4s9GQ800.png
http://192.168.11.135:8888/group1/M00/00/00/wKgLh2EsmmSAQ_CQAAF_XZ4s9GQ800.png
FastDFS分布式文件系统集群(多节点)
参考连接:http://www.bjpowernode.com/tutorial_fastdfs/803.html
环境准备工作
名称 | 说明 |
---|---|
服务器IP | 192.168.11.134(部署tracker和storage,group1,client) |
服务器IP | 192.168.11.135(部署tracker和storage,group1,client) |
服务器IP | 192.168.11.136(部署storage,group2,client) |
服务器IP | 192.168.11.137(部署storage,group2,client) |
CentOS | 7.x(mini最小化安装系统) |
libfastcommon | V1.0.39,FastDFS分离出的一些公用函数包 |
FastDFS | v5.11,FastDFS本体 |
fastdfs-nginx-module | v1.16,建议v1.20,FastDFS和nginx的关联模块,解决组内同步延迟问题 |
nginx | nginx 1.15.2,建议v1.18 |
在实际工作中根据实际需求进行规划。
对多台服务器,根据单机部署完成,均能使用网站访问后:(也可根据参考链接分别部署tracker和storage)
多台服务器同时操作使用xshell此功能进行部署
部署Tracker服务器
在tracker服务器上启动tracker
#非开机自启动(支持start|stop|restart|status)
service fdfs_trackerd start
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
#查看状态
service fdfs_trackerd status
部署storage server服务器
将storage server服务器其中两台配置为group1,另外两台部署为group2
storage server服务器都需要关闭tracker功能
service fdfs_trackerd stop
部署节点group 1
由于很多配置在单机部署时已经配置完成,只需在其中进行更改
vim /etc/fdfs/storage.conf
group_name=group1 #组名,根据实际情况修改,本节点值为 group1
#增加集群tracker_server的ip地址
tracker_server=192.168.11.134:22122
tracker_server=192.168.11.135:22122
#非开机自启动(支持start|stop|restart|status)
service fdfs_storaged start
#非开机自重启支持start|stop|restart|status)
service fdfs_storaged restart
部署节点group 2
由于很多配置在单机部署时已经配置完成,只需在其中进行更改
vim /etc/fdfs/storage.conf
group_name=group2 #组名,根据实际情况修改,本节点值为 group2
#增加集群tracker_server的ip地址
tracker_server=192.168.11.134:22122
tracker_server=192.168.11.135:22122
#非开机自启动(支持start|stop|restart|status)
service fdfs_storaged start
#非开机自重启支持start|stop|restart|status)
service fdfs_storaged restart
测试节点部署
四台服务器重启storage后
#可通过monitor来查看storage是否成功绑定
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
#若成功绑定会弹出很多行信息,失败则弹出几行
两个组的storage按照相同的步骤操作:
其中唯一的区别是一个是group_name=group1,另一个是group_name=group2
在tracker.conf配置文件配置存储group轮询
vim /etc/fdfs/tracker.conf
#将默认的store_lookup=2改为store_lookup=0
store_lookup=0
#确认store_server值为0
store_server=0
重启tracker
service fdfs_trackerd restart
进行文件上传
#先将PC的图片上传带系统/fdfs路径下,会发现会存在不同的group节点,即表示节点部署成功
fdfs_upload_file /etc/fdfs/client.conf /fdfs/1.png
部署Http访问FastDFS上的文件
在每天服务器上进入/etc/fdfs目录,修改mod_fastdfs.conf文件
vim /etc/fdfs/mod_fastdfs.conf
# 增加tracker的地址
tracker_server=192.168.11.134:22122
tracker_server=192.168.11.135:22122
#修改组的个数
group_count = 2
# 修改组名,根据实际情况,比如本机是group1就修改为group1,本机是group2,就改为group2
group_name=group1
# 上传文件存储的位置,可自定义但一定要存在
store_path0=/fastdfs/storage/data
#在末尾增加2个组的具体信息:
#其中store_path0的路径一定是上传文件存储的位置,否则会无法找到文件
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/fastdfs/storage/data
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/fastdfs/storage/data
在单机版部署nginx时,nginx.conf是如下配置,便无需更改,否则需对每个storage服务器的nginx进行更改
location ~ /group[1-9]/M0[0-9] {
ngx_fastdfs_module;
}
重启storage,启动Nginx
#重启storage
service fdfs_storaged restart
#启动nginx
/usr/local/nginx/sbin/nginx
#重启
/usr/local/nginx/sbin/nginx -s reload
集群测试
利用client上传文件(以图为例)
#先将PC的图片上传带系统/fdfs路径下
fdfs_upload_file /etc/fdfs/client.conf /fdfs/1.png
上传成功后显示:
/group1/M00/00/00/wKgLh2EsxRqABvG8AAQ8qaqNyck069.png
#查看源文件
ls /fastdfs/storage/data/data/00/00
group1上的文件
group2上的文件
打开浏览器访问四台storage服务器的ip和各组名,都能访问成功(以下举例,自行测试):
http://192.168.11.134:8888/group1/M00/00/00/wKgLh2EsxRqABvG8AAQ8qaqNyck069.png
http://192.168.11.134:8888/group2/M00/00/00/wKgLh2EsxRqABvG8AAQ8qaqNyck069.png
http://192.168.11.135:8888/group1/M00/00/00/wKgLh2EsxRqABvG8AAQ8qaqNyck069.png
http://192.168.11.135:8888/group2/M00/00/00/wKgLh2EsxRqABvG8AAQ8qaqNyck069.png
tracker上部署nginx访问
配置两个tracker server服务器上的Nginx访问,这两个台服务器上的Nginx只需要做负载均衡。
#部署配置nginx负载均衡:
#http中增加
upstream fastdfs_storage_server {
server 192.168.11.134:8888;
server 192.168.11.135:8888;
server 192.168.11.136:8888;
server 192.168.11.137:8888;
}
server 8000{
location ~ /group[1-9]/M0[0-9] {
proxy_pass http://fastdfs_storage_server;
}
}
重启nginx
/usr/local/nginx/sbin/nginx -s reload
即可访问tracker server服务器的ip地址,比如:
http://192.168.11.134:8000/group1/M00/00/00/wKgLh2EsxRqABvG8AAQ8qaqNyck069.png