FastDFS分布式文件系统单节点搭建配置(图文详情)

文章目录

FastDFS分布式文件系统单节点搭建配置(图文详情)

一、FastDFS简介

  • FastDFS 是用 c 语言编写的一款开源的分布式文件系统。FastDFS 为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
  • FastDFS 架构包括 Tracker server 和 Storage server。客户端请求 Tracker server 进行文件上传、下载,通过 Tracker server 调度最终由 Storage server 完成文件上传和下载。
  • Tracker server 作用是负载均衡和调度,通过 Tracker server 在文件上传时可以根据一些策略找到 Storage server 提供文件上传服务。可以将 tracker 称为追踪服务器或调度服务器。
  • Storage server 作用是文件存储,客户端上传的文件最终存储在 Storage 服务器上,Storageserver 没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将storage称为存储服务器。
    在这里插入图片描述
    服务端两个角色:
  • Tracker:管理集群,tracker 也可以实现集群。每个 tracker 节点地位平等。收集 Storage 集群的状态。
  • Storage:实际保存文件 Storage 分为多个组,每个组之间保存的文件是不同的。每个组内部可以有多个成员,组成员内部保存的内容是一样的,组成员的地位是一致的,没有主从的概念。

二、FastDFS文件上传下载流程

1、文件上传流程

在这里插入图片描述

  • 客户端上传文件后存储服务器将文件 ID 返回给客户端,此文件 ID 用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。

  • 组名:文件上传后所在的 storage 组名称,在文件上传成功后有 storage 服务器返回,需要客户端自行保存。

  • 虚拟磁盘路径:storage 配置的虚拟路径,与磁盘选项 store_path*对应。如果配置了store_path0 则是 M00,如果配置了 store_path1 则是 M01,以此类推。

  • 数据两级目录:storage 服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。

  • 文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器 IP 地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

2、文件下载流程

在这里插入图片描述

三、FastDFS搭建资源准备

1、服务器

#tracker跟踪节点
fastDFS-tracker-121     192.168.44.121

#storage存储节点
fastDFS-storage-122    192.168.44.122

2、软件包

#创建文件夹
mkdir -p /opt/module /opt/software

上传软件包到/opt/software下

资源链接:
链接:https://pan.baidu.com/s/1lU1IlaGC-76mxv5P5qxwNg 
提取码:42ps 

在这里插入图片描述

四、公共模块安装(tracker和storage同时执行)

1、安装依赖包

#编译依赖包
yum install -y make cmake gcc gcc-c++

#nginx需要的依赖
yum instll -y pcre pcre-devel zlib zlib-devel

#其它
yum install -y unzip zip telnet

#整合命令
yum install -y make cmake gcc gcc-c++ pcre pcre-devel zlib zlib-devel unzip zip telnet

2、安装libfastcommon

1):解压libfastcommon-master.zip到/opt/module下

#进入/opt/software目录
cd /opt/software

# 解压到指定位置
unzip libfastcommon-master.zip -d /opt/module/

#切换目录并查看
 cd /opt/module && ll

在这里插入图片描述

2):编译安装

#进入libfastcommon-master目录
cd libfastcommon-master/

#编译
./make.sh

#安装
./make.sh install

在这里插入图片描述
注意安装的路径:libfastcommon默认安装到了/usr/lib64/这个位置。

3):建立软链接

FastDFS主程序设置的目录为/usr/local/lib/,所以我们需要创建/usr/lib64/下的一些核心执行程序的软连接文件

#创建目录
mkdir -p /usr/local/lib/

#创建软链接
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 5.05(tracker和storage同时执行)

1、 解压FastDFS_v5.05.tar.gz到/opt/module下

#切换目录
cd /opt/software/

#解压到/opt/module
tar -zxvf FastDFS_v5.05.tar.gz -C /opt/module/

#切换/opt/module目录
cd /opt/module && ll

在这里插入图片描述

2、编译安装

#进入FastDFS目录
cd FastDFS/

#编译
./make.sh

#安装
./make.sh install

在这里插入图片描述

3、默认安装方式脚本文件说明

1):服务脚本

#路径
/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_trackerd
#查看服务脚本
cd /etc/init.d/ && ls |grep fdfs

在这里插入图片描述

2):配置文件路径

#路径
/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample
#查看
cd /etc/fdfs/ && ll

