FastDFS学习(四)

news2025/7/17 20:12:56

目录:

(1)FastDFS搭建集群的环境准备

(2)FastDFS集群搭建负载均衡环境-使用Nginx进行负载均衡


(1)FastDFS搭建集群的环境准备

架构图

  • 如果你公司刚好用这个,那你就会搭建集群
  • 涉及到多个Linux,你可以更进一步熟悉一下Linux
  • 提升自己驾驭复杂环境的能力

 

新建7台虚拟机:

在Xshell中创建6个连接,分别连向不同的Linux

 这里我们没有使用Xshell

分别连接:

由于迷你版Linux缺少一些常用的工具库,操作起来不方便,推荐安装如下的工具库

  • 安装lrzsz, yum install lrzsz -y
  • 安装wget, yum install wget -y
  • 安装vim, yum install vim -y
  • 安装unzip,yum install unzip -y
  • 安装ifconfig,yum install net-tools -y

 yum install –y lrzsz wget vim unzip net-tools

 在这六个窗口依次执行: yum install –y lrzsz wget vim unzip net-tools

 

安装nginx及fastdfs需要的库依赖:
   yum install -y gcc perl openssl openssl-devel pcre pcre-devel zlib zlib-devel libevent libevent-devel 


第三步 安装fastdfs 
   1、 上传fastdfs的安装包和libfastcommon的安装包
   2、 解压libfastcommon 安装libfastcommon
   3、 解压fastdfs 安装fastdfs
   4、 拷贝fastdfs目录中的http.conf和mime.types到/etc/fdfs 目录中
注:6台机器全部执行这些操作
 

 通过Windows连接Linux:使用put命令上传

 都上传成功:

 解压文件:环境文件

每台先进行编译 

 每台执行安装:

 每台解压:fdfs

 按装:

执行install命令:

每个解压:fastdfs

 每个安装:

 

 查看一下是否出现:

每个都复制一下文件: 


第四步:部署两个tracker server服务器,需要做的工作:

    修改两个tracker服务器的配置文件:
    tracker.conf: 修改一个地方:
    base_path=/opt/fastdfs/tracker   #设置tracker的数据文件和日志目录(需预先创建)
    启动tracker服务器 fdfs_trackerd /etc/fdfs/tracker.conf

编辑两台tracker的配置文件:130、133

 编辑:

修改:

分别启动130、133的:tracker

 所有ip都开放一下端口:

第五步 修改两个组中的4台storage中storage.conf文件
    第一组group1的第一个storage server(修改storage.conf配置文件):
    group_name=group1   #组名,根据实际情况修改,值为 group1 或 group2
    base_path=/opt/fastdfs/storage   #设置storage的日志目录(需预先创建)
    store_path0=/opt/fastdfs/storage/files    #存储路径
    tracker_server=192.168.171.135:22122  #tracker服务器的IP地址以及端口号
    tracker_server=192.168.171.136:22122

    第二组group2的第一个storage server(修改storage.conf配置文件):
    group_name=group2   #组名,根据实际情况修改,值为 group1 或 group2
    base_path=/opt/fastdfs/storage   #设置storage的日志目录(需预先创建)
    store_path0=/opt/fastdfs/storage/files    #存储路径
    tracker_server=192.168.171.135:22122  #tracker服务器的IP地址以及端口号
    tracker_server=192.168.171.136:22122
   
    启动storage服务器
    fdfs_storaged /etc/fdfs/storage.conf

使用之前的Java代码测试FastDFS的6台机器是否可以上传文件
注意:FastDFS默认是带有负载均衡策略的可以在tracker的2台机器中修改tracker.conf文件
    store_lookup=1

    0 随机存放策略
    1 指定组
    2 选择磁盘空间的优先存放 默认值

    修改后重启服务
    fdfs_trackerd /etc/fdfs/tracker.conf restart
 

这里是两组第一组:131、132 是group1

第二组:134、135是group2

第一组:

 编辑:

修改:

第二组:

修改:

  

 启动storage:

使用Java代码测试:

修改配置文件:

 测试文件上传:

 查看131:

(2)FastDFS集群搭建负载均衡环境-使用Nginx进行负载均衡

