https://blog.csdn.net/weixin_40247263/article/details/81087726

搭建过程参考 作者 https://me.csdn.net/feng_qi_1984 的课程视频

声明:集群版是在我之前写的单机版基础之上进行搭建的,我将安装了fastfds单机版的docker打包成了镜像。

如对fastfds搭建流程不熟悉者,需先参阅之前的文章。点击进入文章

首先借鉴一个公众号的两张图来说明一下 fastfds 上传下载的流程,公众号为 "Java架构师之路"

我搭建的思路是,两个tracker、四个storage,然后通过nginx进行反向代理访问图片。

下面演示搭建步骤

先配置几个虚拟ip

运行上次打包的镜像,创建docker容器

docker run --privileged=true -itd -v /soft/:/back -p 192.168.46.230:80:80 -p 192.168.46.230:22122:22122 -p 192.168.46.230:8080:8080 529c212ff162 /bin/bash

进入容器

docker exec -it 0d581e092e1d /bin/bash

(一)tracker

集群版中 配置 tracker 修改tracker.conf文件

# cd /etc/fdfs/

# vi tracker.conf

修改 store_lookup=2 (0代表轮询,1代表固定group,2代表负载均衡)

启动 tracker

# service fdfs_trackerd start

查看一下

# netstat -unltp | grep fdfs

备用 tracker 进行相同操作

(二)storage

配置storage的配置文件

# cd /etc/fdfs/

# vi storage.conf

修改tracker_server

配置group_name 我的是两个1两个2

把主备两个tracker都配置上

tracker_server=172.17.0.34:22122

tracker_server=172.17.0.36:22122

修改/etc/fdfs/目录下的mod_fastdfs.conf

connect_timeout=10

tracker_server 主备两个都要配置       且更改  group_count = 2

我是设置了两个组 每个组两个storage

再配置group1和group2

修改nginx配置文件

# cd /usr/local/nginx/conf/

# vi nginx.conf

listen 8888; 由于storage的端口号为8888 所以这里要修改

如果是group2的话 需要修改group2

修改完以后 保存退出

将刚刚配置好的storage容器 打包成镜像

docker commit f790145a83a2 storage:v1

然后依旧是端口号映射、硬盘挂载创建容器,注意要更改ip地址,然后用新打包好的镜像

docker run --privileged=true -itd -v /soft/:/back -p 192.168.46.235:80:80 -p 192.168.46.235:23000:23000 -p 192.168.46.235:8888:8888 cea52388dba7 /bin/bash

注意 这里的 端口号 做了 修改

安装好以后 进入容器。 直接启动 storage服务 和 nginx 服务就行了

然后继续 安装 容器

这次进入以后 将 storage.conf 和 mod_fastdfs.conf 中的 groupname 修改为 group2

storage.conf

mod_fastdfs.conf

nginx 的配置文件 也要修改

再 启动 storage 服务 和 nginx 服务

然后再 安装一个容器 同上

安装并配置完以后

在cd /usr/bin 这个 文件夹下面 有很多可执行的脚本。

我们通过fdfs_monitor /etc/fdfs/storage.conf 命令

可以查看到 以下内容

再往下 可以看到 分别有哪些组,每个组里有哪些storage 以及这些storage的状态

(三) 测试一下

进入 主 tracker 也就是 第一个配置的那个 tracker

修改 /etc/fdfs/client/conf 文件

# /usr/bin/fdfs_test /etc/fdfs/client.conf upload /back/3.jpg

添加路由

复制地址,输入端口号 8888 可以访问

通过linux的ip也可以访问

由于我这个是group2,那么group2中的另一个 storage中应该也存放了该图片

上传虽然能成功 但是访问的时候IP都不同 所以访问起来很不方便 可以再用一个nginx做一个反向代理

# cd /usr/local/nginx/conf/

# vi nginx.conf

启动 nginx

就可以通过 nginx 的ip地址 加上后面的 路径 访问图片了

