docker安装fastDFS

docker部署fastdfs

一、简介

FastDFS 是以 C 语言开发的一项开源轻量级分布式文件系统,他对文件进行管理,主要功能有:文件存储,文件同步,文件访问(文件上传/下载)等,特别适合以文件为载体的在线服务,如:图片网站,视频网站等

FastDFS 系统有三个角色:

  • 跟踪服务器(Tracker Server):跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳
  • 存储服务器(Storage Server):存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份
  • 客户端(Client):上传下载数据的服务器,也就是我们自己的项目所部署在的服务器

为什么要整合 Nginx?

因为对于 fastdfs 来说,安装后只能在本机访问… 我上传文件肯定是为了能够访问的呀,所以为了提供 web 访问,那么就需要集成 Nginx 了,但是比如就是想自己单独搞 Nginx… 那么肯定就不会选了嘛,season/fastdfs 镜像相对纯净些

二、部署

1.搜索镜像

docker search fastdfs

2.安装镜像

docker pull season/fastdfs:1.2

3.创建出所需要的目录

mkdir -p /usr/local/server/fastdfs/tracker/data
mkdir -p /usr/local/server/fastdfs/storage/data
mkdir -p /usr/local/server/fastdfs/storage/path

4.创建tracker容器(跟踪服务器容器)

docker run -id --name storage --restart=always --net host -v /usr/local/server/fastdfs/data/storage:/fastdfs/store_path -e TRACKER_SERVER="10.211.55.4:22122" season/fastdfs:1.2 storage

5.创建storage容器(存储服务器容器)

docker run -id --name storage --restart=always --net host -v /usr/local/server/fastdfs/data/storage:/fastdfs/store_path -e TRACKER_SERVER="10.211.55.4:22122" season/fastdfs:1.2 storage

6.client测试

两个容器创建完之后,但此时两个容器其实并没有关联起来,我们进入tracker容器,通过client.conf测试一下

docker exec -it tracker bash
cd /etc/fdfs/
ls
cat client.conf

输出的 client.conf 都是默认配置,我们可以找到其中的 track_server 地址:

在这里插入图片描述

尝试执行一下连接:

fdfs_monitor client.conf

后会得到如下内容:

ERROR - file: ../common/connection_pool.c, line: 84, connect to 192.168.209.121:22122 fail, errno: 110, error info: Connection timed out

也就是在没有修改client配置之前,默认 tracker 是去连接 192.168.209.121 地址的,那么接下来就是需要去配置client配置文件了。

7.修改client.conf配置文件

docker exec -it tracker bash 进入 tracker 容器后不能使用 vi vim 命令,所以干脆将 client.conf 配置文件复制出来,在宿主机修改完再粘贴回去。

执行命令:

docker cp trakcer:/etc/fdfs/client.conf /usr/local/server/fastdfs/

我们通过 docker 指令将配置文件复制到 /usr/local/server/fastdfs/ 目录。

执行命令:

cd /usr/local/server/fastdfs/
vi client.conf

我们编辑这个文件,修改 tracker_url 地址(vi client.conf):

在这里插入图片描述

修改后保存,然后将修改后的文件替换回去。指令命令:

docker cp /usr/local/server/fastdfs/client.conf tracker:/etc/fdfs

8.文件上传测试

执行命令:

# 执行命令,进入 tracker 容器中:
docker exec -it tracker bash

# 随便创建一个 txt 文件:
echo "niceyoo" > niceyoo.txt

# 通过 fdfs_upload_file 命令将 niceyoo.txt 文件上传至服务器:
fdfs_upload_file /etc/fdfs/client.conf niceyoo.txt

在这里插入图片描述

因为我们之前挂载了宿主机的目录,我们去 cd /usr/local/server/fastdfs 看一下:

在这里插入图片描述

9.配置Nginx

默认上传的文件是只能在本机访问的,当然这样肯定是不行的,所以我们需要配置一下Nginx 来帮我们实现 Web 访问的效果。

# 创建nginx目录
mkdir -p /usr/local/server/fastdfs/nginx/

# 将storage容器中的nginx配置文件复制出来
docker cp storage:/etc/nginx/conf/nginx.conf /usr/local/server/fastdfs/nginx/

# 修改nginx中的配置
vi /usr/local/server/fastdfs/nginx/nginx.conf

在这里插入图片描述

创建nginx容器

docker run -id --name fastdfs_nginx \
--restart=always \
-v /usr/local/server/fastdfs/data/storage:/fastdfs/store_path \
-v /usr/local/server/fastdfs/nginx/nginx.conf:/etc/nginx/conf/nginx.conf \
-p 8888:80 \
-e TRACKER_SERVER=10.211.55.4:22122 \
season/fastdfs:1.2 nginx

三、测试

我们测试一下之前上传的文件 group1/M00/00/00/CtM3BF84iz2AWE_JAAAACBfWGpM793.txt,执行如下命令:

curl -i http://127.0.0.1:8888/group1/M00/00/00/CtM3BF84iz2AWE_JAAAACBfWGpM793.txt

在这里插入图片描述

通过浏览器访问一下:

在这里插入图片描述

四、注意(腾讯云服务器部署)

1.关闭防火墙
2.开放23000,22122安全组端口
3.开放nginx映射端口,我这里是8888

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文本格式不能很好显示,请见谅(附件里有比较齐整的excel表格统计) 大小类型 传输类型 api方法 文件大小 花费时间 速率byte/ms 速率mb/s 缓存数组 次数 备注 大文件 下载 download_file(group_name, remote_filename, localFile) 1073741824(约1G) 28343ms 37883 36.12804413 无 1 下载 download_file(group_name, remote_filename , downloadStream) 1073741824(约1G) 29195ms 36778 35.07423401 0 1 fastDFS的DownloadStream,FileOutputStream 下载 download_file(group_name, remote_filename , downloadStream) 1073741824(约1G) 24352ms 44092 42.04940796 2K 1 fastDFS的DowloadStream,BufferedOutputStream 下载 download_file(group_name, remote_filename , DownloadCallback) 1073741824(约1G) 24831ms 43241 41.23783112 2K 1 实现DownloadCallback,BufferedOutputStream 下载 download_file(group_name, remote_filename , DownloadCallback) 1073741824(约1G) 25922ms 41422 39.50309753 8K 1 实现DownloadCallback,BufferedOutputStream 普通文件 下载 download_file(group_name, remote_filename, localFile) 59113472(约56M) 382ms 154747 147.5782394 无 1 下载 download_file(group_name, remote_filename , downloadStream) 59113472(约57M) 369ms 160199 152.7776718 0 1 fastDFS的DownloadStream,FileOutputStream 下载 download_file(group_name, remote_filename , downloadStream) 59113472(约58M) 499ms 118702 113.2030487 2K 1 fastDFS的DowloadStream,BufferedOutputStream 下载 download_file(group_name, remote_filename , DownloadCallback) 59113472(约59M) 592ms 99853 95.22724152 2K 1 实现DownloadCallback,BufferedOutputStream 下载建议:100M内数据使用fastDFS提供的DownloadStream;大于1G的数据,使用BufferedOutputStream和DowloadStream

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值