第六步 安装 nginx ,使用nginx 对fastdfs 进行负载均衡 
    上传 nginx-1.12.2.tar.gz以及 nginx的fastdfs扩展模块安装包fastdfs-nginx-module-master.zip
    添加nginx的安装依赖
       yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel -y
    解压nginx
       tar -zxvf  nginx-1.12.2.tar.gz
    解压fastdfs扩展模块
       unzip fastdfs-nginx-module-master.zip
    配置nginx的安装信息
       2台tracker服务器的配置信息(不需要fastdfs模块)
         ./configure --prefix=/usr/local/nginx_fdfs
       4台storage服务器其的配置信息(需要使用fastdfs模块)
         ./configure --prefix=/usr/local/nginx_fdfs --add-module=/root/fastdfs-nginx-module-master/src
    编译并安装nginx
       ./make
       ./make install

    4台storage的服务器需要拷贝mod_fastdfs文件
    将/root/fastdfs-nginx-module-master/src目录下的mod_fastdfs.conf文件拷贝到 /etc/fdfs/目录下,这样才能正常启动Nginx;

在131、132、134、135安装fastdfs-nginx 

 解压fastdfs-nginx:

移动目录:

 上传nginx:从130-135都上传一份

使用命令上传:

 

 

 

 解压缩:

 

2台tracker服务器的配置信息(不需要fastdfs模块)

 添加nginx的安装依赖

4台storage的服务器需要拷贝mod_fastdfs文件 

  4台storage服务器其的配置信息(需要使用fastdfs模块)

6台执行 

 

第七步 配置tracker 的两台机器的nginx
    进入安装目录
    cd /usr/local/nginx_fdfs

    添加一个location 对请求进行拦截,配置一个正则规则 拦截fastdfs的文件路径, 并将请求转发到其余的4台storage服务器(修改 conf目录下nginx.conf 文件)
    #nginx拦截请求路径:
    location ~ /group[1-9]/M0[0-9] {   
        proxy_pass http://fastdfs_group_server; 
    }

    添加一个upstream 执行服务的IP为 另外的4台stroage 的地址
    #部署配置nginx负载均衡:
    upstream fastdfs_group_server {  
        server 192.168.171.137:80;  
        server 192.168.171.138:80;
        server 192.168.171.139:80;  
        server 192.168.171.140:80;  
    }

130、133

 编辑:

修改:

 

 

 

 

第八步 配置另外4台storage的nginx添加http访问的请求路径拦截
    进入安装目录
    cd /usr/local/nginx_fdfs
    添加一个location 对请求进行拦截,配置一个正则规则 拦截fastdfs的文件路径,使用fastdfs的nginx模块转发请求(修改 conf目录下nginx.conf 文件)
    #nginx拦截请求路径:
    location ~ /group[1-9]/M0[0-9] {   
        ngx_fastdfs_module;
    }
 

131、132、134、135

编辑:

修改: 

 

 

 

启动130、133的nginx:

 

 

第九步 分别修改4台storage服务器的mod_fasfdfs.conf文件(/etc/fdfs/mod_fastdfs.conf)
    #修改基本路径,并在指定路径创建对应文件夹
    base_path=/opt/fastdfs/nginx_mod #保存日志目录
    #指定两台tracker服务器的ip和端口
    tracker_server=192.168.171.135:22122  #tracker服务器的IP地址以及端口号
    tracker_server=192.168.171.136:22122
    #指定storage服务器的端口号
    storage_server_port=23000 #通常情况不需要修改
    #指定当前的storage服务器所属的组名 (当前案例03和04为group1 05和06为group2)
    group_name=group1  #当前服务器的group名
    #指定url路径中是否包含组名 (当前案例url包含组名)
    url_have_group_name=true     #文件url中是否有group名
    store_path_count=1           #存储路径个数,需要和store_path个数匹配(一般不用改)
    store_path0=/opt/fastdfs/storage/files    #存储路径
    #指定组个数,根据实际配置决定,(当前案例拥有2个组group1和group2)
    group_count = 2                   #设置组的个数

 

 在末尾增加2个组的具体信息:
    [group1]
    group_name=group1
    storage_server_port=23000
    store_path_count=1
    store_path0=/opt/fastdfs/storage/files

    [group2]
    group_name=group2
    storage_server_port=23000
    store_path_count=1
    store_path0=/opt/fastdfs/storage/files

    第一个组的第二个storage按照相同的步骤操作;

    另外一个组的两个storage也按照相同的步骤操作;

    #测试nginx的配置文件是否正确(测试全部6台服务器)
       /usr/local/nginx_fdfs/sbin/nginx -c /usr/local/nginx_fdfs/conf/nginx.conf -t
    #启动nginx服务器(全部6台服务器)
      /usr/local/nginx_fdfs/sbin/nginx -c /usr/local/nginx_fdfs/conf/nginx.conf

 

编辑:131、132、134、135

修改:

 

    base_path=/opt/fastdfs/nginx_mod #保存日志目录 

 

 

 

    tracker_server=192.168.171.130:22122  #tracker服务器的IP地址以及端口号
    tracker_server=192.168.171.133:22122

 

 131、132使用group1

