1、什么是分布式文件系统
分布式文件系统是指将文件系统管理的物理资源存储在不同的网络节点上。这里说的物理资源可以是文件本身,也可以将文件压缩分割后的文件块。
优点:便于服务器扩容、数据备份,并起到了负载均衡、高可用的作用。
2、 HDFS和FastDFS
(1)HDFS
主要用于并行计算时分布式文件存储,采用分块存储
(2)FastDFS
主要用于大型网站文件存储,未采用分块存储,整体上FastDFS上传、下载、删除文件的速度比HDFS快很多。
(超大文件适合用HDFS,其他建议FastDFS)
3、Docker部署FastDFS
(1)主机
192.168.137.31 tracker1,storage1
192.168.137.32 tracker2,storage2
192.168.137.33 tracker3,storage3
(2)拉取镜像
docker pull gzlj2018/fastdfs:5.11
(3)运行tracker
1)创建文件夹
mkdir -p /docker/fastdfs/tracker
# 把挂载目录添加到selinux白名单
chcon -R /docker
2)运行
docker run -d --name tracker --net=host \-v /docker/fastdfs/tracker:/export/fastdfs/tracker \-e TRACKER_BASE_PATH=/export/fastdfs/tracker \-e TRACKER_PORT=22122 \gzlj2018/fastdfs:5.11 \sh /usr/local/src/tracker.sh
(4)运行storage
1)创建文件夹
mkdir -p /docker/fastdfs/storage
2)运行
docker run -d --name storage --net=host \-v /docker/fastdfs/storage:/export/fastdfs/storage \-e STORAGE_PORT=23000 \-e STORAGE_BASE_PATH=/export/fastdfs/storage \-e STORAGE_PATH0=/export/fastdfs/storage \-e TRACKER_SERVER=192.168.137.31:22122,192.168.137.32:22122,192.168.137.33:22122 \-e GROUP_COUNT=1 \-e HTTP_SERVER_PORT=8088 \-e GROUP_NAME=group1 \gzlj2018/fastdfs:5.11 \sh /usr/local/src/storage.sh
3)修改容器nginx的配置,解决删除图片后缓存问题
docker exec -it storage bashcd /usr/local/nginx/confvi nginx.conf
修改内容:
location ~/group[1-9]/M00 {root /export/fastdfs/storage/data;ngx_fastdfs_module;add_header Cache-Control no-store; # 增加禁止缓存}
退出容器,重启storage
(5)验证
1)修改client配置
docker exec -it tracker bashvi /etc/fdfs/client.conf
修改内容:
# 修改base_pathbase_path=/export/fastdfs/tracker/logs# 修改tracker_servertracker_server=192.168.137.31:22122tracker_server=192.168.137.32:22122tracker_server=192.168.137.33:22122
2)上传文件
# 在容器内运行/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /etc/hosts
运行后返回文件路径
比如:group1/M00/00/00/wKiJIGAwyWKAL9uJAAAAnrLoM8Y1667121
3)浏览器访问
192.168.137.31:8088/group1/M00/00/00/wKiJIGAwyWKAL9uJAAAAnrLoM8Y1667121