在这里插入图片描述

3):命令行工具

#路径
/usr/bin/
#查看相关命令
cd /usr/bin/ && ls | grep fdfs

在这里插入图片描述

4、修改FastDFS配置文件中的路径

#编辑fdfs_storaged
vim /etc/init.d/fdfs_storaged
#进行全局替换命令
%s+/usr/local/bin+/usr/bin

#编辑fdfs_trackerd
vim /etc/init.d/fdfs_trackerd
进行全局替换命令
%s+/usr/local/bin+/usr/bin

备注:FastDFS服务脚本设置的bin目录为/usr/local/bin/下,但是实际安装在了/usr/bin/下面。

5、 配置跟踪器(tracker节点 192.168.44.121

1):拷贝 /etc/fdfs下tracker.conf.samp 为tracker.conf并修改

#创建存储目录
mkdir -p  /opt/module/FastDFS/repo/tracker
#拷贝 /etc/fdfs下tracker.conf.samp 为tracker.conf
cd /etc/fdfs/
cp tracker.conf.sample tracker.conf

在这里插入图片描述

#编辑
vim /etc/fdfs/tracker.conf
#修改内容
base_path=/opt/module/FastDFS/repo/tracker

在这里插入图片描述

2):tracker.conf参数分析

tracker.conf 配置文件分析:

#配置tracker.conf这个配置文件是否生效,false是生效,true是屏蔽。
disabled=false
 
#程序的监听地址,如果不设定则监听所有地址
bind_addr=
 
#tracker监听的端口
port=22122
 
#链接超时时间(单位:s)
connect_timeout=30
 
#tracker在通过网络发送接收数据的超时时间
network_timeout=60
 
#数据和日志的存放地点
base_path=/opt/xxx
 
#服务所支持的最大链接数
max_connections=256
 
#工作线程数一般为cpu个数
work_threads=4
 
#在存储文件时选择group的策略,0:轮训策略 1:指定某一个组 2:负载均衡,选择空闲空间最大的group
store_lookup=2
 
#如果上面的store_lookup选择了1,则这里需要指定一个group
#store_group=group2
 
#在group中的哪台storage做主storage,当一个文件上传到主storage后,就由这台机器同步文件到group内的其他storage上,0:轮训策略 1:根据ip地址排序,第一个 2:根据优先级排序,第一个
store_server=0
 
#选择那个storage作为主下载服务器,0:轮训策略 1:主上传storage作为主下载服务器
download_server=0
 
#选择文件上传到storage中的哪个(目录/挂载点),storage可以有多个存放文件的base path 0:轮训策略 2:负载均衡,选择空闲空间最大的
store_path=0
 
#系统预留空间,当一个group中的任何storage的剩余空间小于定义的值,整个group就不能上传文件了
reserved_storage_space = 4GB
 
#日志信息级别
log_level=info
 
#进程以那个用户/用户组运行,不指定默认是当前用户
run_by_group=
run_by_user=
 
#允许那些机器连接tracker默认是所有机器
allow_hosts=*
 
#设置日志信息刷新到disk的频率,默认10s
sync_log_buff_interval = 10
 
#检测storage服务器的间隔时间,storage定期主动向tracker发送心跳,如果在指定的时间没收到信号,tracker人为storage故障,默认120s
check_active_interval = 120
 
#线程栈的大小,最小64K
thread_stack_size = 64KB
 
#storage的ip改变后服务端是否自动调整,storage进程重启时才自动调整
storage_ip_changed_auto_adjust = true
 
#storage之间同步文件的最大延迟,默认1天
storage_sync_file_max_delay = 86400
 
#同步一个文件所花费的最大时间
storage_sync_file_max_time = 300
 
#是否用一个trunk文件存储多个小文件
use_trunk_file = false
 
#最小的solt大小,应该小于4KB,默认256bytes
slot_min_size = 256
 
#最大的solt大小,如果上传的文件小于默认值,则上传文件被放入trunk文件中
slot_max_size = 16MB
 
#trunk文件的默认大小,应该大于4M
trunk_file_size = 64MB
 
#http服务是否生效,默认不生效
http.disabled=false
 
#http服务端口
http.server_port=8888
 
#检测storage上http服务的时间间隔,<=0表示不检测
http.check_alive_interval=30
 