false改为true 

 

 

 

 

 

 

创建文件夹:

 

134、135 执行相同的操作

 修改:

    base_path=/opt/fastdfs/nginx_mod #保存日志目录 

    tracker_server=192.168.171.130:22122  #tracker服务器的IP地址以及端口号
    tracker_server=192.168.171.133:22122

 

 

 

 

    

 

 

 

 

 

 

 创建目录:

 

第十步:部署前端用户访问入口服务器,即访问192.168.230.128上的Nginx,该Nginx负载均衡到后端2个tracker server;
    配置nginx.conf文件
    location ~ /group[1-9]/M0[0-9] {   
        proxy_pass http://fastdfs_group_server; 
    }

    添加一个upstream 执行服务的IP为 2台tracker 的地址
    #部署配置nginx负载均衡:
    upstream fastdfs_group_server {  
        server 192.168.116.130:80;  
        server 192.168.116.133:80; 
    }

测试:使用浏览器访问128(唯一入口的nginx服务器)服务器中的fastdfs文件
注意:由于之前128的nginx中可能拥有静态资源拦截会导致访问不到文件,这时可以注释或删除这些静态资源拦截
 

首先启动nginx:131、132、134、135

 

130、131、133都可以访问原来上传的图片

 

 

 

启动129服务器:

复制一份配置文件:

 

第十步:部署前端用户访问入口服务器,即访问192.168.230.129上的Nginx,该Nginx负载均衡到后端2个tracker server; 

编辑:

 

修改: 

 

 

添加一个upstream 执行服务的IP为 2台tracker 的地址
    #部署配置nginx负载均衡: 

 

 启动129nginx:

就可以通过129进行访问了 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/8489.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python基于PHP+MySQL的个人博客系统毕设

随着时代和网络的发展,人们越来越希望通过多种模式来展示自己。于是个人博客就出现了,它可以更好的让人们来记录自己的工作和学习方式。博客不仅仅可以让自己抒发个人感情,还可以展示自己真实的生活,从而建立起一种友好的交友平台。 PHP个人博客系统毕设系统分为前台和后台两部…

第2-3-3章 文件处理策略-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss

文章目录5.2 文件处理策略5.2.1 FileStrategy5.2.2 AbstractFileStrategy5.2.3 LocalServiceImpl5.2.4 FastDfsServiceImpl5.2.5 AliServiceImpl5.2.6 MinioServiceImpl5.2 文件处理策略 在开发fastDFS和minio实现类之前,需要提前安装部署好fastDFS和minio。搭建教程…

LIS.LCS.LCIS相关问题

文章目录P1020 [NOIP1999 普及组] 导弹拦截P1439 【模板】最长公共子序列P1637 三元上升子序列272. 最长公共上升子序列LCISP1020 [NOIP1999 普及组] 导弹拦截 P1020 [NOIP1999 普及组] 导弹拦截 导弹拦截应该是接触DP的第一题(只不过洛谷上的数据加强了&#xff…

Windows平台 使用jarsigner对Apk签名

使用的是JDK自带的jarsigner工具来完成Apk签名 1) 首先找到你的Java Jdk中bin的路径:C:\Program Files\Java\jdk1.8.0_152\bin jarsigner简单使用说明 #jarsigner的命令格式: jarsigner -verbose -keystore [您的私钥存放路径] -signedjar [签名后文件存…

使用高数值孔径透镜进行脉冲聚焦

摘要 尽管对于大多数其他类型的光源而言,静态近似下是足够精确的,但对于超短脉冲来说需要更加精确的方法,其中要考虑到不同光谱模式之间的相关性。在此,我们在空间、时间与场分布上研究了该脉冲传播通过高数值孔径透镜的影响。 建…

基于matlab和Simulink的不同阶QAM调制解调系统误码率对比仿真

目录 1.算法概述 2.仿真效果预览 3.核心MATLAB预览 4.完整MATLAB程序 1.算法概述 正交振幅调制是利用已调信号在相同带宽内的频谱正交来实现两路并行的数据信息传输,其信道频带利用率与单边带调制一样,主要用于高速数据传输系统中。QAM系统组成框图如…

Vue3 - 事件 API 新标准(如何在 Vue3 中怎么用事件总线实现兄弟组件通信?相比 Vue2 有什么不同?)

前言 对比 Vue2 ,引出并展开 Vue3 。 本文讲述了事件 API 在 Vue3 中相比 Vue2 有什么变化,以及使用方法和代码示例详细讲解。 回忆 Vue2 大家在写 Vue2 项目时,兄弟组件之间传参,我相信很大一部分开发者都会借助全局的事件总线&…

