整理了一整套关于FastDFS相关的资料,关注公众号:程序新视界,回复“011”获得完整版PDF文档。

前言

FastDFS是一个开源的轻量级分布式文件系统,由跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)三个部分组成,主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。

目标

此文用于概述解决FastDFS Tracker Server 与Storage Server访问映射问题

FastDFS Client使用流程

FastDFS向使用者提供基本文件访问接口,比如uploaddownloadappenddelete等,以客户端库的方式提供给用户使用。

客户端使用流程由 Client 连接 Tracker的IP和prot,Tracker接收到Client请求,告诉Client Storage的真实IP和port,Client再去连接实际Storage的IP和port;在TrackerStorge之间,存在通信机制,这一机制,决定了Tracker告诉Client的IP和port。

  • 流程图
FASTDFS内网STORAGE IP 映射问题插图

问题解决

  • 问题一: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


FASTDFS内网STORAGE IP 映射问题插图(1)

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://www.choupangxia.com/2020/07/23/fastdfs-storage-ip-mapping/