当前位置:   article > 正文

【文件存储】FastDFS集群部署

fastdfs集群

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

上传或下载 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_v5.05

上传或下载 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启动脚本文件路径

因此需要修改 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 Tracker

复制 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服务启动关闭命令

# 启动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 Storage

复制 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服务启动关闭命令

# 启动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

fdfs_upload文件上传测试

修改 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/**************代表上传成功

显示上传成功的文件:

各storage存储节点上安装 Nginx

上传 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

通过nginx地址访问测试上传的图片

获取获取存储文件   ip:port+文件路径

Fastdfs配合nginx下载时浏览器400错误解决

通过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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/345622?site
推荐阅读
相关标签
  

闽ICP备14008679号