华为云下 Centos7+ docker搭建fastdfs文件系统

关于FastDFS

FastDFS 是以 C 语言开发的一项开源轻量级分布式文件系统,他对文件进行管理,主要功能有:文件存储,文件同步,文件访问(文件上传/下载)等,特别适合以文件为载体的在线服务,如:图片网站,视频网站等。
外话:FastDFS 是阿里余庆大神做的一个个人项目,从2008年研发FastDFS开源至今,在一些互联网创业公司中备受推崇,GitHub开源地址:https://github.com/happyfish100/fastdfs

搜索镜像

docker search fastdfs
  • 显示效果图

安装镜像,一定要安装镜像season/fastdfs:1.2,外网访问配置nginx时用到

docker pull season/fastdfs:1.2

创建容器并挂载目录

在创建容器之前我们先简单说一下 FastDFS,FastDFS 系统有三个角色:

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

创建出所需要的目录

mkdir -p /diskdata/fdfs/tracker/data
mkdir -p /diskdata/fdfs/storage/data
mkdir -p /diskdata/fdfs/storage/path

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

docker run -id --name tracker \
  -p 22122:22122 \
  --restart=always --net host \
  -v /diskdata/fdfs/tracker/data:/fastdfs/tracker/data \
  season/fastdfs:1.2 tracker
  • 参数解释
  • -d:让容器在后台运行
  • -p:指定容器内部使用的网络端口映射到我们使用的主机上
  • --name:指定容器创建的名称
  • -v:容器跟宿主机之间的挂载目录

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

docker run -id --name storage \
--restart=always --net host \
-v /diskdata/fdfs/storage/data:/fastdfs/store_path \
-e TRACKER_SERVER="192.168.3.52:22122" \
season/fastdfs:1.2 storage

client测试

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.conf配置文件

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

修改完之后复制到docker容器

docker cp /diskdata/fdfs/client.conf tracker:/etc/fdfs 

文件上传测试

docker exec -it tracker bash
echo "aaaaa" > aaaa.txt
fdfs_upload_file /etc/fdfs/client.conf aaaa.txt
  • 如果此时报了如下错误:

执行命令

mkdir -p /home/yuqing/fastdfs

验证是否成功

配置Nginx

创建nginx目录

mkdir -p /diskdata/fdfs/nginx/

将storage容器中的nginx配置文件复制出来

docker cp storage:/etc/nginx/conf/nginx.conf /diskdata/fdfs/nginx/

修改nginx中的配置

vi /diskdata/fdfs/nginx/nginx.conf

找到local节点,修改为:

 location / {
    root /fastdfs/store_path/data;
    ngx_fastdfs_module;
 }

执行命令,TRACKER_SERVER指向自己设置的IP地址及端口

docker run -id --name fastdfs_ngin    x \
--restart=always \
-v /diskdata/fdfs/storage/data:/fastdfs/store_path \
-v /diskdata/fdfs/nginx/nginx.conf:/etc/nginx/conf/nginx.conf \
-p 8888:80 \
-e TRACKER_SERVER=192.168.3.52:22122 \
season/fastdfs:1.2 nginx

至此所有操作都已做完,可以通过Nginx外网配置访问文件

posted @ 2021-10-18 22:58  回望初心  阅读(221)  评论(0编辑  收藏  举报