目录
- 一、FastDFS是什么?
- 二、工作原理
- 1.FastDFS服务端角色
- 2.工作原理
- 3.工作流程
- 二、使用docker搭建FastDFS文件系统
- 1.下载FastDFS文件系统的docker镜像
- 1.1 查找dockerhub中fastdfs的镜像
- 1.2 拉取选择的镜像
- 1.3 查看docker镜像
- 2.使用docker镜像构建tracker容器
- 3.使用docker镜像构建storage容器
- 4.查看正在运行的镜像
- 5.查看storage容器配置
- 6.配置Nginx
- 7.上传图片验证
- 总结
一、FastDFS是什么?
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:
- 文件存储
- 文件同步
- 文件访问(文件上传、文件下载)等
解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等。
FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
二、工作原理
1.FastDFS服务端角色
- tracker 跟踪器:主要做调度工作,在访问上起负载均衡的作用;其中所有的跟踪器服务都是对等平级的,可以根据服务器的压力的大小随时增加或减少。
- storage 存储节点:完成文件管理的所有功能(主要用于存储文件,存储完成后会返回一个地址给tracker)。
为了可以支持扩容,跟踪器和存储节点都可以由一台或多台服务器构成。如果访问的压力大,可以多增加跟踪器,如果存储量大,可以增加多个存储节点,同时,可以把同一存储节点进行备份(back-up)。
2.工作原理
FastDFS分为Tracker、Storage,其中Storage负责存储文件,Tracker负责存储文件所在地址,主要作用是负载均衡和资源调度。
Tracker、Storage都可以实现集群部署,Tracker的每个节点地位平等,而Storage可以分为多个组,每个组之间保存的文件是不同的,组内部分为多个成员,每个成员保存的内容是一样,组成员地位一致,没有主从概念。
使用FastDFS存储文件优点:可以应对互联网的海量文件存储,一旦文件较多,可以随时横向扩展,且集群的实现也使系统不存在单点故障问题,用户不会因为服务器宕机而无法访问文件资源。
3.工作流程
文件上传:Client会先向Tracker询问存储地址,Tracker查询到存储地址后返回给Client,Client拿着地址直接和对应的Storage通讯,将文件上传至改Storage。
文件下载:同样,Client会向Tracker询问地址,并带上要查询的文件名和组名,Tracker查询后会将地址返回给Client,Client拿着地址和指定Storage通讯并下载文件。
二、使用docker搭建FastDFS文件系统
1.下载FastDFS文件系统的docker镜像
1.1 查找dockerhub中fastdfs的镜像
docker search fastdfs
1.2 拉取选择的镜像
docker pull delron/fastdfs
1.3 查看docker镜像
docker images
2.使用docker镜像构建tracker容器
启动镜像并且将容器挂载到本机的/var/fdfs/tracker下docker run -d --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker
-
-d
:守护进程 -
--name
:命名 -v
:挂载
3.使用docker镜像构建storage容器
启动镜像并且将容器挂载到本机的/var/fdfs/storage下,tracker服务的ip地址,端口默认是22122
docker run -d --network=host --name storage -e TRACKER_SERVER=ip:22122 -v /var/fdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage
4.查看正在运行的镜像
docker ps
此时两个服务都已启动
5.查看storage容器配置
进入storage容器,到storage的配置文件中皮质http访问的端口,配置文件在/etc/fdfs目录下的storage.conf。
docker exec -it storage /bin/bash
vi storage.conf
默认请求端口是8888
6.配置Nginx
在/usr/local/nginx目录下,修改nginx.conf文件
cd /usr/local/nginx/
ll
cd conf/
ls
vi nginx.conf
默认配置如下
修改成
location /group1/M00 {
alias /var/fdfs;
}
到这里文件系统已搭建完成。
7.上传图片验证
将图片放置在/var/fdfs/storage目录下,进入storage容器,进入/var/fdfs目录,运行下面命令:
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf demo.jpeg
执行后会返回图片存储的uri
通过url访问http://ip:8888/group1/M00/00/00/rBCVGGFpH32AO9LmAAA9CQNjvWc43.jpeg
docker搭建单机FastDFS文件存储服务器就到这里啦。