fastDfs:
(1)fastDfs是什么,可以做什么?
fastDfs 是一个开源的分布式文件系统,存储管理文件。
(2).组成+工作?
fastDfs 有两个角色,tracker(跟踪器)+storage(存储节点)。
tracker说白了就是负责调度管理storage,就类似于springcloud里面的网关差不多,负责转发。storage就是一个个存储节点,值得注意得是storage里面最小单单元group,相同group存储的内容一样。
工作流白话理解:在启动storage节点时候会只要配置了tracker服务器的地址tracker_server,节点就会通知跟踪器我要加入你,tracker就会在本地storage_servers_new.dat文件记录这个几点基础信息(组名称+ip等)。客户端上传,下载等操作都和tracker先进行通信,tracker给客户端返回storage节点的ip+端口。有点类似nacos注册。
实战.window10 + docker Desktop + FastDfs 部署本地测试环境。
其实官方并不推荐在window下面部署FastDfs,有经济允许的可以买台云服务器搞搞,这里只是个特例,瞎搞,linux部署跳过。分享下不能做为上线生产环境。
(1).准备查看docker Desktop Ip地址。
查看:C:\Windows\System32\drivers\etc\hosts
(2).编写docker-compose.yml
version: '2'
networks:
fastdfs-net:
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.1.0/16
services:
fastdfs-tracker:
hostname: fastdfs-tracker
container_name: fastdfs-tracker
image: season/fastdfs:1.2
command: tracker
ports:
- 22122:22122
networks:
fastdfs-net:
ipv4_address: 192.168.1.110
volumes:
- ./tracker_dat a:/fastdfs/tracker/data
fastdfs-storage:
hostname: fastdfs-storage
container_name: fastdfs-storage
image: season/fastdfs:1.2
networks:
fastdfs-net:
ipv4_address: 192.168.1.140 #这里必须填写查看docker ip tracker 会记录(不填写使用docker自动分配的默认是docker内部ip 172.1.0.4 那么客户端获取tracker时候获取到的这个ip就是内容没办法连接storage)
ports:
- 23000:23000
volumes:
- ./storage_data:/fastdfs/storage/data
- ./store_path:/fastdfs/store_path
# - ./storage.conf:/fdfs_conf/storage.conf
environment:
- TRACKER_SERVER= fastdfs-tracker:22122
command: storage
depends_on:
- fastdfs-tracker
fastdfs-nginx:
hostname: fastdfs-nginx
container_name: fastdfs-nginx
image: season/fastdfs:1.2
ports:
- 7300:7300
networks:
fastdfs-net:
ipv4_address: 192.168.1.120
command: nginx
volumes:
- ./nginx.conf:/etc/nginx/conf/nginx.conf
- ./store_path:/fastdfs/store_path
environment:
- TRACKER_SERVER= fastdfs-tracker:22122
简单说明:
1.使用docker network bridge ,原因Docker window下不支持host模式。使用brgdge模式还可以使用服务名称来做为ip地址链接。
2.使用season/fastdfs:1.2 镜像。只英文推荐最多,但是里面实在版本太老,后期可以自己制作一个进行,但是可以参考里面的实现。
3.想真正了解容器运行,或者想知道为什么这样配置?需要进到容器里面docker exit –it xxx /bin/sh 查看一个运行脚本
再简单解释下,其实就是做根据command命令选择运行那个容器配置。fdfs_conf下就是fastdfs配置文件,在启动时候会读到array里面,再重新+配置写到etc目录下,再使用etc目录下的配置启动容器,真正配置在/etc/fdfs下别搞错。所以如果要自己在外部配置conf,可以挂载fdsf_conf目录的文件。
(4).启动 docker-compose up
(5).java 客户端测试。
注意java客户端tracker ip
开始空的。
Ok.