当前位置: 首页 > news >正文

Fastdfs集群搭建

一、简单介绍:

FastDFS是一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。

二、Fastdfs架构说明:

FastDFS架构包括 Tracker server和Storage server。客户端请求Tracker server进行文件上传、下载,通过Trackerserver调度最终由Storage server完成文件上传和下载。
  FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)。
  Tracker Server:跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。通过Trackerserver在文件上传时可以根据一些策略找到Storageserver提供文件上传服务。这里要注意的是Tracker有自己功能的配置下,既设置它管理所有的storage,也可以指定它管理特定的组。
  Storage Server:存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。Storage server没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。

Client:客户端,上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。

三、Fastdfs角色说明:

tracker:跟踪者,负责调度存储服务;(tracker服务端口:22122)

storage:用于文件存储;(storage端口:23000)

client:调用tracker;

四、部署fastdfs

执行部署脚本,进行安装;部署安装包见文章顶部;

tracker.conf配置文件详解见如下:

vim /etc/fdfs/tracker.conf
disabled=false #启用配置文件(默认false)
bind_addr= #解析主机地址,空则解析所有主机
port=22122 #tracker服务端口
connect_timeout=30 #连接超时时间30S
network_timeout=60 #网络超时时间60S
base_path=/data/hexin/fastDFS/tracker #tracker基础数据存储路径及日志存放路径
max_connections=256 #最大并发连接数
work_threads=4 #工作线程数,最好和cpu核数保持一致
store_lookup=0 #选择上传文件模式 0代表group轮询 1指定特定group 2选择空间最大的group
#store_group= #上传文件组,如果模式为1,则必须设置成核特定group一致的组名
store_server=0 #选择存储服务器上传文件 0代表轮询,1根据通过IP第的顺序 2通过优先级
store_path=0 #选择哪块存储盘上传文件 0代表轮询,2代表优先最大存储空间盘(路径)
download_server=0 #选择哪台存储服务器下载文件0代表轮询,1代表当前文件上传的源服务器
reserved_storage_space = 10% #系统保留存储空间10%

storage.conf详解见如下:

vim /etc/fdfs/storage.conf
group_name=group1 #存储组名
client_bind=true #当连接其他服务器时解析该主机地址
port=23000 #storage端口 23000
store_path_count=1 #存储路径个数,需要和store_path个数匹配
base_path=/data/hexin/fastDFS/storage #基础存储数据和日志文件
store_path0=/data/hexin/fastDFS/storage #group所占用的目录或硬盘,有几个写几个
tracker_server=192.168.0.1:22122 #指定tracker1服务器
tracker_server=192.168.0.2:22122 #指定tracker2服务器

五、安装nginx并添加fastdfs-nginx-module模块

mod_fastdfs.conf(此配置文件是fastdfs-nginx-module模块的配置文件)

安装步骤如下:

1、先安装nginx;2、安装fastdfs-nginx-module,解压fastdfs-nginx-module包以及拷贝mod_fastdfs.conf配置文件
cd /home/
unzip fastdfs-nginx-module-1.22.zip
cp /home/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs/3、备份原来nginx程序文件,重新进行nginx配置,编译
cp /home/nginx/sbin/nginx /home/nginx/sbin/nginx.bak./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module  --add-module=/home/software/fastdfs-nginx-module/srcmake4、再进入nginx源码,进行安装
make install

修改mod_fastdfs.conf配置文件

vim /etc/fdfs/mod_fastdfs.conf
base_path=/data/hexin/fastDFS/storage #修改成和storage 存放路径一致
tracker_server=192.168.0.1:22122 #配置成tracker server 地址和端口
tracker_server=192.168.0.2:22122 #配置成tracker server 地址和端口
url_have_group_name = true #url中是否包组名(默认为false,需要改成true)
store_path0=/data/hexin/fastDFS/storage #文件存放路径,与storage 一致
group_count = 0 #0代表单组,非零代表多组,一般设置几就为几组
[group1] #设置了group_count = 0,接下来就需要在文件尾部追加这1个group setting
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/data/hexin/fastDFS/storage

六、nginx配置文件说明

