FastDFS集群搭建

news2024/11/25 10:35:06

简介

FastDFS是什么?我们这里可以看一下度娘的解释。FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。我这里使用服务器环境是centos7

注意:FastDFS只能上传500MB的小文件

FastDFS角色简介

tracker:跟踪者,负责调度存储服务。

storage:用于文件存储。

client:调用tracker

集群示例图

FastDFS单节点安装

第一步 安装相关工具

如果已经安装vim与wget可以跳过这一步

yum -y install  vim wget unzip

-y :不经过询问直接同意所有操作

vim : linux上面一个好的文本编辑软件

wget : linux上传一个文件下载工具

第二步 安装相关依赖

yum install -y gcc-c++ perl

第三步 安装libfastcommon

大家可以直接到github上面找的到ibfastcommon。这里为了大家方便查找。我已经把把链接给大家整理好了。

happyfish100/libfastcommon​github.com/happyfish100/libfastcommon正在上传…重新上传取消

这里大家可以先下载到本地,然后再传至服务器上面。这里我使用的是xftp。具体操不在这里就不相信说了。

下载下来的是zip格式压缩包,然后,我们解压zip

unzip libfastcommon-master.zip

进入到刚刚解压的文件里面

cd libfastcommon-master/

进行编译安装

./make.sh && ./make.sh install

如上就是安装成功

第四步 安装FastDFS

同样这里我用的也是github上面的FastDFS。为此,我已经帮大家把相关的链接整理到下方了

happyfish100/fastdfs​github.com/happyfish100/fastdfs正在上传…重新上传取消

这里可以使用像上面ibfastcommon一样的方式,先下载到自己的电脑上面,再上传至服务器。

下面我们先进行解压

unzip fastdfs-master.zip

编译安装

./make.sh && ./make.sh install

安装成功如上图

第五步 修改配置文件

切换到配置文件目录下

cd /etc/fdfs/

查看所有配置文件

使用ls命令就行了

去除所有的.sample后缀

mv client.conf.sample client.conf
mv storage.conf.sample storage.conf
mv storage_ids.conf.sample storage_ids.conf
mv tracker.conf.sample tracker.conf

我们再次使用ls命令查看

可以看到我们已经去除了所有的.sample后缀

下一步,创建文件夹,分别创建client,storage,tracker文件夹

mkdir -p /home/software/fastfdfs/fdfa/client
mkdir -p /home/software/fastfdfs/fdfa/storage
mkdir -p /home/software/fastfdfs/fdfa/tracker

下面我们开始配置文件修改,首先修改的是clietn.conf,使用vim编辑器进行文件的编辑

vim client.conf

使用 :set number 显示行数

修改第十行,确定日志文件文件日志,这里用我们刚刚创建client文件夹路径

base_path=base_path=/home/software/fastfdfs/fdfa/client

修改第14 行,tracker的地址与端口,这里我使用的是虚拟机,而且我的tracker等会和我的storage在同一台服务器启动,我的是192.168.223.19。大家这里根据实际情况修改

tracker_server=192.168.223.19:22122

这里大家大家记得保存修改

下面我们修改storage.conf。同上是用vim进行修改

修改第41行 storage基础路径,上面我们已经创建了这个目录

base_path=/home/software/fastfdfs/fdfa/storage

修改第110行,storage路径。storage.conf已经说了如果这个路径不存在,会依照base_path.为了不出意外,我们配置一下这个路径

 store_path0=/home/software/fastfdfs/fdfa/storage

修改第119行 ,配置tracker的IP地址与端口。至于如何填写这个地址,上面配置client.conf的时候,我们就已经说过了。

tracker_server=192.168.223.19:22122

现在修改tracker.conf文件

修改第22行,修改tracker的基础路径。这个路径的文件夹我们刚刚在上面已经创建过了

base_path=/home/software/fastfdfs/fdfa/tracker

修改第54行 归属组设置

store_group=group1

第六步 启动tracker与storage

启动tracker

fdfs_trackerd /etc/fdfs/tracker.conf start

启动storage

fdfs_storaged /etc/fdfs/storage.conf start

测试是否启动成功,我们尝试上传文件。我的root文件夹下有一张图片

