一:FastDFS原理
FastDFS是一个开源的轻量级分布式文件系统,功能包括:文件存储,文件同步,文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。
1:FastDFS架构
(1)Tracker server
跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的Storage server和group
(2)Storage server
存储服务器,主要提供容量和备份服务;以group为单位,每个group内部可以有多台storage server,数据互为备份。
(3)Client
客户端,上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。
2:文件的上传
3:文件的下载
二:FastDFS部署
1:环境要求
服务器:CentOS Linux release 7.9.2009 (Core)
FastDFS下载地址:https://github.com/happyfish100
(1)fastdfs
(2)libfastcommon
(3)fastdfs-nginx-module
(4)nginx-1.18.0
五台服务器,两台tracker 为 101 102
两台storage 为 103 104
一台client为 105
网段均属于192.168.10.0
2:安装前的准备
安装 gcc、libevent、libevent-devel
3.安装libfastcommon(除client外所有节点)
将下载好的 libfastcommon ,fastdfs, fastdfs-nginx-module, nginx-1.18.0 等文件使用工具上传到Linux服务器中(例如/usr/local/src)
安装ibfastcommon
# 解压下载下来的tar.gz压缩包到当前目录
tar -zxvf libfastcommon-1.0.36.tar.gz
# 切换到解压后的libfastcommon目录
cd libfastcommon-1.0.36
# 执行make脚本进行编译
./make.sh
# 注意:make编译的时候如果报错,需解决错误后再次进行make,通常发生错误是由于Linux缺少某些依赖库导致,根据错误提示解决错误
#执行make install进行安装
./make.sh install
4:安装FastDFS(除client外所有节点)
# 解压下载下来的tar.gz压缩包到当前目录
tar -zxvf fastdfs-5.11.tar.gz
# 切换到解压后FastDFS的目录
cd fastdfs-5.11
# 执行make脚本进行编译
./make.sh
# 执行make install进行安装
./make.sh install
#至此FastDFS安装完成,所有编译出来的文件存放在/usr/bin目录下, 所有配置文件存放在/etc/fdfs目录下
5.配置tracker服务器(101,102节点)
# 拷贝文件 tracker.conf.sample 并重命名为 tracker.conf
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
# 编辑 tracker.conf 配置文件
vi /etc/fdfs/tracker.conf
…………
base_path=/fastdfs/tracker
group_name=group1
…………
#创建日志目录
mkdir -p /fastdfs/tracker
6.配置storage服务器(103,104)
# 拷贝文件 storage.conf.sample 并重命名为 storage.conf
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
# 编辑 storage.conf 配置文件
vi /etc/fdfs/storage.conf
…………
base_path=/fastdfs/storage
tracker_server=192.168.10.101:22122
tracker_server=192.168.10.102:22122
…………
#创建日志目录
mkdir -p /fastdfs/storage
7.配置 client(在任意一个 Fastdfs 节点上配置)
[root@localhost ~]# cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
[root@localhost ~]# mkdir -p /fastdfs/tracker
[root@localhost ~l# vim /etc/fdfs/client.conf
#修改以下配置,其它保持默认
base path=/fastdfs/tracker
tracker server=192.100.139.121:22122# tracker 服务器 IP 和端囗
tracker server=192.100.139.122:22122# tracker 服务器 IP2 和端囗
8.FastDFS测试
首先在101,102节点启动tracker
/etc/init.d/fdfs_tarcker start
在103,104节点启动storage
/etc/init.d/fdfs_storage start
准备好要上传的文件
fdfs_test /etc/fdfs/client.conf upload levi.txt
//保存好最后显示的路径,后面测试需要使用
9.在所有 storage 节点安装 fastdfs-nginx-module 和nginx
#解压并修改 fastdfs-nginx-module 的配置文件
[root@localhost ~]# tar zxvf fastdfs-nginx-module v1.16.tar.gz
[root@localhost ~]# cd fastdfs-nginx-module/src
[root@localhost src]# vim config
将配置文件的路径的/local删除即可
10.编译安装 nginx
[root@localhost ~]# tar zxvf nginx-1.19.5.tar.gz
[root@localhost ~l# useradd nginx
[root@localhost ~]# cd nginx-1.19.5
[root@localhost nginx-1.19.5]# cp /usr/include/fastcommon/* /usr/include/fastdfs/
[root@localhost nginx-1.19.5]# /configure-prefix=/usr/local/nginx
--add-module=/root/fastdfs-nginx-module/src/
[root@localhost ~]# cp /root/fastdfs-nginx-module/src/mod fastdfs.conf /etc/fdfs/
[root@localhost ~l# vim /etc/fdfs/mod fastdfs.conf
11.配置 FASTDFS
[root@localhost ~]# cp /root/fastdfs-nginx-module/src/mod fastdfs.conf /etc/fdfs/
[root@localhost ~l# vim /etc/fdfs/mod fastdfs.conf
tracker server=192.168,10.101:22122 # tracker 服务器 IP 和端囗tracker_server=192.168.10.102:22122 #tracker 服务器 IP2 和端口
#ur1 中包含 group 名称
url have group name=true
复制 FastDFs 的部分配置文件到/etc/fdfs 目录,在/fastdfs/storage 文件存储目录下创建软连接,将其链接到实际存放数据的目录
[root@localhost ~]# cp /root/fastdfs-5.11/conf/http.conf /etc/fdfs
[root@localhost ~]# cp /root/fastdfs-5.11/conf/mime.types /etc/fdfs
[root@localhost ~]# In-s /fastdfs/storage/data/ /fastdfs/storage/data/M00
12.配置storage服务器中的nginx
[root@localhost ~]# cd /usr/local/nginx/
[root@localhost nginx]# vim conf/nginx.conf
serevr {
…………
location /group1/M00 {
ngx_fastdfs_module;
}
…………
}
浏览器访问图片,访问前面保存的链接即可
13.部署 nginx 代理(在 105 主机上配置)
跳过安装nginx环节,直接配置nginx配置文件
[root@localhost ~l# vim /usr/local/nginx/conf/nginx.conf
http {
…………
upstream fdfs_server_group1 {
server 192.168.10.103:80 weight=1;
server 192.168.10.104:80 weight=2;
}
…………
serever {
…………
//直接修改原有的location即可
location / {
proxy_pass http://fdfs_server_group1;
}
…………
}
}
访问前面保存的路径,但IP可以改为105