FastDFS 是一个开源的分布式文件系统,对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS 服务端有两个角色:跟踪器(tracker)和存储节点(storage)。
跟踪器主要做调度工作,在访问上起负载均衡的作用。
存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口,FastDFS 同时对文件的 meta data 进行管理。所谓文件的 meta data 就是文件的相关属性,以键值对(key value pair)方式表示,如:width=1024,其中的 key 为 width,value 为 1024。文件 meta data 是文件属性列表,可以包含多个键值对。
FastDFS 系统结构如下图所示:
1.创建文件夹
mkdir -p /docker/fastdfs/{storage,tracker}
2. 创建 tracker.sh
vim tracker.sh
# 内容
#!/bin/bash
docker rm -f tracker || true
docker run --name tracker \
-v /docker/fastdfs/tracker:/var/fdfs \
-p 22122:22122 \
-d delron/fastdfs tracker
3. 创建 storage.sh
group1是组名 , 即 storage 的组, 想要增加新的 storage 服务器,更换新组名再次运行该命令
storage内部已经集成了nginx,这里的nginx主要提供对FastDFS图片访问的支持
vim storage.sh
# 内容
#!/bin/bash
docker rm -f storage || true
docker run --name storage \
-p 8888:8888 \
-p 23000:23000 \
-v /docker/fastdfs/storage:/var/fdfs \
-e GROUP_NAME=group1 \
-e TRACKER_SERVER=10.3.0.221:22122 \
-d delron/fastdfs storage
4、测试
docker exec -it storage /bin/bash
# 创建文件
[root@3d644ff306bc nginx-1.12.2]# echo 'hello world' > test.txt
# 上传
[root@3d644ff306bc nginx-1.12.2]# fdfs_upload_file /etc/fdfs/client.conf test.txt
group1/M00/00/13/CgMA3WNCOC-AXD8qAAAADFmwwCQ771.txt
5、访问
http://10.3.0.207:8888/group1/M00/00/13/CgMA3WNCOC-AXD8qAAAADFmwwCQ771.txt