基于Docker搭建FastDFS

什么是FastDFS

    FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
    之前的话在linux系统中搭建过fastdfs,沒有在docker中试过,想来过程上的话也大差不差。直接步入正题。

1、搜索镜像

在拉取镜像前,防止一些意外,可以在docker hub中搜索查看一下,有哪些版本的fastdfs,反正尽量选择Stars最多的应该没问题的。
在这里插入图片描述

或者远程连接服务器后,执行命令:

docker search fastdfs

在这里插入图片描述
选择适合自己的版本就行。

2、安装镜像

执行命令:

docker pull season/fastdfs:1.2

在这里插入图片描述

3、创建容器并挂载目录

FastDFS 系统有三个角色:

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

先把需要的一些目录创建出来(数据目录、数据存储目录等),执行命令:

mkdir -p /usr/local/server/fastdfs/tracker/data
mkdir -p /usr/local/server/fastdfs/storage/data
mkdir -p /usr/local/server/fastdfs/storage/path
3.2、创建tracker容器(跟踪服务器容器)

执行命令:

docker run -id --name tracker \
-p 22122:22122 \
--restart=always --net host \
-v /usr/local/server/fastdfs/tracker/data:/fastdfs/tracker/data \
season/fastdfs:1.2 tracker

补充:

  • -d:让容器在后台运行
  • -p:指定容器内部使用的网络端口映射到我们使用的主机上
  • –name:指定容器创建的名称
  • -v:容器跟宿主机之间的挂载目录
3.3、创建storage容器(存储服务器容器)

执行命令(要修改为自己的ip地址):

docker run -id --name storage \
--restart=always --net host \
-v /usr/local/server/fastdfs/data/storage:/fastdfs/store_path \
-e TRACKER_SERVER="150.158.166.124:22122" \
season/fastdfs:1.2 storage
3.4、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.0.197:22122 fail, errno: 110, error info: Connection timed out

也就是在没有修改client配置之前,默认 tracker 是去连接 192.168.0.197 地址的,那么接下来就是需要去配置client配置文件了。
在这里插入图片描述

3.5、修改client.conf配置文件

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

执行命令:

docker cp tracker:/etc/fdfs/client.conf /usr/local/server/fastdfs/ 
(此处tracker若不识别,建议换成容器id)

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

在这里插入图片描述

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

在这里插入图片描述

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

docker cp /usr/local/server/fastdfs/client.conf tracker:/etc/fdfs
(此处tracker若不识别,建议换成容器id)

到这儿,配置文件修改完了,下面可以上传试一下了。

4、文件上传测试

执行命令,进入 tracker 容器中:

docker exec -it tracker bash

随便创建一个 txt 文件:

echo "This is a test" > de.txt

然后通过 fdfs_upload_file 命令将 de.txt 文件上传至服务器:

fdfs_upload_file /etc/fdfs/client.conf de.txt

如果此时报了如下错误:

在这里插入图片描述

那么就创建一下这个路径,没有的跳过:

mkdir -p /home/yuqing/fastdfs

创建目录后重新尝试提交:

在这里插入图片描述

我们复制出这个文件名来:group1/M00/00/00/ZVlXCWNc8jaAQNtsAAAAD9lnrIQ575.txt ,这个名称后面有用,将用作后面配置nginx时配置访问文件路径。

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

cd /usr/local/server/fastdfs/data/storage/data
ls

输出内容如下:

在这里插入图片描述

5、配置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

找到local节点,修改为:

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

修改如下:

在这里插入图片描述

接下来就是创建nginx容器,并指向刚刚的配置文件了。

没有安装过nginx的也可以执行如下指令,默认会帮你拉取镜像然后安装。

注意:请修改ip地址后再执行

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=150.158.166.124:22122 \
season/fastdfs:1.2 nginx

至此,我们 docker ps -a 查看一下目前创建以及启动的容器:

在这里插入图片描述

我们测试一下之前上传的文件 group1/M00/00/00/ZVlXCWNc8jaAQNtsAAAAD9lnrIQ575.txt,在浏览器输入测试:

在这里插入图片描述
访问成功!!!
OK,到此就算成功了,也可以上传图片。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
可以按照以下步骤来部署 FastDFS: 1. 下载 FastDFS Docker 镜像:`docker pull season/fastdfs` 2. 创建一个容器网络:`docker network create fastdfs` 3. 启动 FastDFS Tracker 服务器容器: ``` docker run -d --name tracker --net=fastdfs --ip 172.18.0.2 \ -v {local_path}/tracker:/fastdfs/tracker/storage \ -e TRACKER_PORT=22122 \ season/fastdfs sh tracker.sh ``` 其中: - `{local_path}` 是本地路径,需要将其替换为宿主机上的实际路径。 - `TRACKER_PORT` 是 Tracker 服务器的端口号,默认为 22122。 4. 启动 FastDFS Storage 服务器容器: ``` docker run -d --name storage --net=fastdfs --ip 172.18.0.3 \ -v {local_path}/storage:/fastdfs/storage/data \ -e TRACKER_SERVER=tracker:22122 \ -e GROUP_NAME=group1 \ -e STORAGE_PORT=23000 \ -e STORAGE_HTTP_PORT=8888 \ season/fastdfs sh storage.sh ``` 其中: - `{local_path}` 是本地路径,需要将其替换为宿主机上的实际路径。 - `TRACKER_SERVER` 是 Tracker 服务器地址和端口号,格式为 `ip:port` 或者 `hostname:port`。 - `GROUP_NAME` 是存储组的名称,默认为 `group1`。 - `STORAGE_PORT` 是 Storage 服务器的端口号,默认为 23000。 - `STORAGE_HTTP_PORT` 是 Storage 服务器的 HTTP 端口号,默认为 8888。 5. 在 FastDFS Web 界面中查看文件存储情况: 访问 `http://{ip}:8888/groupName`,其中 `{ip}` 是 Storage 服务器的 IP 地址,`groupName` 是存储组的名称。 以上就是部署 FastDFS 的基本步骤,需要注意的是,启动 Storage 服务器容器的时候需要指定 Tracker 服务器的地址和端口号,否则 Storage 服务器无法加入到 FastDFS 集群中。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值