upstream fdfs_group1 {server 192.168.0.1:8889 weight=1 max_fails=2 fail_timeout=30s;server 192.168.0.2:8889 weight=1 max_fails=2 fail_timeout=30s;
}//此部分是新增跳转到storage服务模块配置
server {#8889 端口值是要与/etc/fdfs/storage.conf中的 http.server_port=8889 相对应listen       8889;server_name  localhost;location / {root   html;index  index.html index.htm;}location ~/group1/M00 {ngx_fastdfs_module;}
}//此部分是正常web地址对外nginx配置
server {listen       8888;server_name  localhost;location /group1/M00 {proxy_pass http://fdfs_group1;}
}

七、数据流程说明

1、客户端-->nginx-->ngx_fastdfs_module(同步集群storage数据+访问tracker获取storage存储信息)-->tracker(mod_fastdfs.conf配置文件)--->storage

2、客户端-->nginx-->gateway-->yyzt-file--->tracker--->storage

相关文章:

Fastdfs集群搭建

一、简单介绍&#xff1a; FastDFS是一个开源的高性能分布式文件系统&#xff08;DFS&#xff09;。 它的主要功能包括&#xff1a;文件存储&#xff0c;文件同步和文件访问&#xff0c;以及高容量和负载平衡。主要解决了海量数据存储问题&#xff0c;特别适合以中小文件&…...

【深度学习】Vision Transformer论文,ViT的一些见解《 一幅图像抵得上16x16个词:用于大规模图像识别的Transformer模型》

必看文章&#xff1a;https://blog.csdn.net/qq_37541097/article/details/118242600 论文名称&#xff1a; An Image Is Worth 16x16 Words: Transformers For Image Recognition At Scale 论文下载&#xff1a;https://arxiv.org/abs/2010.11929 官方代码&#xff1a;https:…...

在centos7上使用非编译方式安装ffmpeg

很多在centos7上安装ffmpeg的教程都需要使用编译方式的安装&#xff1b;编译时间较长而且需要配置; 后来搜索到可以通过加载rpm 源的方式实现快速便捷操作 第一种方式&#xff1a; 首先需要安装yum源&#xff1a; yum install epel-release yum install -y https://mirrors.…...

【微信小程序】导出Excel文件

// 导出 doOutExcel() {let fileName 考勤列表wx.request({url: XXX,method: POST,header: {"content-type": "application/json","Authorization": "token " wx.getStorageSync(userInfo).token},data: {}, // 请求参数responseTyp…...

接口测试—知识速查(Postman)

文章目录 接口测试1. 概念2. 原理3. 测试流程4. HTTP协议4.1 URL的介绍4.2 HTTP请求4.2.1 请求行4.2.2 请求头4.2.3 请求体4.2.4 完整的HTTP请求示例 4.3 HTTP响应4.3.1 状态行4.3.2 响应头4.3.3 响应体4.3.4 完整的HTTP请求示例 5. RESTful接口规范6. 测试用例的设计思路6.1 单…...

机器学习深度学习——序列模型(NLP启动!)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——卷积神经网络&#xff08;LeNet&#xff09; &#x1f4da;订阅专栏&#xff1a;机器学习&&深度…...

小白到运维工程师自学之路 第六十四集 (dockerfile构建tomcat、mysql、lnmp、redis镜像)

一、tomcat&#xff08;更换jdk&#xff09; mkdir tomcat cd tomcat/ tar xf jdk-8u191-linux-x64.tar.gz tar xf apache-tomcat-8.5.40.tar.gzvim Dockerfile FROM centos:7 MAINTAINER Crushlinux <syh163.com> ADD jdk1.8.0_191 /usr/local/java ENV JAVA_HOME /us…...

超低功耗水表电器表LCD驱动显示芯片,高抗干扰性能提供LQFP48、LQFP64的封装

VK2C23是一个点阵式存储映射的LCD驱动器&#xff0c;可支持最大224点&#xff08;56SEGx4COM&#xff09;或者最大416点&#xff08;52SEGx8COM&#xff09;的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据&#xff0c;也可通过指令进入省电模式。其高抗干扰&#xff…...

SpringBoot3---核心特性---2、Web开发III(模板引擎、国际化、错误处理)

星光下的赶路人star的个人主页 夏天就是吹拂着不可预期的风 文章目录 1、模板引擎1.1 Thymeleaf1.2 基础语法1.3 属性设置1.4 遍历1.5 判断1.6 属性优先级1.7 行内写法1.8 变量选择1.9 模板布局1.10 devtools 2、国家化3、错误处理3.1 默认机制3.2 自定义错误响应3.3 最佳实战 …...

MemFire教程|FastAPI+MemFire Cloud+LangChain开发ChatGPT应用-Part2

基本介绍 上篇文章我们讲解了使用FastAPIMemFire CloudLangChain进行GPT知识库开发的基本原理和关键路径的代码实现。目前完整的实现代码已经上传到了github&#xff0c;感兴趣的可以自己玩一下&#xff1a; https://github.com/MemFire-Cloud/memfirecloud-qa 目前代码主要…...

C# File.Exists与Directory.Exists用法

File.Exists&#xff1a; 用于检查给定文件路径是否存在。如果文件存在&#xff0c;则返回true&#xff0c;否则返回false。 string path“D:\\test\\example.txt” bool exists File.Exists(path); if (exists) {Console.WriteLine("File exists."); } else {Con…...

(深度学习,自监督、半监督、无监督!!!)神经网络修改网络结构如何下手???

修改神经网络结构&#xff0c;我们可以根据这个进行添加&#xff1a; 卷积层&#xff08;Convolutional Layers&#xff09;&#xff1a;标准的卷积层用于提取特征并进行特征映射。 池化层&#xff08;Pooling Layers&#xff09;&#xff1a;用于减少特征图的空间维度&…...

Codejock Task Panel ActiveX Crack

Codejock Task Panel ActiveX Crack ActiveX COM的Codejock任务面板为Windows开发人员提供了一个复杂的Office任务面板&#xff0c;类似于在Microsoft Office和Windows资源管理器中看到的内容。TaskPanel甚至可以用作Visual Studio风格的工具箱。 功能概述 ActiveX COM的Codejo…...

LeetCode 热题 100 JavaScript--141. 环形链表

给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;…...

文字转语音

键盘获取文字&#xff0c;转化为语音后保存本地 from win32com.client import Dispatch from comtypes.client import CreateObject from comtypes.gen import SpeechLib speakerDispatch(SAPI.SpVoice) speaker.Speak(请输入你想转化的文字) datainput(请输入&#xff1a;)#s…...

让ELK在同一个docker网络下通过名字直接访问

1. docker网络 参考https://blog.csdn.net/lihongbao80/article/details/108019773 https://www.freecodecamp.org/chinese/news/how-to-get-a-docker-container-ip-address-explained-with-examples/ 默认网络有三种&#xff0c;分别是 1、bridge模式&#xff0c;–netbridge(…...

EventBus 开源库学习(一)

一、概念 EventBus是一款在 Android 开发中使用的发布-订阅事件总线框架&#xff0c;基于观察者模式&#xff0c;将事件的接收者和发送者解耦&#xff0c;简化了组件之间的通信&#xff0c;使用简单、效率高、体积小。 一句话&#xff1a;用于Android组件间通信的。 二、原理…...

车载以太网SOME/IP的个人总结

如何实现CAN-SOME/IP通信路由测试 (qq.com) AutoSAR SOMEIP与SOC vsomeip通讯 (qq.com) 利用commonAPI和vSomeip对数据进行序列化 (qq.com) Vector - CANoe - VCDL与SomeIP (qq.com) 使用Wireshark 查看SOMEIP的方法 (qq.com) 基于AutoSAR的车载以太网测试 - SOMEIP之ECU做…...

vue2.29-Vue3跟vue2的区别

1、vue3介绍 更新&#xff08;和重写&#xff09;Vue的主要版本时&#xff0c;主要考虑两点因素&#xff1a;首先是新的JavaScript语言特性在主流浏览器中的受支持水平&#xff1b;其次是当前代码库中随时间推移而逐渐暴露出来的一些设计和架构问题。 相较于vue2&#xff0c;vu…...

【深度学习】分类和分割常见损失函数

分类 分类是一种监督机器学习任务&#xff0c;其中训练模型来预测给定输入数据点的类或类别。分类旨在学习从输入特征到特定类或类别的映射。 有不同的分类任务&#xff0c;例如二元分类、多类分类和多标签分类。 二元分类是一项训练模型来预测两个类别之一的任务&#xff0c…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...

AWS vs 阿里云:功能、服务与性能对比指南

在云计算领域&#xff0c;Amazon Web Services (AWS) 和阿里云 (Alibaba Cloud) 是全球领先的提供商&#xff0c;各自在功能范围、服务生态系统、性能表现和适用场景上具有独特优势。基于提供的引用[1]-[5]&#xff0c;我将从功能、服务和性能三个方面进行结构化对比分析&#…...