FastDfs单点集群部署
目录
1.2 fastDFS github下载地址(nginx插件也在此下载) 3
4.4 安装fastdfs-nginx-module(nginx插件版本与fastDFS版本是对应得5.11应使用1.20) 5
5.3 在单机单group的基础上更改配置文件(只需要更改两个配置文件,storage_group2.conf, mod_fastdfs.conf) 9
5.3.1 复制一份storage.conf配置文件为storage_group2.conf 9
5.3.2 修改storage_group2.conf配置文件 9
5.3.3 修改mod_fastdfs.conf配置文件 10
5.4 启动trackerd,启动两个storaged 10
5.5 启动nginx 更改完mod_fastdfs.conf 后,例如添加了group 需要重启nignx,不然不生效。 10
6.3 安装libfatscommon (两台同时操作) 12
6.5 安装fastdfs-nginx-module(nginx插件版本与fastDFS版本是对应得5.11应使用1.20)(两台同时操作) 12
6.10 启动tracker 启动 storage (两台同时操作) 14
6.13 测试nginx web下载(可以下载说明nginx没有问题) 16
6.14 配置nginx负载均衡(10.0.0.6上) 16
6.15 访问测试(顺便观察日志,查看是否是轮询分配到两台服务器的) 16
7.1 fdfs_monitor查看确认storage是否自动注册到tracker中 17
参考文档
简介
fastDFS github下载地址(nginx插件也在此下载)
https://github.com/happyfish100
fastDFS github安装教程
https://github.com/happyfish100/fastdfs/wiki
参考安装文档
https://blog.csdn.net/qq_34301871/article/details/80060235
java client连接示例
https://github.com/happyfish100/fastdfs-client-java
fastDFS简介
安装环境
系统版本 | CentOS Linux release 7.7.1908 (Core) |
内核版本 | Linux iZ8vbi0h0xw72d5qfizju9Z 3.10.0-1062.12.1.el7.x86_64 #1 SMP Tue Feb 4 23:02:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux |
fastDFS版本 | fastdfs-5.11.zip |
nginx版本 | nginx-1.16.1.tar.gz |
nginx fastDFS插件版本 | https://github.com/happyfish100/fastdfs-nginx-module/tree/V1.20 |
nginx fastDFS插件版本 和fastDFS的版本是相对应的
单点安装
安装必要的依赖包
yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y
安装libfatscommon
git clone https://github.com/happyfish100/libfastcommon.git --depth 1
cd libfastcommon/
/make.sh && ./make.sh install
echo $?
安装fastDFS
cd ~
unzip fastdfs-5.11.zip
cd fastdfs-5.11/
./make.sh && ./make.sh install
echo $?
#复制配置文件
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 /root/fastdfs-5.11/conf/http.conf /etc/fdfs/ #供nginx访问使用
cp /root/fastdfs-5.11/conf/mime.types /etc/fdfs/ #供nginx访问使用
安装fastdfs-nginx-module(nginx插件版本与fastDFS版本是对应得5.11应使用1.20)
https://github.com/happyfish100/fastdfs-nginx-module/tree/V1.20
unzip fastdfs-nginx-module-1.20.zip
cp fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs/
#更改config文件,不然nginx添加模块找不到路径会报错,更改文件以下两个选项
vim /root/fastdfs-nginx-module-1.20/src/config
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
安装nginx
tar xf nginx-1.16.1.tar.gz
cd nginx-1.16.1/
./configure --prefix=/etc/nginx-1.16.1 --user=nobody --group=noboby --pid-path=/var/run/nginx.pid --with-stream --add-module=/root/fastdfs-nginx-module-1.20/src
make && make install
ln -s /etc/nginx-1.16.1/ /etc/nginx
ln -s /etc/nginx/sbin/nginx /usr/local/bin/nginx
#更改配置文件,去掉user nobody前面得#号
vim /etc/nginx/conf/nginx.conf
# user nobody;
创建数据与日志存储目录
mkdir -p /etc/fdfs/data
配置tracker
vim /etc/fdfs/tracker.conf
#需要修改的内容如下
port=22122 # tracker服务器端口(默认22122,一般不修改)
base_path=/etc/fdfs/data # 存储日志和数据的根目录
max_connections=256 #服务器支持的最大连接数
work_threads=1 #工作线程数,通常设置为CPU数量
store_lookup=2 #上传组(group)的方式:0轮询,1:指定,2:负载平衡(剩余空间最大选择)
store_group=group2 #如果上一参数选择1方式,即制定组名,当前参数用来设置指定的组,如果选择其他方式,当前参数无效
store_server=0 #同组推送方式0.轮询方式,1.根据ip地址进行排序选择第一个服务器,2.根据优先级进行排序(优先级由storage.conf的配置文件中upload_priority属性设置)
store_path=0 #选择哪个文件目录进行上传(一个StoreServer上面可以有多个base_path)0.轮询,2.剩余空间最大
download_server=0 #选择哪个storeServer最为下载服务器,0.轮询,1.哪个为源则哪个下载
log_level=info #日志级别,最好不要使用info,日志量会很大
配置storage
vim /etc/fdfs/storage.conf
#需要修改的内容如下
port=23000 # storage服务端口(默认23000,一般不修改)
base_path=/etc/fdfs/data # 数据和日志文件存储根目录
store_path0=/etc/fdfs/data # 第一个存储目录
tracker_server=172.26.103.84:22122 # tracker服务器IP和端口
http.server_port=8888 # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
启动tracker 启动 storage
/etc/init.d/fdfs_trackerd start #启动后端口22122
/etc/init.d/fdfs_storaged start #启动后端口23000
配置client测试是否可以上传文件
vim /etc/fdfs/client.conf
#需要修改的内容如下
base_path=/etc/fdfs/data
tracker_server=172.26.103.84:22122 #tracker服务器IP和端口
#保存后测试,返回ID表示成功 如:group1/M00/00/00/xx.tar.gz
上传任意文件测试是否能上传(并记录下返回值,稍后测试nginx web功能会用到)
fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz
配置nginx访问
修改第一个配置文件
vim /etc/fdfs/mod_fastdfs.conf
#需要修改的内容如下
tracker_server=172.26.103.84:22122 #tracker服务器IP和端口
url_have_group_name=true
store_path0=/etc/fdfs/data
修改nginx配置文件
vim /etc/nginx/conf/nginx.conf
include conf.d/*.conf;
#子目录添加如下配置
vim /etc/nginx/conf/conf.d/fdfs.conf
server {
listen 8888; ## 该端口为storage.conf中的http.server_port相同
server_name localhost;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
nginx -t
nginx -s reload
测试nginx web下载
用外部浏览器访问刚才已传过的nginx安装包,引用返回的ID
http://39.101.222.104:8888/group1/M00/00/00/rBpnVF5vNmuARquQAA_BtpkkX5U.tar.gz
#弹出下载单机部署全部跑通
增加group存储文件
更改配置文件,选择增加的group做何用
vim /etc/fdfs/tracker.conf
选择组来上传文件的方法
# 0:循环赛
# 1:指定组
# 2:负载平衡,选择最大自由空间组上传文件
store_lookup = 0
如果等于0,那么就是增加存储空间,数据循环存入group存储文件
如果等于1,那么就可以看作为数据隔离,指定数据上传到指定组
如果等于2,那么就是增加存储空间,数据循环存入group存储文件
创建group2的数据及日志存放路径
mkdir -p /etc/fdfs/data_group2
在单机单group的基础上更改配置文件(只需要更改两个配置文件,storage_group2.conf, mod_fastdfs.conf)
复制一份storage.conf配置文件为storage_group2.conf
cp /etc/fdfs/storage.conf /etc/fdfs/storage_group2.conf
修改storage_group2.conf配置文件
vim /etc/fdfs/storage_group2.conf
#主要需要修改
port=23001 #端口不能与已经启动的group1相同
group_name=group2
base_path=/etc/fdfs/data_group2 #数据及日志存放路径
store_path0=/etc/fdfs/data_group2
tracker_server=172.26.103.84:22122 #指定注册到哪个tracker_server
log_level=info #log日志级别
修改mod_fastdfs.conf配置文件
vim /etc/fdfs/mod_fastdfs.conf
#主要需要修改
group_name=group1/group2
group_count = 2
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/etc/fdfs/data/
[group2]
group_name=group2
storage_server_port=23001
store_path_count=1
store_path0=/etc/fdfs/data_group2
启动trackerd,启动两个storaged
/etc/init.d/fdfs_trackerd restart
/etc/init.d/fdfs_storaged restart
/usr/bin/fdfs_storaged /etc/fdfs/storage_group2.conf start
启动nginx 更改完mod_fastdfs.conf 后,例如添加了group 需要重启nignx,不然不生效。
nginx
nginx -s reload
测试group2的上传下载是否成功
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/ceshi.jpg 172.26.103.84:23001
#以下返回值确实为group2
group2/M00/00/00/rBpnVF5wbjeAGaxnAACcsysMeDk075.jpg
#尝试通过nginx web打开此group2,能打开则group2成功
http://39.101.222.104:8888/group2/M00/00/00/rBpnVF5wbjeAGaxnAACcsysMeDk075.jpg
fastDFS集群
两台服务器
10.0.0.6 192.168.1.6
10.0.0.7 192.168.1.7
安装必要的依赖包(两台同时操作)
yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y
安装libfatscommon (两台同时操作)
git clone https://github.com/happyfish100/libfastcommon.git --depth 1
cd libfastcommon/
/make.sh && ./make.sh install
echo $?
安装fastDFS (两台同时操作)
把安装包上传到服务器
cd ~
yum install unzip -y
unzip fastdfs-5.11.zip
cd fastdfs-5.11/
./make.sh && ./make.sh install
echo $?
#复制配置文件
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 /root/fastdfs-5.11/conf/http.conf /etc/fdfs/ #供nginx访问使用
cp /root/fastdfs-5.11/conf/mime.types /etc/fdfs/ #供nginx访问使用
安装fastdfs-nginx-module(nginx插件版本与fastDFS版本是对应得5.11应使用1.20)(两台同时操作)
https://github.com/happyfish100/fastdfs-nginx-module/tree/V1.20
unzip fastdfs-nginx-module-1.20.zip
cp fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs/
#更改config文件,不然nginx添加模块找不到路径会报错,更改文件以下两个选项
vim /root/fastdfs-nginx-module-1.20/src/config
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
安装nginx(两台同时操作)
tar xf nginx-1.16.1.tar.gz
cd nginx-1.16.1/
./configure --prefix=/etc/nginx-1.16.1 --user=nobody --group=noboby --pid-path=/var/run/nginx.pid --with-stream --add-module=/root/fastdfs-nginx-module-1.20/src
make && make install
ln -s /etc/nginx-1.16.1/ /etc/nginx
ln -s /etc/nginx/sbin/nginx /usr/local/bin/nginx
#更改配置文件,去掉user nobody前面得#号
vim /etc/nginx/conf/nginx.conf
# user nobody;
创建数据与日志存储目录 (两台同时操作)
mkdir -p /etc/fdfs/data
配置tracker(两台同时操作)
vim /etc/fdfs/tracker.conf
#需要修改的内容如下
port=22122 # tracker服务器端口(默认22122,一般不修改)
base_path=/etc/fdfs/data # 存储日志和数据的根目录
max_connections=256 #服务器支持的最大连接数
work_threads=1 #工作线程数,通常设置为CPU数量
store_lookup=2 #上传组(group)的方式:0轮询,1:指定,2:负载平衡(剩余空间最大选择)
store_group=group2 #如果上一参数选择1方式,即制定组名,当前参数用来设置指定的组,如果选择其他方式,当前参数无效
store_server=0 #同组推送方式,可以设置优先存储到哪个storage。 0.轮询方式,1.根据ip地址进行排序选择第一个服务器,2.根据优先级进行排序(优先级由storage.conf的配置文件中upload_priority属性设置)
store_path=0 #选择哪个文件目录进行上传(一个StoreServer上面可以有多个base_path)0.轮询,2.剩余空间最大
download_server=0 #选择哪个storeServer最为下载服务器,0.轮询,1.哪个为源则哪个下载
log_level=info #日志级别,最好不要使用info,日志量会很大
配置storage(两台同时操作)
vim /etc/fdfs/storage.conf
#需要修改的内容如下
port=23000 # storage服务端口(默认23000,一般不修改)
base_path=/etc/fdfs/data # 数据和日志文件存储根目录
store_path0=/etc/fdfs/data # 第一个存储目录
tracker_server=192.168.1.6:22122 # tracker服务器IP和端口
tracker_server=192.168.1.7:22122
http.server_port=8888 # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
启动tracker 启动 storage (两台同时操作)
/etc/init.d/fdfs_trackerd start #启动后端口22122
/etc/init.d/fdfs_storaged start #启动后端口23000
配置client测试是否可以上传文件
vim /etc/fdfs/client.conf
#需要修改的内容如下
base_path=/etc/fdfs/data
tracker_server=192.168.1.6:22122 #tracker服务器IP和端口
tracker_server=192.168.1.7:22122
#保存后测试,返回ID表示成功 如:group1/M00/00/00/xx.tar.gz
上传任意文件测试是否能上传(并记录下返回值,稍后测试nginx web功能会用到)
fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz
查看两台服务器data路径下,如果都有此文件,说明搭建成功
cd /etc/fdfs/data/data/00/00
配置nginx访问(两台同时操作)
修改第一个配置文件
vim /etc/fdfs/mod_fastdfs.conf
#需要修改的内容如下
tracker_server=192.168.1.6:22122 #都写本机的tracker服务器IP和端口,可以多写,为了负载均衡方便只写一个
url_have_group_name=true
store_path0=/etc/fdfs/data
修改nginx配置文件
vim /etc/nginx/conf/nginx.conf
include conf.d/*.conf;
#子目录添加如下配置
mkdir /etc/nginx/conf/conf.d/
vim /etc/nginx/conf/conf.d/fdfs.conf
server {
listen 8888; ## 该端口为storage.conf中的http.server_port相同
server_name localhost;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
nginx -t
nginx -s reload
测试nginx web下载(可以下载说明nginx没有问题)
用外部浏览器访问刚才已传过的nginx安装包,引用返回的ID
http://10.0.0.6:8888/group1/M00/00/00/rBpnVF5vNmuARquQAA_BtpkkX5U.tar.gz
http://10.0.0.7:8888/group1/M00/00/00/rBpnVF5vNmuARquQAA_BtpkkX5U.tar.gz
配置nginx负载均衡(10.0.0.6上)
vim /etc/nginx/conf/conf.d/fdfs_stream.conf
vim /etc/nginx/conf/nginx.conf
访问测试(顺便观察日志,查看是否是轮询分配到两台服务器的)
http://10.0.0.6/group1/M00/00/00/wKgBBl5wi8CAe4vqAAZ68RYWD38.11.zip
后续如果空间不够可以增加store_path0,负载不够就在加一套单点然后修改一下其他得配置文件即可
fastDFS监控系统 fastdfs-zyc
https://www.cnblogs.com/shihaiming/p/6283681.html
常用命令
fdfs_monitor查看确认storage是否自动注册到tracker中
fdfs_monitor /etc/fdfs/storage.conf
启动tracker 启动 storage
/etc/init.d/fdfs_trackerd start #启动后端口22122
/etc/init.d/fdfs_storaged start #启动后端口23000
添加文件到fastdfs
fdfs_upload_file /etc/fdfs/client.conf /root/fastdfs-5.11.zip
删除添加到fastdfs得文件
fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgBBl5wi8CAe4vqAAZ68RYWD38.11.zip
删除fastdfs得storaged节点,及不同步处理