fdfs_test /etc/fdfs/client.conf upload /root/9d545aa4d2f1ffbecf5567ae71f4e4fb.jpg

上传成功如图所示

第七步 安装nginx访问图片

之前我写过一篇nginx安装与配置的文章。大家有兴趣的可以去阅读以下。这里我们安装的时候可能有所不同,为了大家可以结合fastdfs使用。我这里单独再说一下nginx的安装。

首先安装依赖

yum -y install gcc-c++ zlib-devel pcre-devel

下载nginx安装包

wget http://nginx.org/download/nginx-1.14.0.tar.gz

解压安装包

tar zxvf nginx-1.14.0.tar.gz

下载nginx的fastdfs模块,这里我已经帮大家把这个项目github地址整理好了。

happyfish100/fastdfs-nginx-module​github.com/happyfish100/fastdfs-nginx-module正在上传…重新上传取消

这里我们可以先下载到自己电脑上,再上传服务器。

进行解压

unzip fastdfs-nginx-module-master.zip

创建nginx安装目录

mkdir -p /home/software/nginx

切换到nginx压缩包的解压目录里面去

cd nginx-1.14.0

进行配置检测并且添加模块

./configure --prefix=/home/software/nginx --add-module=/home/software/fastdfs-nginx-module-master/src

--prefix : 我们刚刚创建的nginx的安装目录

--add-module:解压后模块所在目录,记得要加上src

成功

编译并安装

make && make install

复制配置文件至/etc/fdfs里面去

切换至fastdfs的解压包里面去

cd /home/software/fastfdfs/fastdfs-master

进行文件的复制

cp conf/http.conf /etc/fdfs/
cp conf/mime.types /etc/fdfs/

切换至fastdfs-nginx-module的解压目录下面

cd /home/software/fastdfs-nginx-module-master

进行配置文件的复制

cp src/mod_fastdfs.conf /etc/fdfs/

修改/etc/fdfs下面的mod_fastdfs.conf配置文件

vim /etc/fdfs/mod_fastdfs.conf

修改 40行,更改tracker的ip地址与端口

tracker_server=192.168.223.19:22122

修改53行 url地址中是否包含组名

url_have_group_name = true

修改62行 storage所在目录

store_path0=/home/software/fastfdfs/fdfa/storage

保存修改

进行nginx配置文件的修改,首先切换到nginx的安装目录下面

cd /home/software/nginx

进行nginx.conf的修改,找到44行,注释掉44 45行,下面添加一行

ngx_fastdfs_module;

启动nginx,切换到nginx安装目录下的sbin目录下面去,先进行配置文件的检验。如果配置检验没问题。再启动nginx

切换到sbin目录

cd /home/software/nginx/sbin/

配置文件检测

./nginx -t -c /home/software/nginx/conf/nginx.conf

显示 is ok没有任何问题,现在启动nginx

./nginx

依照上面的方式,我们上传一张图片。并进行访问

测试是否启动成功,我们尝试上传文件。我的root文件夹下有一张图片

fdfs_test /etc/fdfs/client.conf upload /root/9d545aa4d2f1ffbecf5567ae71f4e4fb.jpg

上传成功,访问下面的地址。我这里关闭了防火墙。如果我们的服务器有防火墙,记得打开80端口

我们访问地址,图片已经出来,说明我们可以正常访问。

FastDFS多节点安装

第一步 规定storage与tracker服务器

这里我用的是虚拟机,我这里在四台虚拟机上面都安装了单节点的fastdfs。我的四台虚拟机的ip如下。

  • 192.168.223.15
  • 192.168.223.16
  • 192.168.223.17
  • 192.168.223.18

192.168.223.15 所属组:group1 角色:storage,tracker1

192.168.223.16 所属组:group1 角色:storage

192.168.223.17 所属组:group2 角色:storage,tracker2

192.168.223.18 所属组:group2 角色:storage

第二步 修改配置文件

由于FastDFS单节点使用的组都是group1.所以192.168.223.15这台机器上的配置不需要做任意修改。所以我们需要修改的地方其实是其他三台服务器。下面我会逐个说明如何改。

首先我们需要改的是192.168.223.16。由上面的分配我们可以知道。他们都是group1,所以我们只需要把tracker的ip指向192.168.223.15 详细的修改如下。首先我们需要进入到192.168.223.16的/etc/fdfs的目录下面。这一步我们做了很多遍。这里就不演示了。接下来进行文件的修改