Kubernetes 系统化学习之 POD原理篇(二)

1. Kubernets 概览回顾 Pod、Service、Volume 和 Namespace 是 Kubernetes 集群中四大基本对象,它们能够表示系统中部署的应用、工作负载、网络和磁盘资源,共同定义了集群的状态。Kubernetes 中很多其他的资源其实只对这些基本的对象进行了组合。 Pod -…

最全JAVA系列视频教程源码

扫描关注公众号:发送对应消息获取源码(下面红色字为发送消息内容,取掉空格哦) JAVA 基础: java基础 更适合零基础学员: 自Java语言起源始,循序渐进,知识点剖析细致且每章配备大量随堂练…

Android实现动态换肤-原理篇

学习是一个过程。 文章目录Activity中LayoutInflater加载布局总体时序图LayoutInflater源码讲解(api28)LayoutInflater设置Factory2实现方式LayoutInflater源码总结Activity中LayoutInflater加载布局总体时序图 LayoutInflater源码讲解(api28…

高级UI——Paint(滤镜,颜色通道,矩阵运算)

前言 我们已经详细了解到整个android程序,从启动再到绘制的整体流程,从这中间我们又牵扯出了Canvas绘制图形的画板和我们的Paint控制色彩样式的画笔,那么之前基础篇我们就不进行详细的解释,那些API在之前的基础篇已经公布出来&am…

Typescript 函数类型详解

Typescript 函数 前言 虽然 JS/TS 支持面向对象编程,但大部分时候还是在写函数。函数是一等公民。本文介绍下如何在 TypeScript 中使用函数,包括: 函数类型声明函数参数类型:可选参数、默认参数、剩余参数函数返回值类型this 类…

java#5(数组)

目录 数组 1.数组的完整格式:数据类型[] 数组名 new 数据类型[]{元素1,元素2......}; 2.数组的简化格式:数据类型[] 数组名 {元素1,元素2......}; 3.数组的地址​编辑 4.数组的索引(下标,角标) 5.length的使用(表示数组的长度:有几个元素) 6.数组动态初始化:初始化时指…

Redis事务入门及命令

文章目录Redis 事务入门及命令事务概念Redis 事务概念Redis 事务特性Redis 三个阶段入门代码示例Redis 相关命令MULTIDISCARDEXECWATCHUNWATCHRedis 事务入门及命令 事务概念 数据库事务( transaction )是访问并可能操作各种数据项的一个数据库操作序列,这些操作要…

详解 YUV,一文搞定 YUV 是什么!

YUV 是一个颜色模型,通常用作彩色图像管道的一部分。它对彩色图像或视频进行编码时考虑到了人类的感知,与“直接”的 RGB 表示相比,允许减少色度分量的带宽。历史上,术语 YUV 和 Y’UV 用于电视系统中颜色信息的特定模拟编码。今天…

HTML学生作业网页:使用HTML+CSS技术实现传统文化网页设计题材-西安事变历史纪念馆 10页 带视频 带音乐

Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 茶文化网站 | 中华传统文化题材 | 京剧文化水墨风书画 | 中国民间年画文化艺术网站 | HTML期末大学生网页设计作业 HTML:结构 CSS:样式 在操作方面上运…

《上海悠悠接口自动化平台》-4.注册用例集实战演示

前言 以注册接口为例,在平台上演示如何维护接口自动化用例 访问地址http://47.108.155.10/login.html 用户名: demo, 密码: demo123 有兴趣的可以自己去查看用例规范 和 运行效果。 API 接口层 先找出注册接口的接口文档,以下是接口文档部分 主要关…

Redis配置哨兵及其机制

目录一、Redis哨兵诞生背景二、关于哨兵三、哨兵机制的基本流程3.1 监控3.2 选主3.3 通知四、关于主观下线和客观下线4.1 主观下线4.2 客观下线五、选主规则3.1 优先级最高的从库得分高3.2 和旧主库同步程度最接近的从库得分高3.3 ID 号小的从库得分高六、配置流程七、总结一、…

网络面试-0x10地址栏输入URL敲入回车后发生了什么?

一、 URL解析 1、 首先判断你输入的是一个合法的URL还是待搜索的关键字 2、如果是URL,对URL进行解析 二、 DNS查询 1、设备 —— 本地DNS服务器 —— xx 递归过程 2、DNS服务器和 顶级域名服务器、二级域名服务器、权威域名服务器之间是迭代过程。 三、 TCP连接 …

redis和selery相关知识点

目录标题一:redis字符串操作二:redis hash操作三:redis列表操作四:redis管道1.redis数据库,是否支持事务?2.redis代码实现事务五:redis其他操作六:django中集成redis1.方式一:直接使…