注:生产环境亲身实践,可复用
参考资料:https://blog.csdn.net/weixin_45422648/article/details/120308274
https://blog.csdn.net/deepking18254382067/article/details/102917823
一.FastDFS分布式存储
当在某一个Group中添加新的Storage服务器的时候,新加入该Group的服务器会自动同步所有数据。当新添加Group的时候,只需要修改处于前端的Nginx服务器即可。要实现主备自动切换还可以加入KeepAlived中间件。
FastDFS服务器通过HTTP提供服务,但是HTTP的性能太弱,所以在V4.05之后的版本中删除了内置的HTTP服务。
FastDFS的Group之间的Storage需要复制数据,如果请求的数据正在复制,由于不是源服务器,那么fastdfs-nginx-module将进行重定向源服务器。
fastdfs-nginx-module支持配置多个组,一个服务器可以配置多个Group不同的Storage。同一个Group的Storage必须端口相同。
Nginx会为FastDFS提供负载均衡和数据缓存的功能。
FastDFS集群的总容量等于全部Group容量之和。一个Group的容量等于最小的Storage服务器容量。
组一般用于隔离不同的数据。
二.机器规划&公共包安装
1.tracker 两台:
172.16.228.133 tracker1
172.16.228.134 tracker2
2.storage 四台:分两组
172.16.228.135 storage1 group1
172.16.228.136 storage2 group1
172.16.228.137 storage3 group2
172.16.228.138 storage4 group2
3.安装Nginx、Fastdfs需要的库依赖(全部安装)
yum install gcc perl openssl openssl-devel pcre pcre-devel zlib zlib-devel libevent libevent-devel -y
4.准备安装包
libfastcommon-master.zip fastdfs依赖库
FastDFS_v5.08.tar.gz fastdfs安装包
fastdfs-nginx-module_v1.16.tar.gz fastdfs扩展包
nginx-1.16.1.tar.gz nginx安装包
5.安装FastDFS及其依赖库(全部安装)
a).解压 libfastcommon-master.zip
进入: libfastcommon-master
编译: ./make.sh
安装: ./make.sh install
b).解压 FastDFS_v5.08.tar.gz
进入:FastDFS
编译:./make.sh
安装:./make.sh install
复制文件:将conf下的 http.conf mime.types 复制到/etc/fdfs/目录下
修改配置文件名称:进入到 /etc/fdfs/下 将.sample后缀全部去掉
三.配置tracker(两台,133 134)
1.进入到/etc/fdfs/下 (两台相同操作)
vim tracker.conf
base_path=/home/fastdfs/tracker (确保路径存在,不存在先创建)
2.配置参数介绍
reserved_storage_space = 10%
解释:torage server 上保留的空间,保证系统或其他应用需求空间。只要同组内任一storage server剩余空间小于这个值,就不允许再上传文件
--------------------------------------------------------------------------------------
负载均衡策略
0: 轮训,每个组上传一次
1: 指定组上传
2: 负载均衡,选择上传文件的最大空闲空间组
store_lookup=2
解释:当store_lookup=1时,store_group必须指定组名
store_group=group2
3.安装nginx
a)、tar -zxvf nginx-1.16.1.tar.gz
b)、cd /home/nginx-1.16.1
./configure --prefix=/usr/local/nginx (如果没权限执行chmod +x configure)
make
make install
c)、进入/usr/local/nginx/conf 修改nginx配置文件
vim nginx.conf
配置内容:
upstream fastdfs_group1_server {
server 172.16.228.135:8888;
server 172.16.228.136:8888;
}
upstream fastdfs_group2_server {
server 172.16.228.137:8888;
server 172.16.228.138:8888;
}
server{
listen 8888;
server_name localhost;
location ~ /group1/M0[0-9] {
proxy_pass http://fastdfs_group1_server;
}
location ~ /group2/M0[0-9] {
proxy_pass http://fastdfs_group2_server;
}
}
四.配置storage(四台,135 136 137 138)
1.进入到/etc/fdfs/ 下
a)、group1:
172.16.228.135
172.16.228.136
配置:
tracker_server=172.16.228.133:22122 (配置tracker)
tracker_server=172.16.228.134:22122
group_name=group1
base_path=/home/fastdfs/storage (确保路径存在,不存在先创建)
store_path0=/home/fastdfs/storage/data (确保路径存在,不存在先创建)
--------------------------------------------------------------
b)、group2:
172.16.228.137
172.16.228.138
配置:
tracker_server=172.16.228.133:22122 (配置tracker)
tracker_server=172.16.228.134:22122
group_name=group2
base_path=/home/fastdfs/storage (确保路径存在,不存在先创建)
store_path0=/home/fastdfs/storage/data (确保路径存在,不存在先创建)
注释:除了组名称不一样,其余都一样
2.安装nginx及扩展模块fastdfs-nginx-module(四台storage操作相同)
a)、tar -zxvf nginx-1.16.1.tar.gz
b)、tar zxf fastdfs-nginx-module_v1.16.tar.gz
cd fastdfs-nginx-module/src
vi config
修改配置文件中第四行,把路径中local去掉。参数是用于配置安装nginx中的FastDFS组件的时候,在什么位置查找FastDFS核心代码
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
c)、cd /home/nginx-1.16.1
./configure --prefix=/usr/local/nginx --add-module=/home/fastdfs-nginx-module/src (添加扩展模块,如果没权限执行chmod +x configure)
make
make install
d)、将fastdfs-nginx-module下src目录中的(mod_fastdfs.conf)拷贝到/etc/fdfs/下
e)、 进入/etc/fdfs修改mod_fastdfs.conf文件
配置文件:
vim mod_fastdfs.conf
base_path=/home/fastdfs/mod_fastdfs #保存日志目录
tracker_server=172.16.228.133:22122 #tracker服务器的IP地址以及端口号
tracker_server=172.16.228.134:22122
group_name=group1 #当前服务器的group名(135 136 group1,137 138 group2)
url_have_group_name=true #文件url中是否有group名
store_path0=/home/fastdfs/storage/data #存储路径
group_count = 2 #设置组的个数
在末尾增加2个组的具体信息:(有几组就填写几组)
f)、[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/fastdfs/storage/data
g)、[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/home/fastdfs/storage/data
3.进入/usr/local/nginx/conf 修改nginx配置文件
vim nginx.conf
配置内容:
server{
listen 8888; #storage 配置中, 有http.server_post=8888的配置信息,必须一致
server_name localhost;
location ~ /group[1-9]/M0[0-9] {
ngx_fastdfs_module;
}
}
五.启动&开机自动启动
a)启动
tracker(133 134): service fdfs_trackerd start
storage(135 136 137 138): service fdfs_storaged start
nginx: cd /usr/local/nginx/sbin/
./nginx
b)设置开机自动启动
编辑 /etc/rc.d/rc.local 文件,添加如下配置
# fastdfs start
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
# nginx start
/usr/local/nginx/sbin/nginx
在centos7中, /etc/rc.d/rc.local 文件的权限被降低了,需要给rc.local 文件增加可执行的权限
chmod +x /etc/rc.d/rc.local
六.集成SpringBoot
参考https://github.com/tobato/FastDFS_Client