一, 介绍
FastDFS 是一个开源的轻量级分布式文件系统, 由阿里巴巴余庆大神开发, 底层采用 C 语言, 它对文件进行管理, 功能包括: 文件存储, 文件同步, 文件访问 (文件上传, 文件下载) 等, 解决了大容量存储和负载均衡的问题. 特别适合以文件为载体的在线服务, 如相册网站, 视频网站等等. FastDFS 为互联网量身定制, 充分考虑了冗余备份, 负载均衡, 线性扩容等机制, 并注重高可用, 高性能等指标, 使用 FastDFS 很容易搭建一套高性能的文件服务器集群提供文件上传, 下载等服务.
FastDFS 服务端有两个角色: 跟踪器 (tracker) 和存储节点(storage). 跟踪器主要做调度工作, 在访问上起负载均衡的作用.
存储节点存储文件, 完成文件管理的所有功能: 就是这样的存储, 同步和提供存取接口, FastDFS 同时对文件的 metadata 进行管理. 所谓文件的 meta data 就是文件的相关属性, 以键值对 (key value) 方式表示, 如: width=1024, 其中的 key 为 width,value 为 1024. 文件 metadata 是文件属性列表, 可以包含多个键值对.
跟踪器和存储节点都可以由一台或多台服务器构成. 跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务. 其中跟踪器中的所有服务器都是对等的, 可以根据服务器的压力情况随时增加或减少.
为了支持大容量, 存储节点 (服务器) 采用了分卷 (或分组) 的组织方式. 存储系统由一个或多个卷组成, 卷与卷之间的文件是相互独立的, 所有卷的文件容量累加就是整个存储系统中的文件容量. 一个卷可以由一台或多台存储服务器组成, 一个卷下的存储服务器中的文件都是相同的, 卷中的多台存储服务器起到了冗余备份和负载均衡的作用.
在卷中增加服务器时, 同步已有的文件由系统自动完成, 同步完成后, 系统自动将新增服务器切换到线上提供服务.
当存储空间不足或即将耗尽时, 可以动态添加卷. 只需要增加一台或多台服务器, 并将它们配置为一个新的卷, 这样就扩大了存储系统的容量.
FastDFS 中的文件标识分为两个部分: 卷名和文件名, 二者缺一不可.
二: 安装
使用 docker 安装 FastDFS 十分简单和方便, 随着容器化技术的流行, 使用 docker 来构建也是一个不错的选择.
步骤:
1. 首先在 Docker 中找一下 FastDFS 的镜像,
docker search fastdfs
2. 拉取镜像, 我拉取的是 delron/fastdfs
docker pull delron/fastdfs
3. 拉取成功后构建镜像
- # 构建 tracker 容器, 它的作用是跟踪服务器, 起到调度的作用
- docker run -dti --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs -v /etc/localtime:/etc/localtime delron/fastdfs tracker
构建 storage 容器(存储服务器, 提供容量和备份服务)
docker run -dti --network=host --name storage -e TRACKER_SERVER=ip 地址: 22122 -v /var/fdfs/storage:/var/fdfs -v /etc/localtime:/etc/localtime delron/fastdfs storage
构建成功后进入 storage 容器
docker exec -it storage 容器 ID bash
可以在容器的 / etc/fdfs 目录下的 storage.conf 配置 http 访问端口, 默认为 8888, 可以不改
配置 nginx, 同样进入 storage 容器, 进入 / usr/local/nginx/conf 目录, 修改 nginx.conf, 也可用默认的, 我直接使用 8888
由此 FastDFS 就搭建完成, 使用 Docker 来搭建确实很方便
测试文件上传
将一张测试照片放置在 / var/fdfs/storage 目录下
进入 storage 容器, 进入 / var/fdfs 目录, 执行命令
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.jpg
从上可以看出产生了一个新的 jpg 文件, 访问它只需要加上 ip 地址和端口
http://ip 地址: 端口(默认 8888)/group1/M00/00/00/wKgAA138lqKAGnLRAAIXDnTxZwQ076.jpg
到这里 FastDFS 的搭建和测试正式完成.
来源: http://www.bubuko.com/infodetail-3341497.html