#检测storage上http服务时所用请求的类型,tcp只检测是否可以连接,http必须返回200
http.check_alive_type=tcp
 
#通过url检测storage http服务状态
http.check_alive_uri=/status.html
 
#是否需要从文件扩展名中查找内容类型
http.need_find_content_type=true

3):启动跟踪器(192.168.44.121)

#查看自己创建的目录
cd /opt/module/FastDFS/repo/tracker/ && ll
#启停tracker
/etc/init.d/fdfs_trackerd start
/etc/init.d/fdfs_trackerd stop
#查看进程
ps -ef | grep fdfs

在这里插入图片描述

4):设置跟踪器(192.168.44.121)开机启动

#编辑/etc/rc.d/rc.local加入如下配置 /etc/init.d/fdfs_trackerd start
vim /etc/rc.d/rc.local

在这里插入图片描述

6、配置FastDFS存储(storage节点 192.168.44.122

1):拷贝/etc/fdfs下storage.conf.sample 为storage.conf并修改。

#创建存储目录
mkdir -p /opt/module/FastDFS/repo/storage
#拷贝
cd /etc/fdfs/
cp storage.conf.sample storage.conf

在这里插入图片描述

#修改storage.conf文件
vim /etc/fdfs/storage.conf

#修改内容:
base_path=/opt/module/FastDFS/repo/storage
store_path0=/opt/module/FastDFS/repo/storage
tracker_server=192.168.44.121:22122
http.server_port=8888

2):storage.conf 参数分析

#同tracker.conf
disabled=false
 
#这个storage服务器属于那个group
group_name=group1
 
#同tracker.conf
bind_addr=
 
#连接其他服务器时是否绑定地址,bind_addr配置时本参数才有效
client_bind=true
 
#同tracker.conf
port=23000
connect_timeout=30
network_timeout=60
 
#主动向tracker发送心跳检测的时间间隔
heart_beat_interval=30
 
#主动向tracker发送磁盘使用率的时间间隔
stat_report_interval=60
 
#同tracker.conf
base_path=/opt/fdfs
max_connections=256
 
#接收/发送数据的buff大小,必须大于8KB
buff_size = 256KB
 
#同tracker.conf
work_threads=4
 
#磁盘IO是否读写分离
disk_rw_separated = true
 
#是否直接读写文件,默认关闭
disk_rw_direct = false
 
#混合读写时的读写线程数
disk_reader_threads = 1
disk_writer_threads = 1
 
#同步文件时如果binlog没有要同步的文件,则延迟多少毫秒后重新读取,0表示不延迟
sync_wait_msec=50
 
#同步完一个文件后间隔多少毫秒同步下一个文件,0表示不休息直接同步
sync_interval=0
 
#表示这段时间内同步文件
sync_start_time=00:00
sync_end_time=23:59
 
#同步完多少文件后写mark标记
write_mark_file_freq=500
 
#storage在存储文件时支持多路径,默认只设置一个
store_path_count=1
 
#配置多个store_path路径,从0开始,如果store_path0不存在,则base_path必须存在
store_path0=/opt/xxx
#store_path1=/opt/xxx
 
#subdir_count  * subdir_count个目录会在store_path下创建,采用两级存储
subdir_count_per_path=256
 
#设置tracker_server
tracker_server=x.x.x.x:22122
 
#同tracker.conf
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
 
#文件在数据目录下的存放策略,0:轮训 1:随机
file_distribute_path_mode=0
 
#当问及是轮训存放时,一个目录下可存放的文件数目
file_distribute_rotate_count=100
 
#写入多少字节后就开始同步,0表示不同步
fsync_after_written_bytes=0
 
#刷新日志信息到disk的间隔
sync_log_buff_interval=10
 
#同步storage的状态信息到disk的间隔
sync_stat_file_interval=300
 
#线程栈大小
thread_stack_size=512KB
 
#设置文件上传服务器的优先级,值越小越高
upload_priority=10
 
#是否检测文件重复存在,1:检测 0:不检测
check_file_duplicate=0
 
#当check_file_duplicate设置为1时,次值必须设置
key_namespace=FastDFS
 
#与FastDHT建立连接的方式 0:短连接 1:长连接
keep_alive=0
 
#同tracker.conf
http.disabled=false
http.domain_name=
http.server_port=8888
http.trunk_size=256KB
http.need_find_content_type=true

