FastDFS分布式存储

一:FastDFS原理

FastDFS是一个开源的轻量级分布式文件系统,功能包括:文件存储,文件同步,文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。

1:FastDFS架构

(1)Tracker server

跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的Storage server和group

(2)Storage server

存储服务器,主要提供容量和备份服务;以group为单位,每个group内部可以有多台storage server,数据互为备份。

(3)Client

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

2:文件的上传

 3:文件的下载

 二:FastDFS部署

1:环境要求

服务器:CentOS Linux release 7.9.2009 (Core) 
FastDFS下载地址:https://github.com/happyfish100
(1)fastdfs 
(2)libfastcommon 
(3)fastdfs-nginx-module 
(4)nginx-1.18.0五台服务器,两台tracker 为 101 102两台storage 为 103 104一台client为 105
网段均属于192.168.10.0

2:安装前的准备

安装 gcc、libevent、libevent-devel

3.安装libfastcommon(除client外所有节点)

将下载好的 libfastcommon ,fastdfs, fastdfs-nginx-module, nginx-1.18.0 等文件使用工具上传到Linux服务器中(例如/usr/local/src)
安装ibfastcommon
# 解压下载下来的tar.gz压缩包到当前目录
tar -zxvf libfastcommon-1.0.36.tar.gz
# 切换到解压后的libfastcommon目录
cd libfastcommon-1.0.36
# 执行make脚本进行编译
./make.sh
# 注意:make编译的时候如果报错,需解决错误后再次进行make,通常发生错误是由于Linux缺少某些依赖库导致,根据错误提示解决错误
#执行make install进行安装
./make.sh install

