一,FastDFS的概述和整体架构
一,FastDfs概述
FastDFS是一个开源的轻量级分布式文件系统,为互联网应用量身定做,简单,灵活,高效,采用C语言开发,由阿里开发并开源
FastDFS的功能:
文件存储
文件同步
文件备份
文件访问(上传,下载,删除)
FastDFS解决了大容量文件存储问题,特别适合以文件为载体的在线服务,如:视频网站,图片网站,文档网站等
FastDFS有较好的冗余备份,线性扩容机制,并适合高可用,高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传下载等服务
二,FastDFS整体架构
FastDFS文件系统由两大部分构成:
1,客户端
客户端指调用服务端的程序,比如java程序连接FastDFS,FastDFS提供了专有的API访问,提供了c,java,php等操作API,用来访问和操作FastDFS文件系统
2,服务端
服务端分两分部分:
跟踪器(tracker)
存储节点(storage)
跟踪器(Tracker):主要做调度工作,在内存中记录集群中的存储节点状态信息,是客户端和存储节点的中间枢钮,因为信息存储在内存中所以Tracker Server的性能非常高,一个较大的集群(比如上百个服务器)只要有3台就足够了
存储节点(Storage):用于存储文件,包括文件和文件属性到可以存储到服务器磁盘上,完成文件管理的所有功能:文件存储,文件同步,提供文件访问
注:跟踪器有点类似于zk中Leader,存储节点有点类似于zk的Fallower
二,FastDFS的安装配置
一,安装前置依赖包
需要三个前置依赖包:
gcc:c语言编译器
libevent: 轻量级的开源高性能事件驱动库
libevent-devel:配合libevennt使用
检查本地是否安装:
#检查gcc是否安装
yum list installed | grep gcc
#检查libevennt是否安装
yum list installed | grep libevent
#检查libevennt-devel是否安装
yum list installed | grep libevent-devel
安装命令:
yum install -y gcc libevent libevent-devel
二,安装FastDFS
安装FastDFS想要两个安装包文件:
fastdfs
libfastcommon:fastdfs公共函数库
fastdfs下载地址:https://github.com/happyfish100/fastdfs/releases
libfastcommon下载地址:https://github.com/happyfish100/libfastcommon/releases
① 上传fastdfs和libfastcommon安装包
命令:rz -y
#也可以使用软件上传
② 解压两个安装包
#解压fastdfs
tar -zxvf fastdfs-6.06.tar.gz
#解压libfastcommon
tar -zxvf libfastcommon-1.0.52.tar.gz
③ 编译安装
#进入libfastcommon-master目录编译安装
./make.sh
./make.sh install
#进入fastdfs-master目录编译安装
./make.sh
./make.sh install
④ cp源文件中的http.conf和mime.types到配置文件中
cp /home/fastdfs-6.06/conf/http.conf /etc/fdfs
cp /home/fastdfs-6.06/conf/mime.types /etc/fdfs
安装位置:
1,启动命令目录:/usr/bin
2,配置文件目录:/etc/fdfs
注:完成这三步就算FastDFS安装成功了,但要运行还需要配置
三,配置FastDFS
配置FastDFS主要配置两个文件:
storage.conf:配置节点
tracker.conf:配置跟踪器
1,配置tracker.conf文件:配置较多,但只需要配置三处
port=22122 #tracker本地服务端口号
base_path=/opt/fastdfs/tracker #tracker日志文件的保存目录,自定义
http.server_port=8181 #默认端口是8888,如果端口占用可以自定义修改
2,配置storage.conf文件:配置三处
port = 23000 #storage本地服务端口好
base_path = /opt/fastdfs/storage #storage #日志文件存放位置
store_path0 = /opt/fastdfs/storage/files #实际存储文件位置
tracker_server = 192.168.68.133:22122 #tracker服务地址,IP需修改为本地IP,端口号必须指定track的端口号默认是22122
注:存储文件目录必须自己先创建,FastDFS不会自动创建,不然会报错
四,启动和关闭FastDFS
1,启动FastDFS
fdfs_trackerd /etc/fdfs/tracker.conf start #启动tracker跟踪器
fdfs_storaged /etc/fdfs/storage.conf start #启动storager存储节点
2,查看进程是否启动成功
ps -ef |grep fdfs
3,关闭FastDFS
fdfs_trackerd /etc/fdfs/tracker.conf stop #关闭tracker跟踪器
fdfs_storaged /etc/fdfs/storage.conf stop #关闭storager存储节点
插述:初次启动成功后,它会在指定的store_path0目录中创建一个data目录,这data里面有255目录,这些目录的子目录也是255个目录(总共65025个目录),他们分别用来存储文件
三,FastDFS安装Nginx拓展模块并配置HTTP访问
在文件上传的时候,上传成功FastDFS提供了URL访问,提供URL路径我们可以直接请求文件,但实际访问时是不行的,FastDFS只能安装了Nginx拓展模块才能进行正常访问
一,前期准备
① FastDFS使用Nginx拓展模块需要提前先安装好Nginx,之前写过Nginx安装
Nginx安装博客地址:http://wql.luoqin.ltd/2021/08/20/nginx%e6%a6%82%e5%bf%b5%e7%90%86%e8%ae%ba%e7%af%87%e4%b8%80/
② 下载FastDFS的Nginx拓展模块(fastdfs-nginx-module)并上传到Linux
下载地址:https://github.com/happyfish100/fastdfs-nginx- module/releases
上传:
rz -y
#其他软件上传也可以
二,安装配置fastdfs-nginx-module模块
① 解压fastdfs-nginx-module-1.21.tar.gz包
tar -zxvf fastdfs-nginx-module-1.21.tar.gz
② 配置./fastdfs-nginx-module-1.21/src下的mod_fastdfs.conf文件
#修改四处即可
base_path=/opt/fastdfs/nginx_mod #日志文件位置自定义,必须提前创建
tracker_server=192.168.68.133:22122 #指定本地tracker的地址(IP:Port)
url_have_group_name = ture #URL是否包含组名,ture开启
store_path0=/opt/fastdfs/storage/files #storage存储节点的存放路径
③ 拷贝mod_fastdfs.conf文件到fastdfs的配置文件目录
cp /home/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs
三,配置Nginx
① Nginx添加fastdfs-nginx-module拓展模块
#进入nginx源码目录(不是安装目录),--add-module=添加fastdfs-nginx-module模块安装后的src目录位置
./configure --add-module=/home/fastdfs-nginx-module-1.21/src
② 编译源文件(竟然nginx源文件目录)
make
③ 将sbin目录的nginx进行备份
④ 拷贝make编译后的objs下的nginx文件到/usr/local/nginx/sbin目录中
#/home/nginx-1.18.0/objs/nginx是我安装的源码目录
cp /home/nginx-1.18.0/objs/nginx /usr/local/nginx/sbin
⑤ 对nginx进行更新(进入源码目录才能更新)
⑥ 配置nginx.conf文件
server {
listen 80;#监听的端口号
server_name 192.168.68.133;#填写本地主机名
location ~/group[1-9]/M0[0-9]{
ngx_fastdfs_module;
}
}
四,测试是否成功
① 启动tracker和storage
fdfs_trackerd /etc/fdfs/tracker.conf start
fdfs_storaged /etc/fdfs/storage.conf start
② 启动nginx
/usr/local/nginx/sbin/nginx
注:必须先启动tracker和storage再启动nginx,不然会包ngx_http_fastdfs_set pid=8543错误
③ 创建一个文件并上传
#创建文件
echo Hi,FastDFS HTTP Call on >/home/fdfs_http.txt
#上传文件
fdfs_test /etc/fdfs/client.conf upload /home/fdfs_http.txt
④ 通过url访问
五,FastDFS的Nginx拓展模块的运行流程
运行流程:
浏览器访问上传文件URL(例:http://192.168.68.133/group1/M00/00/00/wKhEhWFoW0GAWfIaAAAAGIwKiWc873.txt )
Nginx代理请求,并调用fastdfs-nginx-module模块
fastdfs-nginx-module模块将文件地址发送给Tracker跟踪器
Storage寻址文件,并返回文件流
Nginx将文件流返回给浏览器
四,FastDFS本地测试上传下载删除
这种本地测试上传下载基本不会用到,一般都是操作API的方式
一,配置本地测试
使用FastDFS本地进行测试,需要修改client.conf配置文件
#client日志文件存放位置
base_path = /opt/fdfs/client
#tracker跟踪器地址
tracker_server = 192.168.68.133:22122
测试上传,下载,删除命令:fdfs_test client配置文件地址 参数 文件地址
参数:
upload:上传文件
download:下载文件
delete:删除文件
setmeta:设置文件属性
getmeta:获取文件属性
二,文件上传下载删除
一,文件上传
① 创建一个文件
#创建一个文本文件
echo FastDFS Holle World! > fdfs_test.txt
② 上传文件:fdfs_test client配置文件 upload 文件地址
#上传fdfs_test
fdfs_test /etc/fdfs/client.conf upload /home/fdfs_test.txt
④ 上传成功返回信息
group_name=group1, ip_addr=192.168.68.133, port=23000 #group为分区,因为只有一个磁盘只设置了一个分区就是group1
storage_upload_by_filename
#remote_filename为上传后的地址 M00表示第几个磁盘(默认只有一个磁盘) 后面就是上传后的文件地址路径
group_name=group1, remote_filename=M00/00/00/wKhEhWFn1oGAY2PaAAAAFRy78CA444.txt
source ip address: 192.168.68.133
file timestamp=2021-10-14 00:04:33
file size=21
file crc32=482078752
#url访问地址,需要配置nginx才能访问
example file url: http://192.168.68.133/group1/M00/00/00/wKhEhWFn1oGAY2PaAAAAFRy78CA444.txt
storage_upload_slave_by_filename
#备份文件地址(使用的是默认备份),M00磁盘,后面就是备份路径
group_name=group1, remote_filename=M00/00/00/wKhEhWFn1oGAY2PaAAAAFRy78CA444_big.txt
source ip address: 192.168.68.133
file timestamp=2021-10-14 00:04:33
file size=21
file crc32=482078752
#备份文件url访问地址,需要配置nginx才能访问
example file url: http://192.168.68.133/group1/M00/00/00/wKhEhWFn1oGAY2PaAAAAFRy78CA444_big.txt
二,上传文件下载和删除
下载文件:fdfs_test <config_file> download <group_name> <remote_filename
#group和remote_filename在上传成功后的返回信息中可以找到
fdfs_test /etc/fdfs/client.conf download group1 M00/00/00/wKhEhWFn1oGAY2PaAAAAFRy78CA444.txt
删除文件:fdfs_test <config_file> delete <group_name> <remote_filename>
fdfs_test /etc/fdfs/client.conf delete group1 M00/00/00/wKhEhWFn1oGAY2PaAAAAFRy78CA444.txt
如果有备份文件还需要手动将备份删除:
fdfs_test /etc/fdfs/client.conf delete group1 M00/00/00/wKhEhWFn1oGAY2PaAAAAFRy78CA444_big.txt
Comments | NOTHING
Warning: Undefined variable $return_smiles in /www/wwwroot/wql_luoqin_ltd/wp-content/themes/Sakura/functions.php on line 1109