简述
FastDFS 是一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。
安装
安装位置
Fastdfs中tracker目录: /data/fastdfs/tracker
Fastdfs中数据存储路径/日志: /data/fastdfs/storage/base
Fastdfs中数据存储真实存储路: /data/fastdfs/storage/data
Nginx最终安装路径: /usr/local/nginx
安装libevent (非必须)
Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大;源代码相当精炼、易读;跨平台,支持 Windows、 Linux、 *BSD 和 Mac Os;支持多种 I/O 多路复用技术, epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定时器和信号等事件;注册事件优先级。
[root@xx]# mkdir /usr/local/libevent
[root@xx]# ./configure --prefix=/usr/local/libevent/
[root@xx]# make
[root@xx]# make install
为libevent创建软链接到/lib库下,64位系统对应/lib64
[root@xx]# cd /usr/local/libevent
[root@xx]# ln -s lib/libevent-2.1.so.7 /usr/lib/libevent-2.1.so.7
[root@xx]# ln -s lib/libevent-2.1.so.7 /usr/lib64/libevent-2.1.so.7
[root@xx]# ln -s lib/libevent.so /usr/lib64/libevent.so
[root@xx]# ln -s lib/libevent.so /usr/lib/libevent.so
到此,libevent安装完成!
libfastcommon fastdfs 安装配置
libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS运行所需要的一些基础库。
## 安装环境准备
yum install -y gcc gcc-c++
## 解压 编译
tar -zxvf libfastcommon-1.0.42.tar.gz
cd libfastcommon-1.0.42
./make.sh
./make.sh install
安装无报错说明安装成功
安装Fastdfs
conf 下的配置文件都需要复制到 /etc/fdfs/目录下
# 进入 /data/package/fastdfs 目录,解压缩 fastdfs-6.04.tar.gz 文件
cd /data/package/fastdfs
# 注意: 这里使用命令将明细输出到/dev/null 为了不刷太多控制台日志(实际无需加此重定向)。
tar -zxvf fastdfs-6.04.tar.gz > /dev/null
## 或者
tar -zxvf fastdfs-6.04.tar.gz
cd fastdfs-6.04/
# 无报错则说明编译成功.
./make.sh
# 无报错则说明安装成功。
./make.sh install
配置
配置主要包含fastdfs中tracker和stroeage得存储目录配置,文档中数据全部存储在/data/fastdfs 目录中。
我们先来创建两个存储目录
配置tracker
跟踪器Tracker主要做调度工作,相当于mvc中的controller的角色,在访问上起负载均衡的作用。跟踪器和存储节点都可以由一台或多台服务器构成,跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务,其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。
跟踪器Tracker负责管理所有的Storage和group,每个Storage在启动后会连接Tracker。
创建tracker工作目录
这个目录可以自定义,用来保存tracker的data和log。文档中我们tracker目录存储在/data/fastdfs/tracker。
创建配置文件
tracker自带了一个.sample得说明文件,这个文件需要我们重新命名和修改,配置文件目录在/etc/fdfs。
将tracker.conf.sample文件复制一份,并且后缀名去掉.sample。
修改配置文件
说明: 主要修改一下base_path 数据存储路径。
启动tracker服务
service fdfs_trackerd start
出现提示两个【OK】说明启动成功了。
设置开机启动:
echo “service fdfs_trackerd start” |tee -a /etc/rc.d/rc.local
检测服务
进行刚刚创建的tracker目录,发现目录中多了data和log两个目录。并且通过进程查看发现fastdfs得22122端口已经开始监听。
到此说明tracker服务已经启动。
# 修改base_path
cd /etc/fdfs/
vim tracker.conf
# 修改base_path 为 /user/local/fastDFS/tracker
# 启动tracker
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
ps -ef|grep tracker
配置storage
创建storage存储目录
与tracker不同的是,由于storage还需要一个目录用来存储数据,所以需要多建了两个目录fastdfs_storage_data,fastdfs_storage。
基础数据目录:
/data/fastdfs/storage/base
实际数据存储目录:
/data/fastdfs/storage/data
创建配置文件
进入/etc/fdfs目录中将自带得storage配置文件复制一份,去掉.sample后缀。
修改配置文件
主要修改配置文件中base_path路径store_path0两个参数,其他需要注意得参数如下:
1.disabled=false
2.group_name=group1 #组名,根据实际情况修改
3.port=23000 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
4.base_path=/opt/fastdfs_storage #设置storage数据文件和日志目录
5.store_path_count=1 #存储路径个数,需要和store_path个数匹配
6.store_path0=/opt/fastdfs_storage_data #实际文件存储路径
7.tracker_server=172.20.132.57:22122 #我CentOS7的ip地址
8.http.server_port=8888 #设置 http 端口号
开始修改配置文件(内容太长不方便截图,只修改了这几个地方):
base_path=/data/fastdfs/storage/base
store_path0=/data/fastdfs/storage/data
tracker_server=192.168.1.155:22122 #注意这里为本机IP,不能为127.0.0.1
tracker_server=192.168.1.156:22122 # fastdfs 双机互为主备的化这个地址为另外一台机器的tracker地址
启动storage服务
执行启动命令
service fdfs_storaged start
提示【ok】则说明启动成功。
设置开机启动:
修改rc.local
echo “service fdfs_storaged start” |tee -a /etc/rc.d/rc.local
检测服务
通过进程查看 fastdfs得storage服务已经启动。
#启动storage
# 如果storage.conf文件中的base_path store_path0 (如果新地址有 生成的data log文件需要删除)
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
ps -ef|grep storage
整体验证
使用fastdfs自带工具进行验证,修改默认得client.conf文件。
进入/etc/fdfs/ 目录,基于sample文件创建client.conf文件
编辑client.conf文件
修改 tracker_server 和base_path。
base_path=/data/fastdfs/storage/base
tracker_server=192.168.1.155:22122
tracker_server=192.168.1.156:22122 # 如果要配置fastDfs双机主备,这里就要配置另外一台机器的tracker_server
测试上传
#测试上传
cd /etc/fdfs/
vim client.conf
# 修改base_path 为 /user/local/fastDFS/client
# 修改tracker_server=192.168.209.121:22122 为 tracker_server=127.0.0.1:22122
# 注释掉 tracker_server=192.168.209.122:22122
# 上传一张 1.jpg 到/user/local/fastDFS/client目录
# 云服务需要开启 22122 和23000端口
# 测试 (在1.jpg 所在目录进行测试)-
/usr/bin/fdfs_test /etc/fdfs/client.conf upload 1.jpg
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/local/fastDFS/client/1.jpg
# 上传成功后的返回的地址
# fastdfs 的路径为: /M00/00/00/gdNcvF8fkleAXrwZAAAq1fKogMI786_big.jpg
# 对外路径为: http://129.211.92.188/group1/M00/00/00/gdNcvF8fkleAXrwZAAAq1fKogMI786_big.jpg
# 检测 fastdfs 是否启动
netstat -unltp|grep fdfs
## 查看ip
ifconfig | grep inet
配置其他文件
如果只是单机的fastDfs,这里就不需要配置了。
注意,如果需要双机fastDfs互为主备,前面tracker和storage的配置中所有的tracker_server的地址都需要配置两台服务器的tracker_server。
client配置文件
[root@node1 fdfs]# cd /etc/fdfs
[root@node1 fdfs]# cp client.conf.sample client.conf
编辑client.conf 配置文件,参考如下配置:
base_path=/data/fastdfs/storage/base # 本地fastDfs的base目录
tracker_server=192.168.1.50:22122 # 本地tracker_server地址
tracker_server=192.168.1.166:22122 # 另外一台服务器tracker_server 的地址
Storage_ids配置文件
[root@node1 fdfs]# cd /etc/fdfs
[root@node1 fdfs]#cp storage_ids.conf.sample storage_ids.conf
编辑storage_ids.conf 文件,参考如下配置:
# <id> <group_name> <ip_or_hostname>
100001 group1 192.168.1.50
100002 group1 192.168.1.166
整合nginx
在每个tracker上安装nginx,的主要目的是做负载均衡及实现高可用。如果只有一台tracker可以不配置nginx。
一个tracker对应多个storage,通过nginx对storage负载均衡;
安装fastdfs-nginx-module模块
解压fastdfs-nginx-module模块,然后将src/mod_fastdfs.conf文件复制到/etc/fdfs/目录中,
编辑mod_fastdfs.conf文件,修改其中配置项。
base_path=/data/fastdfs/storage/base
tracker_server=192.1681.155:22122
#tracker_server=192.1681.155:22122 #(多个tracker配置多行)
url_have_group_name=true #url中包含group名称
store_path0=/data/fastdfs/storage/data #指定文件存储路径(上面配置的store路径)
##
./configure --prefix=/usr/local/nginx --add-module=/data/package/fastdfs/fastdfs-nginx-module-master/src/
##
make && make install
安装
配置
拷贝配置文件到 /etc/fdfs 下
修改nginx配置
比较重要得几个配置有:
注意: location里跨域需要添加:
add_header ‘Access-Control-Allow-Origin’ ‘*’;
1、server_name指定本机ip;
2、location /group1/M00/:group1为nginx 服务FastDFS的分组名称,M00是FastDFS自动生成编号,对应store_path0=/home/fdfs_storage,如果FastDFS定义store_path1,这里就是M01
启动服务
cd /usr/local/nginx/sbin/
./nginx
错误
nginx启动日志报错:[ERROR - file:ini_file_reader.c,line:315,include file “http.conf” not ]
其他
storage 主要配置
base_path、store_path0、tracker_server 一般情况下是需要修改的
disabled=false
group_name=group1 #组名,根据实际情况修改
port=23000 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
base_path=/opt/fastdfs_storage #设置storage数据文件和日志目录
store_path_count=1 #存储路径个数,需要和store_path个数匹配
store_path0=/opt/fastdfs_storage_data #实际文件存储路径
tracker_server=172.20.132.57:22122 #我CentOS7的ip地址
http.server_port=8888 #设置 http 端口号
mod_fastdfs.conf 主要配置
base_path、tracker_server、url_have_group_name、store_path0 一般情况下需要修改
base_path=/data/fastdfs/storage/base
tracker_server=192.1681.155:22122
#tracker_server=192.1681.155:22122 #(多个tracker配置多行)
url_have_group_name=true #url中包含group名称
store_path0=/data/fastdfs/storage/data #指定文件存储路径(上面配置的store路径)
client.conf 主要配置
base_path=/data/fastdfs/storage/base # 本地fastDfs的base目录
tracker_server=192.168.1.50:22122 # 本地tracker_server地址
tracker_server=192.168.1.166:22122 # 另外一台服务器tracker_server 的地址
tracker.conf 主要配置
base_path=/data/fastdfs/tracker/base
fastdfs-nginx 安装配置
新装nginx添加fastdfs-nginx模块
nginx安装参考: nginx 安装 卸载
其他安装步骤与NGINX安装相同,不同之处是在执行 ./configure 需要添加 fastdfs-nginx配置
./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastDFS/fastdfs-nginx/src
已安装完的nginx添加fastdfs-nginx模块
## 查看已编译参数
/usr/local/nginx/sbin/nginx -V
## 加上 fastdfs-nginx 重新编译
./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastDFS/fastdfs-nginx/src
## 备份旧的nginx 启动文件
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
## 复制新的NGINX启动文件到 nginx目录 (/opt/software/nginx-1.10.1 为源码路径)
cp /opt/software/nginx-1.10.1/objs/nginx /usr/local/nginx/sbin/nginx
## 验证模块是否已添加成功
/usr/local/nginx/sbin/nginx -V
## 停止nginx 重新启动
/usr/local/nginx/sbin/nginx -s reload
公共部分
修改nginx.conf
## 添加如下配置
location /group1/M00/ {
root /usr/local/fastDFS/storage/data;
ngx_fastdfs_module;
}
分布式文件存储选型
1 fastDFS
2 云服务OSS
3 MinIO