修改client.conf 第14行

tracker_server=192.168.223.15:22122

修改 storage.conf 第119行

tracker_server=192.168.223.15:22122

修改 mod_fastdfs.conf 第40行

tracker_server=192.168.223.15:22122

接下修改的 192.168.223.17这个服务器。由上面的分配来看,它的归属组是group2。它的tracker是192.168.223.17。现在我们开始修改

修改client.conf 第14行

tracker_server=192.168.223.17:22122

修改 storage.conf 第11行

group_name=group2

修改第 119行

tracker_server=192.168.223.17:22122

修改 mod_fastdfs.conf 第40行

tracker_server=192.168.223.17:22122

修改第 47行

group_name=group2

ip为192.168.223.18 像 192.168.223.17一样修改。这样我们就完成了所有配置文件的修改

第三步 关闭,重启服务

首先我们关闭所有服务器的storage服务,tracker服务。首先查找进程然后关闭

ps -ef | grep fdfs

root后面的字段就是pid。由上面可以知道。我们的两个pid是53946,53967,现在我们把这两个进程kill掉

kill -9 53946
kill -9 53967

其他三台服务器也是这样做。

现在按照单节的方式启动。记住不是所有的服务器都要启动。storage与tracker。

192.168.223.15 启动storage与tracker

192.168.223.16 启动storage

192.168.223.17 启动storage与tracker

192.168.223.18 启动storage

重启nginx服务,启动方式,先进入到nginx安装目录下的sbin目录,执行重启命令

./nginx -s reload

第四步 测试

我们在192.168.223.16 上传一张图片,然后用192.168.223.15的ip访问。因为同一个组的storage会进行文件同步

这里可以看到上传后得到的url是192.168.223.15服务器上面的。我们用ip 192.168.223.16 与 192.168.223.15 都访问一遍

可见都是可以访问的到的。到此我们就成功的进行了FastDFS的搭建,大家如果在实际操作中遇到了什么问题,可在评论区里留言

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

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

相关文章

Python base64模块加密解密

一、为何使用base64加密解密 为了安全机制的系统,在用户登录的时候,会采用一系列措施保护用户信息,防止程序被攻击,比如:将用户输入的密码加密处理,在控制台看请求接口看到的密码是加密过的密码&#xff0c…

前端 Chrome 插件推荐

1.Ajax Interceptor 场景: 1.前端本地在开发,后端接口还没好,可以提前mock数据,并且真实的模拟网络请求。可以对代码不侵入的方式,提高编码效率。后面真实联调速度就会快很多。 2.当你参与项目的一部分开发的时候&a…

WPF实现PasswordBox切换明密功能

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

生产mysql遇到kill不掉的sql的解决方法

一、问题描述 今天上线,生产mysql有个2700万数据的大表lt_integral_detail_info,准备给这个表加字段、加索引; 执行加字段加索引的命令比较费时,结果这时有人对这个表执行了多个select count(*)操作,导致直接把Navic…

SQL优化(5):limit优化

在数据量比较大时,如果进行limit分页查询,在查询时,越往后,分页查询效率越低。 我们一起来看看执行limit分页查询耗时对比: 找一个有1000W数据量的表进行测试分析 查询前10条数据分页,耗时0.03秒 查询100…

【力扣】二叉树的分层遍历1和2

二叉树的分层遍历1 链接:二叉树的分层遍历1: 首先,我们需要知道什么是二叉树的层序遍历。二叉树的层序遍历是一种按照树的层次从上到下,从左到右访问每个节点的方法。例如,对于下面这棵二叉树: 1/ \2 3…

Linux_红帽8学习笔记分享_7(Crontab计划任务+NTP时间同步服务器)

Linux_红帽8学习笔记分享_7(Crontab计划任务NTP时间同步服务器) 文章目录 Linux_红帽8学习笔记分享_7(Crontab计划任务NTP时间同步服务器)1. 系统时间1.1查看系统时间1.2设置系统时间 2.周期性计划任务2.1认识周期性任务服务2.2寻找定时文件的配置文件2.3用户定时任务的格式2.4…

行业方案|智能网联汽车数据安全治理框架