3):启动存储(192.168.44.122)、tracker必须先启动

#查看存储节点
cd /opt/module/FastDFS/repo/storage/ && ll
#启停storage
/etc/init.d/fdfs_storaged start
/etc/init.d/fdfs_storaged stop
#查看进程
ps -ef | grep fdfs

在这里插入图片描述

4):设置storage(192.168.44.122)开机自启

#编辑/etc/rc.d/rc.local加入如下配置/etc/init.d/fdfs_storaged start
vim /etc/rc.d/rc.local

在这里插入图片描述

7、测试文件上传、编辑(tracker节点 192.168.44.121)

1):拷贝/etc/fdfs/下client.conf.sample为client.conf并修改

#拷贝
cd /etc/fdfs/
cp client.conf.sample client.conf

在这里插入图片描述

#编辑client.conf文件
vim /etc/fdfs/client.conf
修改内容:
base_path=/opt/module/FastDFS/repo/tracker
tracker_server=192.168.44.121:22122

在这里插入图片描述

2):测试上传

#查看相关命令工具
cd /usr/bin/ && ls | grep fdfs

#上传命令
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /opt/software/libfastcommon-master.zip 

#查看存储目录
cd /opt/module/FastDFS/repo/storage/data/00/00 && ls

上传之前:
在这里插入图片描述
上传之后:
在这里插入图片描述

六、FastDFS与Nginx整合(storage节点 192.168.44.122)

1、安装fastdfs-nginx-module

#查看源码包
cd /opt/software/ && ll

在这里插入图片描述

#解压到指定目录
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz -C /opt/module/
#切换目录
cd /opt/module/fastdfs-nginx-module/src/
#编辑
vim /opt/module/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/local/fastcommon/"

在这里插入图片描述
在这里插入图片描述

2、安装Nginx

1):解压nginx-1.6.2.tar.gz到/opt/module下

#查看源码包并解压
cd /opt/software/
tar -zxvf nginx-1.6.2.tar.gz -C /opt/module/
#切换目录
cd /opt/module/nginx-1.6.2/
#加入模块
./configure --add-module=/opt/module/fastdfs-nginx-module/src/
#重新编译安装
make && make install

2):复制/opt/module/fastdfs-nginx-module/src/下mod_fastdfs.conf文件到/etc/fdfs下并修改

#拷贝文件
cp /opt/module/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
#编辑
vim /etc/fdfs/mod_fastdfs.conf
#修改内容
connect_timeout=10
tracker_server=192.168.44.121:22122
url_have_group_name = true
store_path0=/opt/module/FastDFS/repo/storage

3):拷贝FastDFS配置文件

cp /opt/module/FastDFS/conf/http.conf /etc/fdfs/
cp /opt/module/FastDFS/conf/mime.types /etc/fdfs/

4):创建软链接

#在/opt/module/FastDFS/repo/storage文件存储目录下创建软连接,将其链接到实际存放数据的目录。
ln -s /opt/module/FastDFS/repo/storage/data/ /opt/module/FastDFS/repo/storage/data/M00

5):修改Nginx配置文件

#切换目录
cd /usr/local/nginx/conf/ && ll
vim nginx.conf

修改内容:
在这里插入图片描述
修改为:

listen 8888;
server_name localhost;
location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}

注意:nginx里的端口要和FastDFS存储中的storage.conf文件配置一致,(http.server_port=8888)

6):启动nginx服务

#启动
/usr/local/nginx/sbin/nginx
#查看进程
ps -ef|grep nginx

在这里插入图片描述

7):测试浏览器下载

访问:http://192.168.44.122:8888/group1/M00/00/00/wKgselwyMkaAMeNUAAGP6hUWM6I363.zip
在这里插入图片描述

8):相关启停命令

#tracker节点启停
/etc/init.d/fdfs_trackerd start
/etc/init.d/fdfs_trackerd stop

#storage启停
/etc/init.d/fdfs_storaged start
/etc/init.d/fdfs_storaged stop

#nginx启停
/usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx -s stop

#查看服务进程
ps -ef|grep fdfs
ps -ef|grep nginx

9):到此全部配置完成、若有不足之处请多见谅!!

猜你喜欢

转载自blog.csdn.net/weixin_44187730/article/details/85951370