4:安装FastDFS(除client外所有节点

# 解压下载下来的tar.gz压缩包到当前目录
tar -zxvf fastdfs-5.11.tar.gz
# 切换到解压后FastDFS的目录
cd fastdfs-5.11
# 执行make脚本进行编译
./make.sh
# 执行make install进行安装
./make.sh install
#至此FastDFS安装完成,所有编译出来的文件存放在/usr/bin目录下, 所有配置文件存放在/etc/fdfs目录下

5.配置tracker服务器(101,102节点)

# 拷贝文件 tracker.conf.sample 并重命名为 tracker.conf
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
# 编辑 tracker.conf 配置文件
vi /etc/fdfs/tracker.conf
…………
base_path=/fastdfs/tracker 
group_name=group1
…………#创建日志目录
mkdir -p /fastdfs/tracker 

 6.配置storage服务器(103,104)

# 拷贝文件 storage.conf.sample 并重命名为 storage.conf
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
# 编辑 storage.conf 配置文件
vi /etc/fdfs/storage.conf
…………
base_path=/fastdfs/storage
tracker_server=192.168.10.101:22122
tracker_server=192.168.10.102:22122
…………#创建日志目录
mkdir -p /fastdfs/storage

7.配置 client(在任意一个 Fastdfs 节点上配置)

[root@localhost ~]# cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
[root@localhost ~]# mkdir -p /fastdfs/tracker
[root@localhost ~l# vim /etc/fdfs/client.conf
#修改以下配置,其它保持默认
base path=/fastdfs/tracker
tracker server=192.100.139.121:22122# tracker 服务器 IP 和端囗
tracker server=192.100.139.122:22122# tracker 服务器 IP2 和端囗

8.FastDFS测试

首先在101,102节点启动tracker
/etc/init.d/fdfs_tarcker start
在103,104节点启动storage
/etc/init.d/fdfs_storage start准备好要上传的文件
fdfs_test /etc/fdfs/client.conf upload levi.txt
//保存好最后显示的路径,后面测试需要使用

9.在所有 storage 节点安装 fastdfs-nginx-module 和nginx

#解压并修改 fastdfs-nginx-module 的配置文件[root@localhost ~]# tar zxvf fastdfs-nginx-module v1.16.tar.gz
[root@localhost ~]# cd fastdfs-nginx-module/src[root@localhost src]# vim config
将配置文件的路径的/local删除即可

10.编译安装 nginx 

[root@localhost ~]# tar zxvf nginx-1.19.5.tar.gz
[root@localhost ~l# useradd nginx
[root@localhost ~]# cd nginx-1.19.5
[root@localhost nginx-1.19.5]# cp /usr/include/fastcommon/* /usr/include/fastdfs/
[root@localhost nginx-1.19.5]# /configure-prefix=/usr/local/nginx
--add-module=/root/fastdfs-nginx-module/src/
[root@localhost ~]# cp /root/fastdfs-nginx-module/src/mod fastdfs.conf /etc/fdfs/
[root@localhost ~l# vim /etc/fdfs/mod fastdfs.conf

11.配置 FASTDFS

[root@localhost ~]# cp /root/fastdfs-nginx-module/src/mod fastdfs.conf /etc/fdfs/
[root@localhost ~l# vim /etc/fdfs/mod fastdfs.conftracker server=192.168,10.101:22122 # tracker 服务器 IP 和端囗tracker_server=192.168.10.102:22122 #tracker 服务器 IP2 和端口
#ur1 中包含 group 名称
url have group name=true

复制 FastDFs 的部分配置文件到/etc/fdfs 目录,在/fastdfs/storage 文件存储目录下创建软连接,将其链接到实际存放数据的目录

[root@localhost ~]# cp /root/fastdfs-5.11/conf/http.conf /etc/fdfs
[root@localhost ~]# cp /root/fastdfs-5.11/conf/mime.types /etc/fdfs[root@localhost ~]# In-s /fastdfs/storage/data/ /fastdfs/storage/data/M00

12.配置storage服务器中的nginx

[root@localhost ~]# cd /usr/local/nginx/
[root@localhost nginx]# vim conf/nginx.conf
serevr {…………location /group1/M00 {ngx_fastdfs_module;}…………
}

浏览器访问图片,访问前面保存的链接即可

13.部署 nginx 代理(在 105 主机上配置)

跳过安装nginx环节,直接配置nginx配置文件

[root@localhost ~l# vim /usr/local/nginx/conf/nginx.confhttp {…………upstream fdfs_server_group1 {server 192.168.10.103:80 weight=1;server 192.168.10.104:80 weight=2;}…………serever {…………//直接修改原有的location即可location / {proxy_pass http://fdfs_server_group1;}…………}
}

访问前面保存的路径,但IP可以改为105

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

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

相关文章

56 网络层

本节重点 理解网络层的作用,深入理解IP协议的基本原理 对整个TCP/IP协议有系统的理解 对TCP/IP协议体系下的其他重要协议和技术有一定的了解 目录 前置认识ip协议基本概念协议头格式网段划分特殊的ip地址ip地址的数量限制私有ip和公有ip路由路由表生成算法 在复杂…

Wi-SUN无线通信技术 — 大规模分散式物联网应用首选

引言 在数字化浪潮的推动下,物联网(IoT)正逐渐渗透到我们生活的方方面面。Wi-SUN技术以其卓越的性能和广泛的应用前景,成为了大规模分散式物联网应用的首选。本文将深入探讨Wi-SUN技术的市场现状、核心优势、实际应用中的案例以及…

使用html2pdf实现前端页面打印,批量打印导出为PDF

// 使用注意&#xff1a; // 如果页面中有图片会因为跨域问题导致图片下载不下来 // 所以在图片标签中需要加入一些属性&#xff1a;crossOrigin 和 url后加一个随机后缀 // <Image crossOrigin"anonymous" src{${faceInfo.user_face_url}?v${new Date()}} width…

一些和颜色相关网站

1.中国传统色 2.网页颜色选择器 3.渐变色网站 4.多风格色卡生成 5.波浪生成 6.半透明磨砂框

第123天:内网安全-域防火墙入站出站规则不出网隧道上线组策略对象同步

目录 案例一&#xff1a; 单机-防火墙-限制端口\协议出入站 案例二&#xff1a;不出网的解决思路 入站连接 隧道技术 案例三&#xff1a;域控-防火墙-组策略对象同步 案例四&#xff1a;域控-防火墙-组策略不出网上线 msf cs 案例一&#xff1a; 单机-防火墙-限制端口\…

PHP MySQL Update

PHP MySQL Update 在PHP开发中&#xff0c;与MySQL数据库的交互是至关重要的。其中&#xff0c;更新数据库中的数据是一项基本且常见的操作。本文将详细介绍如何使用PHP来更新MySQL数据库中的数据。 1. 环境准备 在开始之前&#xff0c;请确保您的开发环境满足以下条件&…

RabbitMQ的学习和模拟实现|sqlite轻量级数据库的介绍和简单使用

SQLite3 项目仓库&#xff1a;https://github.com/ffengc/HareMQ SQLite3 什么是SQLite为什么需要用SQLite官方文档封装Helper进行一些实验 什么是SQLite SQLite是一个进程内的轻量级数据库&#xff0c;它实现了自给自足的、无服务器的、零配置的、事务性的 SQL数据库引擎…

CTFSHOW game-gyctf web2

【2020年新春战“疫”】game-gyctf web2 参考https://www.cnblogs.com/aninock/p/15408090.html 说明&#xff1a;看见网上好像没多少人写&#xff0c;刚好玩到这道题了&#xff0c;就写一下吧。 一、利用入口 常规套路发现www.zip然后进行代码审计 index可以包含update&…

汽车技术智能化程度不断提升,线束可靠性如何设计?

随着汽车技术的高速发展&#xff0c;汽车自动化、智能化程度的逐步提高&#xff0c;人们对汽车的安全性、舒适性、娱乐性等要求也不断提高&#xff0c;加上汽车节能减排法规的不断严峻&#xff0c;整车电气设备不断增加&#xff0c;作为连接汽车各种电器设备“神经网络”的整车…

【Ubuntu】Ubuntu20修改MAC地址

文章目录 一、临时修改MAC地址&#xff08;重启后复原&#xff09;二、永久修改MAC地址 场景&#xff1a;在做虚拟机复制时&#xff0c;复制完的两台虚拟机存在相同MAC&#xff0c;导致无法分别分配IP。 解决&#xff1a;修改一台虚拟机的MAC地址。 一、临时修改MAC地址&#…

谷粒商城实战笔记-跨域问题

一&#xff0c;When allowCredentials is true, allowedOrigins cannot contain the special value “*” since that cannot be set on the “Access-Control-Allow-Origin” response header. To allow credentials to a set of origins, list them explicitly or consider u…

余弦退火示例pytorch

余弦退火学习率调度器是一种用于动态调整学习率的方法&#xff0c;能够在训练过程中逐渐降低学习率&#xff0c;从而有助于模型更好地收敛。我们可以通过PyTorch中的torch.optim.lr_scheduler.CosineAnnealingLR来实现这种调度器。 下面是一个包含3层Conv2d模型的示例&#xf…

数据清洗系统设计

设计一个高效的数据清洗系统旨在确保数据的质量&#xff0c;以便后续分析和决策过程可以基于准确、一致和完整的信息。以下是设计实时数据清洗系统时需要考虑的关键要素&#xff0c;结合之前提到的设计目标和原则&#xff1a; 1. 高效的数据处理 技术选型&#xff1a;采用并行…

Linux基于CentOS7【yum】【vim】的基础学习,【普通用户提权】

目录 yum生态 什么是yum yum是如何得知目标服务器的地址和下载链接 vim vim模式 命名模式 光标移动 插入模式 i键插 a键插 o键插 底行模式 批量化注释 批量化去注释 创建vim配置文件 例子 高亮功能&#xff1a; 缩进功能&#xff1a; 符号位自动补齐功能…

面试题002:Java的数据类型

基本数据类型&#xff1a;包括 整数类型&#xff08;byte、int、short、long&#xff09;、浮点数类型&#xff08;float、double&#xff09;、字符类型&#xff08;char&#xff09;、布尔类型&#xff08;boolean&#xff09;。 引用数据类型&#xff1a;包括数组&#xff0…

win10安装ElasticSearch7.x和分词插件

说明&#xff1a; 以下内容整理自网络&#xff0c;格式调整优化&#xff0c;更易阅读&#xff0c;希望能对需要的人有所帮助。 一 安装 Java环境 ElasticSearch使用Java开发的&#xff0c;依赖Java环境&#xff0c;安装 ElasticSearch 7.x 之前&#xff0c;需要先安装jdk-8。…

梅卡曼德高精度 DLP 结构光焊接专用 3D 相机

精度高&#xff0c;抗环境光、抗反光&#xff0c;成像效果好 自研蓝光 DLP 投影技术及双目结构光 3D 成像算法&#xff0c;相 机精度高&#xff0c;抗环境光、抗反光性能优异。在实际场景中&#xff0c; 可对各类复杂焊接件、焊缝高质量成像。 超小体积&#xff0c;超强适…

UFO:革新Windows操作系统交互的UI聚焦代理

人工智能咨询培训老师叶梓 转载标明出处 人机交互的便捷性和效率直接影响着我们的工作和生活质量。尽管现代操作系统如Windows提供了丰富的图形用户界面&#xff08;GUI&#xff09;&#xff0c;使得用户能够通过视觉和简单的点击操作来控制计算机&#xff0c;但随着应用程序功…

FTP传输的两种模式的技术原理和应用

文章目录 一、主动模式(Port Mode)二、被动模式(Pasv Mode)三、FTP的控制命令与数据传输四、FTP的安全性考虑SFTP 和 FTPS五、FTP服务器开启PASV模式的设置六、在IE浏览器中禁用PASV方式七、FTP客户端常见错误及解决办法1. 连接超时2. 数据传输中断3. 无法打开数据连接4. 权…

数据库分表实践

目录 前言 如何分表 分表带来的问题 跨库事务 分页查询&#xff0c;排序问题 联表问题 二次分表 一致性ID 前言 如果单表的数据量过大&#xff0c;则会影响查询效率。想要解决这个问题&#xff0c;显然&#xff0c;直接拆分就完事了。一张表的数据量过多&#xff0c;那…