近年来,信息技术的快速发展,加快了汽车产业的变革。与此同时,随着智能化、网联化的推进,汽车的数据安全问题也日益凸显。当下,如何保障数据安全,成为影响智能汽车产业健康发展的关键问题。 4月18日&#x…

Linux Ansible创建任务并执行

目录 通过add-hoc执行anbise任务 通过Playbook剧本方式执行任务 Playbook包含的常用对象 Yaml语法 对Yaml格式自动对齐 Playbook语法检测与执行 Playbook任务实施 Playbook特权升级 Playbook常用模块 软件包管理模块 用户管理模块 存储模块管理 文件操作相关模块 …

GPT-3 论文阅读笔记

GPT-3模型出自论文《Language Models are Few-Shot Learners》是OpenAI在2020年5月发布的。 论文摘要翻译:最近的工作表明,通过对大量文本进行预训练,然后对特定任务进行微调(fine-tuning),在许多NLP任务和基准测试上…

TYPE-C口是怎么样的接口?它有什么功能强大的地方?

C口指的是USBType-C接口。USBType-C,又称USB-C,是一种通用串行总线(USB)的硬件接口形式,外观上最大特点在于其上下端完全一致与Micro-USB相比不再区分USB正反面。 认识了Type-C的外观之后,我们来一起看一下它是怎么产生的。早在20…

QT with OpenGL(IBL-镜面反射)

文章目录 预滤波generate Mipmap获取每一层级的预滤波图prefilterMap Shader重要性采样效果展示 预过滤卷积的亮点解决方法代码解析首先得确保我们被采样的环境贴图有mipmap贴图通过计算决定使用那一层mipmap值 效果 预计算BRFD生成LUT图 IBL Shading渲染结果与教材的不同最终结…

(C语言版)力扣(LeetCode)189. 轮转数组官方3种解法分析

轮转数组 题目第一种解法:额外数组第二种解法:环状替换第三种解法:翻转数组结语 题目 题目链接:轮转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: num…

实战项目:手把手带你实现一个高并发内存池

项目介绍 1.这个项目做的是什么? 当前项目是实现一个高并发的内存池,他的原型是google的一个开源项目tcmalloc,tcmalloc全称Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替…

Java——字符串的排列

题目链接 牛客网在线oj题——字符串的排列 题目描述 输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。 例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。 数…

【SpringMVC】| SpringMVC 入门

目录 一:SpringMVC 入门 1. SpringMVC简介 2. SpringMVC的优点 3. SpringMVC的优化 4. SpringMVC执行的流程 5. 基于注解的SpringMVC程序 图书推荐 一:《Spring Boot进阶:原理、实战与面试题分析》 二:《深入理解Java虚拟…

19.网络爬虫—照片管道

网络爬虫—照片管道 Scrapy基础Scrapy运行流程原理Scrapy的工作流程 scrapy照片管道实战演示设置图片路径配置爬虫解析数据运行爬虫查看文件 后记 前言: 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️:Python领域…

C++ Primer笔记——排列算法(next_permutation、prev_permutation、is_permutation)

目录 概述 ①next_permutation ②prev_permutation ③is_permutation 概述 页数&#xff1a;P778 &#xff08;A.2.7 排列算法&#xff09; 头文件&#xff1a;<algorithm> 函数名&#xff1a;next_permutation & prev_permutation & is_permutation C为…

信息安全复习七:报文鉴别与哈希函数

一、章节梗概 1.安全服务与安全需求 2.报文鉴别的安全需求 3.对报文加密来实现报文鉴别 4.报文鉴别码 5.哈希函数 6.生日攻击 二、安全服务与安全需求 2.1 引入 通信保密可以概况所有的安全需求吗? 不能&#xff0c;信息安全需求有很多种&#xff0c;通信保密只是一种安全…

2023移动云大会 | “六大”服务承诺 全力做优“心级服务”

4月25日&#xff0c;以“云擎未来 智信天下”为主题的2023移动云大会在苏州金鸡湖国际会议中心举办&#xff0c;众多政府领导、院士专家、知名企业客户与合作伙伴高层等数千名嘉宾齐聚一堂。 大会期间&#xff0c;移动云深入践行“为国建云”的使命&#xff0c;推出“六大”服…