Fastdfs 部署与使用
Fastdfs 介绍
Fastdfs 是一款流行的分布式文件系统,具有文件自动同步,防止单点故障等特性,官网地址:https://github.com/happyfish100/fastdfs
部署
采用 Docker 部署,使用官网提供的 Docker 文件稍加修改,截止 2021-11-09 日,在 github 官网项目中可以看见两套部署方案,一套 local 和一套 network,local 就是将一些会提前用到的包下载到本地,防止国内访问 dockerhub 网络不好的情况,但是经过实际测试,这个方案会有问题,于是直接采用 network 方式:https://github.com/happyfish100/fastdfs/tree/master/docker/dockerfile_network
启动 tracker
使用命令 fdfs_trackerd /etc/fdfs/tracker.conf restart
启动 tracker
查看日志文件 cat /root/fastdfs/logs/trackerd.log
显示 [2021-11-09 04:24:55] INFO - FastDFS v6.07, base_path=/home/dfs, ...
表示启动成功
启动 storage
使用命令 fdfs_storaged /etc/fdfs/storage.conf restart
启动 storage
查看日志文件 cat /root/fastdfs/logs/storaged.log
显示 [2021-11-09 04:24:55] INFO - FastDFS v6.07, base_path=/home/dfs, ...
表示启动成功
服务启动后进入容器内部,输入命令 fdfs_monitor /etc/fdfs/storage.conf
,可以查看 storage
是否已注册到 tracker
。
Nat 网络
大多数情况下 storage
是部署在内网当中,当其向 tracker
注册时,tracker
拿到的只是 storage
的内网 ip
,此时需要使用双 ip
模式部署,参考 https://www.jianshu.com/p/b16922f71375#_Toc18054 中的 “Storage server服务器双IP设置”
实际分离部署
官网的 docker 配置是把 tracker
、storage
、nginx
通过 Dockerfile
打包在一起,我将 tracker
和 storage、nginx
分离成了两个包,并且将配置文件也独立出来,按照我的习惯,使用 docker-compose 配合 volumes 映射配置文件进行部署。tracker
地址 fengrui358/fastdfs_tracker
,storage
地址 fengrui358/fastdfs_storage
。配置文件以 github
官网为基础修改,放在 conf
目录下。
tracker docker compose config:
fastdfs_tracker:
image: 'fengrui358/fastdfs_tracker'
container_name: fastdfs_tracker
restart: always
networks:
- "fastdfs_network"
ports:
- "22122:22122" # tracker_server
volumes:
- ./conf:/etc/fdfs # 配置
- ./data:/home/dfs # 数据
storage docker compose config:
fastdfs_storage:
image: 'fengrui358/fastdfs_storage'
container_name: fastdfs_storage
restart: always
networks:
- "fastdfs_network"
ports:
- "23000:23000" # stoage_server
- "8011:80" #nginx web
volumes:
- ./conf:/etc/fdfs # 配置
- ./data:/home/dfs # 数据
- ./conf:/usr/local/nginx/conf # nginx 配置
客户端测试
使用了一个 Dotnet 客户端进行测试,https://github.com/caozhiyuan/FastDFSNetCore
参考:
http://www.ityouknow.com/fastdfs/2017/10/10/cluster-building-fastdfs.html
https://www.jianshu.com/p/b16922f71375#_Toc18054
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义