一、FastDFS的介绍与原理
官方Github地址:https://github.com/happyfish100
FastDFS 是一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。
主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。
FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)。
-
Tracker Server:跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。
-
Storage Server:存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。
-
Client:客户端,上传下载数据的服务器,也就是我们自己的项目所部署在的服务器,在使用的过程中,只需要配置Tranker的地址即可。
二、FastDFS的安装前环境准备
需要用到的相关软件与简单介绍
centos | 7.x |
---|---|
libfatscommon | FastDFS分离出的一些公用函数包 |
FastDFS | FastDFS本体 |
fastdfs-nginx-module | FastDFS和nginx的关联模块 |
nginx | nginx1.20.2 |
1、检查安装编译环境:
yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y
2、统一准备好文件夹位置:
说明 | 位置 |
---|---|
所有安装包 | /usr/local/fastdfs |
数据存储位置 | /data/fastdfs/ |
#data/logs都存在了dfs |
[root@tcosmo-test-szls-baas01 /]# mkdir /usr/local/fastdfs [root@tcosmo-test-szls-baas01 /]# mkdir -p /data/fastdfs ## 进入 [root@tcosmo-test-szls-baas01 fastdfs]# cd /usr/local/fastdfs/
三、安装FastDFS的四大软件
由于github经常无法访问,我们可以提前下载好,拷贝进/usr/local/fastdfs目录下
1、下载并安装libfatscommon:
git clone https://github.com/happyfish100/libfastcommon.git --depth 1 cd libfastcommon/ ./make.sh && ./make.sh install #编译安装
2、安装FastDFS本体:
git clone https://github.com/happyfish100/fastdfs.git --depth 1 cd fastdfs/ ./make.sh && ./make.sh install #编译安装 # 查看默认提供的配置文件: [root@tcosmo-test-szls-baas01 fdfs]# ll /etc/fdfs/ total 32 -rw-r--r-- 1 root root 1909 Feb 14 11:25 client.conf -rw-r--r-- 1 root root 10246 Feb 14 11:25 storage.conf -rw-r--r-- 1 root root 620 Feb 14 11:25 storage_ids.conf -rw-r--r-- 1 root root 9138 Feb 14 11:25 tracker.conf # 提前将nginx的配置文件也拷贝到fdfs的配置文件文件夹下: cp /usr/local/fastdfs/fastdfs/conf/http.conf /etc/fdfs/ #供nginx访问使用 cp /usr/local/fastdfs/fastdfs/conf/mime.types /etc/fdfs/ #供nginx访问使用
当fastdfs安装完成后,会在 /usr/local/fastdfs/fastdfs/init.d 目录下生成对应的运行脚本:
[root@i-zqovu8av init.d]# ll /usr/local/fastdfs/fastdfs/init.d total 8 -rwxrwxrwx 1 root root 961 Dec 31 02:52 fdfs_storaged -rwxrwxrwx 1 root root 963 Dec 31 02:52 fdfs_trackerd
如果没有运行权限,我们就手动chmod!
3、安装fastdfs-nginx-module:
git clone https://github.com/happyfish100/fastdfs-nginx-module.git --depth 1 cp /usr/local/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
4、安装Nginx并添加fastdfs-nginx-module:
## 下载 wget ## 解压 & 进入: tar -zxvf nginx-1.20.2.tar.gz cd nginx-1.20.2/ ## 添加fastdfs-nginx-module模块 ./configure --add-module=/usr/local/fastdfs/fastdfs-nginx-module/src/ ## 编译安装 make && make install
具体的Nginx安装参考:Nginx的安装与使用
四、FastDFS的单机部署配置
1、tracker的配置:
#服务器ip为 139.198.191.246 vim /etc/fdfs/tracker.conf #需要修改的内容如下 port=22122 # tracker服务器端口(默认22122,一般不修改) base_path=/data/fastdfs # 存储日志和数据的根目录
2、storage的配置:
vim /etc/fdfs/storage.conf #需要修改的内容如下 port=23000 # storage服务端口(默认23000,一般不修改) base_path=/data/fastdfs # 数据和日志文件存储根目录 store_path0=/data/fastdfs # 第一个存储目录 tracker_server=139.198.191.246:22122 # tracker服务器IP和端口 http.server_port=8888 # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
3、nginx的配置:
vim /etc/fdfs/mod_fastdfs.conf #需要修改的内容如下 tracker_server=139.198.191.246:22122 #tracker服务器IP和端口 url_have_group_name=true store_path0=/data/fastdfs #配置nginx.config vim /usr/local/nginx/conf/nginx.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; } }
4、启动服务:
# 关闭防火墙 systemctl stop firewalld.service # 启动tracker /usr/local/fastdfs/fastdfs/init.d/fdfs_trackerd start Starting FastDFS tracker server: # 启动storage /usr/local/fastdfs/fastdfs/init.d/fdfs_storaged start Starting FastDFS storage server: # 重启nginx nginx -s reload
五、使用自带的client测试文件的上传与访问
1、配置自带的client的配置文件:
vim /etc/fdfs/client.conf #需要修改的内容如下 base_path=/data/fastdfs tracker_server=139.198.191.246:22122 #tracker服务器IP和端口
2、测试上传一个文件,我们事先在某个位置准备一张图片即可:
[root@i-zqovu8av fdfs]# fdfs_upload_file /etc/fdfs/client.conf /root/testfdfs.jpg group1/M00/00/00/i8a_9mIKAMKAPKgPAAA2E69InJY486.jpg #返回图片位置,则表示成功。
3、上传成功后,我们就能在 /data/fastdfs 目录下,看到我们上传的文件:
[root@i-zqovu8av 00]# pwd /data/fastdfs/data/00/00 [root@i-zqovu8av 00]# ls i8a_9mIKAMKAPKgPAAA2E69InJY486.jpg
4、我们还可以通过配置的Nginx对文件进行直接访问:
http://139.198.191.246:8888/group1/M00/00/00/i8a_9mIKAMKAPKgPAAA2E69InJY486.jpg
至此,FastDFS的单机版安装与测试完成,高可用集群版,后面再说吧。
补充一:FastDFS与Nginx的开机自启动
考虑到每次启动之后都要重新启动一下fastdfs 和 nginx服务,比较麻烦,所以增加开机自启动
1、配置 rc.local 文件:
vim /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
2、由于在centos7中, /etc/rc.d/rc.local 文件的权限被降低了,需要给rc.local 文件增加可执行的权限:
chmod +x /etc/rc.d/rc.local