赞
踩
FastDFS是一个开源的高性能分布式文件系统(DFS)。它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size < 500MB)为载体的在线服务。
Client客户端 实现文件上传下载的服务器,就是我们自己的项目所部署在的服务器。通过专有接口,使用 TCP/IP 协议与跟踪服务器或存储服务器进行数据交互。FastDFS 向使用者提供基本文件访问接口,比如 upload、download、append、delete 等,以客户端库的方式提供给用户使用。
Tracker Server跟踪服务器 负责文件访问的调度和负载均衡,负责管理所有的 Storage Server 和 group 组/卷。
Storage Server存储服务器 负责文件存储,文件同步/备份,提供文件访问接口,文件元数据管理。以 group 为单位,每个 group 内可以有多台 Storage Server,数据互为备份,达到容灾的目的。每个 Storage 在启动以后会主动连接 Tracker,告知自己所属 group 等存储相关信息,并保持周期性心跳。
Group组 也可称为 Volume 卷。同组内服务器上的文件是完全相同的,同一组内的 Storage Server 之间是对等的,文件上传、删除等操作可以在任意一台 Storage Server 上进行。
服务器 | 跟踪服务器 | 存储服务器 | 代理服务 | 依赖环境插件 | 高可用服务 | VIP |
172.xx.xx.127 | Tracker | Storage | NGINX | libfastcommon+fastdfs-nginx-module | keeplived | VIP地址 |
172.xx.xx.128 | Tracker | Storage | NGINX | libfastcommon+fastdfs-nginx-module | keeplived |
注意:keeplived本文忽略根据自己需要搭建
# yum install make cmake gcc gcc-c++
上传或下载 libfastcommon-master.zip 到/opt/pg/ 目录, 解压
cd /opt/pg/
unzip libfastcommon-master.zip
cd libfastcommon-master
./make.sh
./make.sh install
libfastcommon 默认安装到了
/usr/lib64/libfastcommon.so
/usr/lib64/libfdfsclient.so
因为 FastDFS 主程序设置的 lib 目录是/usr/local/lib, 所以需要创建软链接.
#/usr/lib64/libfdfsclient.so 这个文件暂时没有后期安装就正常,以下正常操作即可
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
上传或下载 FastDFS 源码包(FastDFS_v5.05.tar.gz) 到 /opt/pg/ 目录, 解压
cd /opt/pg/
tar -zxvf FastDFS_v5.05.tar.gz
cd FastDFS
#编译、 安装(编译前要确保已经成功安装了 libfastcommon)
./make.sh
./make.sh install
采用默认安装的方式安装,安装后的相应文件与目录:
服务脚本在:
/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_tracker
配置文件在(样例配置文件)
/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample
命令工具在/usr/bin/目录下的:
fdfs_appender_test
fdfs_appender_test1
...................省略
stop.sh
restart.sh
因为 FastDFS 服务脚本设置的 bin 目录是/usr/local/bin, 但实际命令安装在/usr/bin, 可以进入/user/bin 目录使用以下命令查看 fdfs 的相关命令:
cd /usr/bin/
ls | grep fdfs
因此需要修改 FastDFS 服务脚本中相应的命令路径,也就是把/etc/init.d/fdfs_storaged和/etc/init.d/fdfs_tracker 两个脚本中的/usr/local/bin 修改成/usr/bin:
# vi /etc/init.d/fdfs_trackerd
使用查找替换命令进统一修改:%s+/usr/local/bin+/usr/bin
# vi /etc/init.d/fdfs_storaged
用查找替换命令进统一修改:%s+/usr/local/bin+/usr/bin
注意: 以上操作无论是配置 tracker 还是配置 storage 都是必须的,而 tracker 和 storage 的区别主要是在安装完 fastdfs 之后的配置过程中。
复制 FastDFS 跟踪器样例配置文件,并重命名
cd /etc/fdfs/
cp tracker.conf.sample tracker.conf
编辑跟踪器配置文件
# vi /etc/fdfs/tracker.conf
修改的内容如下:
disabled=false #启用配置文件
port=22122 #tracker 的端口号,一般采用 22122 这个默认端口
base_path=/opt/fastdfs_data/tracker #tracker 的数据文件和日志目录
创建基础数据目录(参考基础目录 base_path 配置)
mkdir -p /opt/fastdfs_data/tracker
启动 Tracker
/etc/init.d/fdfs_trackerd start
初次成功启动,会在/opt/fastdfs_data/tracker 目录下创建 data、 logs 两个目录) 可以通过以下两个方法查看 tracker 是否启动成功:
(1)查看 22122 端口监听情况
netstat -unltp|grep fdfs
(2)通过以下命令查看 tracker 的启动日志,看是否有错误
tail -100f /opt/fastdfs_data/tracker/logs/trackerd.log
# 启动tracker服务
/etc/init.d/fdfs_trackerd start
# 重启动tracker服务
/etc/init.d/fdfs_trackerd restart
# 停止tracker服务
/etc/init.d/fdfs_trackerd stop
# 自启动tracker服务
chkconfig fdfs_trackerd on
设置 FastDFS 跟踪器开机启动
# vi /etc/rc.d/rc.local
添加以下内容
## FastDFS Tracker
/etc/init.d/fdfs_trackerd start
复制 FastDFS 存储器样例配置文件,并重命名
cd /etc/fdfs/
cp storage.conf.sample storage.conf
编辑存储器样例配置文件
以 group1 中的 storage 节点的 storage.conf 为例
# vi /etc/fdfs/storage.conf
修改的内容如下:
disabled=false #启用配置文件
group_name=group1 #组名(第一组为 group1, 第二组为 group2)
port=23000 #storage 的端口号,同一个组的 storage 端口号必须相同
base_path=/opt/fastdfs_data/storage #设置 storage 的日志目录
store_path0=/opt/fastdfs_data/storage #存储路径
store_path_count=1 #存储路径个数,需要和 store_path 个数匹配
tracker_server=172.xx.xx.127:22122 端口 #tracker 服务器的 IP 地址和端口
tracker_server=172.xx.xx.128:22122 端口 #多个 tracker 直接添加多条配置
http.server_port=8888 #设置 http 端口号
创建基础数据目录(参考基础目录 base_path 配置)
# mkdir -p /opt/fastdfs_data/storage
启动 Storage
# /etc/init.d/fdfs_storaged start
(初次成功启动,会在/opt/fastdfs_data/storage 目录下创建数据目录 data 和日志目录 logs)
各节点启动动,使用 tail -f /opt/fastdfs_data/storage/logs/storaged.log 命令监听存储节点日志, 可以看到存储节点链接到跟踪器,并提示哪一个为 leader 跟踪器。 同时也会看到同一组中的其他节点加入进来的日志信息。
查看 23000 端口监听情况
netstat -unltp|grep fdfs
所有 Storage 节点都启动之后,可以在任一 Storage 节点上使用如下命令查看集群信息:
# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
可以看到存储节点状态为 ACTIVE 即可
# 启动storage服务
/etc/init.d//etc/init.d/fdfs_storaged start
# 重启动storage服务
/etc/init.d//etc/init.d/fdfs_storaged restart
# 停止storage服务
/etc/init.d//etc/init.d/fdfs_storaged stop
# 自启动storage服务
chkconfig fdfs_storaged on
设置 FastDFS 存储器开机启动
# vi /etc/rc.d/rc.local
添加:
## FastDFS Storage
/etc/init.d/fdfs_storaged start
修改 Tracker 服务器中的客户端配置文件
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
vi /etc/fdfs/client.conf
base_path=/opt/fastdfs_data/tracker
tracker_server=ip:端口
执行如下文件上传命令
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /tmp/aa.jpg
group1/M00/00/00/rBFQf2JOh7-ACXmJAABQWHZ4dH8343.jpg
返回 :group1/M00/00/**************代表上传成功
显示上传成功的文件:
上传 fastdfs-nginx-module_v1.16.tar.gz 到/usr/local/src, 解压
# cd /usr/local/src/
# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
修改 fastdfs-nginx-module 的 config 配置文件
# vi /usr/local/src/fastdfs-nginx-module/src/config
调整配置文件参数:
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
修改为:
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
上传Nginx的安装包
上传Nginx(nginx-1.13.0.tar.gz)到/usr/local/src 目录
安装编译 Nginx 所需的依赖包
# yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel
编译安装 Nginx(添加 fastdfs-nginx-module 模块)
# cd /usr/local/src/
# tar -zxvf nginx-1.13.0.tar.gz
# cd nginx-1.13.0
# ./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src
# make && make install
复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录, 并修改
# cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
# vi /etc/fdfs/mod_fastdfs.conf
配置文件调整:
第一组 Storage 的 mod_fastdfs.conf 配置如下:
connect_timeout=10
base_path=/tmp
tracker_server=ip:端口
tracker_server= ip:端口
storage_server_port=23000
group_name=group1
url_have_group_name = true
store_path0=/opt/fastdfs_data/storage
group_count = 2
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_data/storage
复制 FastDFS 的部分配置文件到/etc/fdfs 目录
# cd /opt/pg/FastDFS/conf
# cp http.conf mime.types /etc/fdfs/
在/opt/fastdfs_data/storage 文件存储目录下创建软连接,将其链接到实际存放数据的目录
# ln -s /opt/fastdfs_data/storage/data/ /opt/fastdfs_data/storage/data/M00
配置 Nginx
# vi /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8888;
server_name localhost;
location ~/group([0-9])/M00 {
#alias /opt/fastdfs_data/storage/data;
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
启动 Nginx
# /usr/local/nginx/sbin/nginx
ngx_http_fastdfs_set pid=xxx
设置 Nginx 开机启动
# vi /etc/rc.local
加入:
/usr/local/nginx/sbin/nginx
获取获取存储文件 ip:port+文件路径
通过nginx的日志文件,发现报错信息:
[2022-04-06 18:36:27] ERROR - file: ../common/fdfs_global.c, line: 52, the format of filename "group1/M00/00/00/rBFQf2JNbO-AJ3g2AABQWHZ4dH8222.jpg" is invalid
[2022-04-06 18:46:35] ERROR - file: ../common/fdfs_global.c, line: 52, the format of filename "group1/M00/00/00/rBFQf2JNbO-AJ3g2AABQWHZ4dH8222.jpg" is invalid
[2022-04-06 18:46:36] ERROR - file: ../common/fdfs_global.c, line: 52, the format of filename "group1/M00/00/00/rBFQf2JNbO-AJ3g2AABQWHZ4dH8222.jpg" is invalid
[2022-04-06 18:46:36] ERROR - file: ../common/fdfs_global.c, line: 52, the format of filename "group1/M00/00/00/rBFQf2JNbO-AJ3g2AABQWHZ4dH8222.jpg" is invalid
解决办法:
vim /etc/fdfs/mod_fastdfs.conf
原 url_have_group_name=false替换为url_have_group_name = true
最后重启NGINX
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。