FASTDFS内网STORAGE IP 映射问题
整理了一整套关于FastDFS相关的资料,关注公众号:程序新视界,回复“011”获得完整版PDF文档。
前言
FastDFS
是一个开源的轻量级分布式文件系统,由跟踪服务器(Tracker Server
)、存储服务器(Storage Server
)和客户端(Client
)三个部分组成,主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。
目标
此文用于概述解决FastDFS
Tracker Server
与Storage Server
访问映射问题
FastDFS
Client
使用流程
FastDFS
向使用者提供基本文件访问接口,比如upload
、download
、append
、delete
等,以客户端库的方式提供给用户使用。
客户端使用流程由 Client
连接 Tracker
的IP和prot,Tracker
接收到Client
请求,告诉Client
Storage
的真实IP和port,Client
再去连接实际Storage
的IP和port;在Tracker
和Storge
之间,存在通信机制,这一机制,决定了Tracker
告诉Client
的IP和port。
- 流程图
问题解决
- 问题一:
FastDFS
需要通过代理IP:port或公网地址访问解决方案:(获取storage外网ip的问题)- 第一步:
Client
连接Tracker
的地址配置成代理IP:port或公网地址 - 第二步:在
Storage.conf
配置文件中配置Tracker服务器的IP和port (代理IP:port或公网地址)
- 第一步:
- 问题二:
FastDFS
需通过代理地址访问,由于某些机制原因Storage
无法访问Tracker
的代理地址解决方案:(此方案适用于Client
可通过代理地址访问Storage
)- 在
Client
通过Tracker
获取到Storage
地址后将真实的IP和port 替换成代理的IP和port - 此方案可参考 fastdfs-client-java-storage-ip-mapping,需替换
Client
jar文件和在配置文件中添加fastdfs.storage_server.ip_mapping
配置
- 在
- 问题三:docker安装fastdfs碰到storage的IP地址映射宿主地址问题解决方案:
- 启动时用宿主地址启动:(以下以
192.168.1.100
为宿主IP)docker run -d -e FASTDFS_IPADDR=192.168.1.100 -p 8888:8888 -p 22122:22122 -p 23000:23000 -p 8011:80 --name test-fast fastdfs:V5.11
- 源地址修改为宿主主机的地址:
- 在NAT表转发过程中,数据达到172.17.0.2的22122端口记录的源地址是 172.17.0.1,我们只需要修改iptables的NAT表规则,所有转发到172.12.0.2:22122的数据,源地址修改为宿主主机的地址:192.168.1.100,这样storage注册到tracker server时,tracker server获取到storage的ip地址为 192.168.1.100 而不是网关地址172.17.0.1
iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 22122 -d 172.17.0.2 -j SNAT --to 192.168.1.100
- 启动时用宿主地址启动:(以下以
关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接
本文链接:https://choupangxia.com/2020/07/23/fastdfs-storage-ip-mapping/