1、FastDFS简介
FastDFS是一个开源的轻量级分布式文件系统,由跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)三个部分组成,主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务
FastDFS运行过程
Client询问Tracker server ,Tracker server通过负载算法 返回一台存储 的Storage server;
Tracker server 返回的数据为该Storage server的IP地址和端口;
Client直接和该Storage server建立连接,进行文件上传,Storage server返回新生成的文件ID,文件上传结束。
2、安装
docker pull season/fastdfs
mkdir -p /opt/docker/data/fastdfs/storage
mkdir -p /opt/docker/data/fastdfs/tracker
mkdir -p /opt/docker/data/fastdfs/store_path
创建trakce容器
docker run -it -d --name tracker -p 22122:22122 -v /opt/docker/data/fastdfs/tracker:/fastdfs/tracker/data --net=host season/fastdfs tracker
创建storage容器
docker run -it -d --name storage -v /opt/docker/data/fastdfs/storage:/fastdfs/storage/data -v /opt/docker/data/fastdfs/store_path:/fastdfs/store_path --net=host -e TRACKER_SERVER:192.168.1.39:22122 season/fastdfs storage
默认配置的ip地址不会生效需要自己重新配
docker cp storage:/fdfs_conf/storage.conf . 拷贝出来
修改storage.conf 找到tracker_server= 修改成自己的ip tracker_server=192.168.1.39:22122
docker cp ./storage.conf storage:/fdfs_conf/ 这个 storage.conf 在本机上先不要删除,后面会用到
docker restart storage
docker exec -it storage bash
fdfs_monitor fdfs_conf/storage.conf 看到下面的配置就成功了
[2019-03-26 07:05:22] DEBUG - base_path=/fastdfs/storage, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0
server_count=1, server_index=0
tracker server is 192.168.1.39:22122
group count: 1
Group 1:
group name = group1
disk total space = 17394 MB
disk free space = 2634 MB
trunk free space = 0 MB
storage server count = 1
active server count = 1
storage server port = 23000
storage HTTP port = 8888
telnet 192.168.1.39 22122 出现下面情况说明可用
[C:\~]$ telnet 192.168.1.39 22122
Connecting to 192.168.1.39:22122...
Connection established.
To escape to local shell, press Ctrl+Alt+].
3、开启一个客户端上传文件
docker run -it --name fdfs_sh --net=host season/fastdfs sh
退出这个容器,这里退出就相当于关闭容器了,后面要cp一个配置文件进去
docker cp storage.conf fdfs_sh:/fdfs_conf/ 这个storage.conf 就是之前配置tracker_server ip的那个
docker start fdfs_sh
docker exec -it fdfs_sh bah
cd fdfs_conf
echo hello world>hello.txt
fdfs_upload_file storage.conf hello.txt
执行后返回 group1/M00/00/00/wKgBJ1yZ1F2AC9xEAAAADFmwwCQ382.txt 这就是正确咯!(#.#)
退出容器返回主机,cd /opt/docker/data/fastdfs/store_path (这个目录在上面配置的)
cd data
cat 00/00/wKgBJ1yZ1F2AC9xEAAAADFmwwCQ382.txt 返回结果的红色部分
[root@vmware39 data]# cat 00/00/wKgBJ1yZ1F2AC9xEAAAADFmwwCQ382.txt
hello world
[root@vmware39 data]# pwd
/opt/docker/data/fastdfs/store_path/data