docker下搭建fastfds的更多相关文章

  1. docker下搭建fastfds集群版

    搭建过程参考 作者 https://me.csdn.net/feng_qi_1984 的课程视频 声明:集群版是在我之前写的单机版基础之上进行搭建的,我将安装了fastfds单机版的docker打包成 ...

  2. Linux 使用 docker 下搭建xunsearch 搜索引擎服务

    Linux 使用 docker 下搭建 xunsearch 搜索引擎服务 安装 docker 环境(菜鸟教程有说明) 安装docker说明 下载并运行 xunsearch 的服务端:docker安装x ...

  3. 实战maven私有仓库三部曲之三:Docker下搭建maven私有仓库

    本章是<实战maven私有仓库>系列的第三篇,在前两章中,我们先在linux搭建maven私有仓库,然后在开发环境使用此仓库,本章我们在docker下快速搭建maven私有仓库,然后像前面 ...

  4. docker下搭建owncloud

    在ubuntu下 搭建owncloud 用docker-compose启动,owncloud.yml文件内容 owncloud: image: owncloud: restart: always 开机 ...

  5. 在Docker下搭建MySQL双主双重集群(单机展示,与多机原理一致)

    前言 Docker的安装部署&在Docker下MySQL的安装与配置 https://www.cnblogs.com/yumq/p/14253360.html 在Docker进行单机主从复制M ...

  6. Docker下搭建Jenkins构建环境

    首先需要搭建好docker环境的linux系统,这个教程多如牛毛,在此不再赘述. 然后编写一个dockerfile来生成一个镜像,dockerfile其实就是一系列命令的集合,有点像windows的批 ...

  7. Docker下搭建mongodb副本集

    背景 有需求需要对mongodb做一个容灾备份.根据官网,发现mongodb最新版本(4.0)已经抛弃了主从模式而采用副本集进行容灾.副本集的优势在于:"有自动故障转移和恢复特性,其任意节点 ...

  8. docker下搭建zipkin for mysql

    docker pull openzipkin/zipkin 新建docker-compose.yml加入以下内容,自行修改. version: ' services: # The zipkin pro ...

  9. 用Docker下搭建GitLab

    最近试了一下Docker,发现用它搭建服务十分方便,就用它搭建了一个gitlab练练手. 首先下载gitlab镜像:         docker image pull gitlab/gitlab-c ...

随机推荐

  1. python 全栈开发笔记 2

    函数 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 函数式编程最重要的是增强代码的重用性和可读性 def xx() ...

  2. DevExpress v18.2新版亮点——Reporting篇(一)

    行业领先的.NET界面控件——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExpress Reporting v18.2 的新功能,新版3 ...

  3. intellij idea 程序包不可见问题

    刚用intellij idea不久,出现了个程序包不可见的问题. 原因:jdk9的问题,用的是jdk9就会出现这个问题. 解决办法:把jsk9换成jdk1.8就能解决.

  4. 一:配置Linux Centos7 .netCore 部署环境

    安装:jexus 官网: https://www.jexus.org/  下载专业(独立)版 博客地址: https://blog.csdn.net/xmroom/article/details/69 ...

  5. 《多线程操作之生产者消费者》(单生产单消费&多生产多消费)

    说明1:假设有一个放商品的盘子(此盘子只能放下一个商品).生产者每次生产一个商品之后,放到这个盘子里,然后唤醒消费者来消费这个面包.消费者消费完这个商品之后,就唤醒生产者生产下一个商品.前提是,只有盘 ...

  6. 【译】REM vs EM - 世纪之争

    原文链接:https://zellwk.com/blog/rem-vs-em/ 在网络上排版的最佳做法之一是使用像rem和em这样的相对单位. 问题是,你应该使用哪个? 在rem支持者和em支持者之间 ...

  7. Java探针

    使用java代理来实现java字节码注入 使用JavaSsist可以对字节码进行修改 使用ASM可以修改字节码 使用Java代理和ASM字节码技术开发java探针工具可以修改字节码 备注:javass ...

  8. php优秀框架codeigniter学习系列——CI_Loader类分析

    这是一个加载视图和文件的类. __construct() 设置视图文件的路径,和获取输出缓冲级别. initialize() 该方法只会被CI_Controller调用一次,会调用 $this-> ...

  9. 关于Hibernate级联更新插入信息时提示主键不为空的问题“org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1 ”

    org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual ...

  10. 自动化测试-17.selenium数据的分离之txt文本的写入与读取

    前言 数据量偏小时,用txt文本保存数据比较合适,以-进行区分,为什么不用:呢?原因是,我们在使用数据时,会存在url地址的情况,里面宝行:所以用-进行替代 此处附上代码 #encoding=utf- ...