文档章节

手把手教你搭建FastDFS集群(中)

舒运
 舒运
发布于 2017/06/20 13:57
字数 3002
阅读 19
收藏 0
点赞 0
评论 0

上一篇博客,我们一起搭建了storage和tracker集群,FastDFS集群还未搭建完毕,不过由于篇幅过长,因此需要分成两篇来写。

一、tracker和storage集群上传图片测试

        由于目前还没有搭建完集群,因此我们暂且在tracker的一台设备上(我们就选择192.168.156.5这台设备)使用client来上传图片进行测试。

        1.进入到/etc/fdfs/目录下,我们可以看到client.conf.sample这么一个配置文件,如下图所示。

        2.我们使用命令:cp client.conf.sample client.conf复制一份该文件并命名为client.conf,如下图所示。

        3.修改client.conf配置文件,使用命令:vim client.conf,需要修改的配置有base_path=/fastdfs/tracker、tracker_server=192.168.156.5:22122和
tracker_server=192.168.156.6:22122,如下图所示。其中/fastdfs/tracker这个目录我们已经创建过了,因此这时不需要再创建了。

       4.下面我们来上传一张图片,我把/usr/local目录下一张3.jpg图片上传,使用的命令:/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf /usr/local/3.jpg,可以看到这条命令由3部分组成,第一部分是/usr/bin/fdfs_upload_file,意思是指定要进行上传文件操作,第二部分是/etc/fdfs/client.conf,意思是指定上传操作使用的配置文件,这个配置文件就是我们上面刚配置过的client.conf文件,第三部分是/usr/local/3.jpg,意思是指定要上传哪个目录下的哪个文件。按回车执行上传命令后,会返回一个串:group1/M00/00/00/wKicB1jjiFmAOUdkAAHk-VzqZ6w720.jpg,其中group1表示这张图片被保存在了哪个组当中,M00代表磁盘目录,如果电脑只有一个磁盘那就只有M00, 如果有多个磁盘,那就M01、M02...等等。00/00代表磁盘上的两级目录,每级目录下是从00到FF共256个文件夹,两级就是256*256个。wKicB1jjiFmAOUdkAAHk-VzqZ6w720.jpg表示被存储到storage上的3.jpg被重命名的名字,这样做的目的是为了防止图片名字重复。

       我们到两组group所在的四台设备的/fastdfs/storage/data/00/00目录下查看一下是否有我们刚才上传的图片,发现192.168.156.7和192.168.156.8两台设备上有该图片,而192.168.156.9和192.168.156.10两台设备上没有该图片。这是由于192.168.156.7和192.168.156.8两台设备属于group1,而192.168.156.9和192.168.156.10属于group2,返回的图片信息中明确说明了存储在了group1下面,因此可group2下面是没有该图片的。

        我们在搭建集群的时候,配置的策略是轮询策略,那么我们现在再上传一次该图片,看是否会存储到group2下面。如下图所示,发现这次返回的路径信息中显示存储到了group2下面。

        下面再到四台设备下的/fastdfs/storage/data/00/00目录下查看下图片信息,发现192.168.156.7和192.168.156.8这两台设备的图片还是刚才那一张,并没有新增图片。而192.168.156.9和192.168.156.10这两台设备上新增了我们刚才上传的图片,这说明第二次上传确实是存储到了group2上面。

         大家可以多次上传图片,就可以看到存储确实是一次group1,一次group2,轮询进行存储的,如下图所示。

      这里说一个情况,那就是同处一个组的某台设备如果发生了故障,那么这时上传的文件将只能存放到其它同组设备上,等故障设备修复后,同组的其它设备会自动将数据同步到该故障设备上,这个不用我们干预。

二、配置Ngnix

        1.到目前为止,我们还是不能够使用http方式来上传或下载文件的,因此我们需要配置下nginx来达到这个目的。我们先关闭除两个组所在的四台之外的其它所有设备,然后把剩下的这四台设备切换到/usr/local/software目录下,如下图所示。

       2.这四台设备都需要执行同一个操作,那就是解压fastdfs-nginx-module_v1.16.tar.gz,我们把命令:tar -zxvf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/fast/复制到下面那个输入框中,默认情况下,在这个输入框中输入命令并按回车,命令执行的范围是当前会话,为了同时在四台设备上执行同样的命令,我们可以切换到"全部Xshell(X)"。如下图所示。

      切换到"全部Xshell(X)"后,如下图所示,可以看到输入框左边的那个图标切换成了多个窗口的图标。这时我们把鼠标放到输入框中,按回车便可同时在四台设备上执行相同的命令。

       解压信息如下图所示,其它设备我就不一一截图了。

     3.四台设备都需要进入到/usr/local/fast/fastdfs-nginx-module/src/这个目录下,因此我们把cd /usr/local/fast/fastdfs-nginx-module/src/命令放到下面的输入框中并按回车。

       我们可以看到在/usr/local/fast/fastdfs-nginx-module/src/这个目录下有个config配置文件,我们需要修改下该文件。

       我们在下面的全局输入框中输入"vim config"同时打开四台设备的该配置文件,如下图所示,该配置文件的第四行我们需要做下修改,这是因为我们前面为了查看方便而把东西放到了/usr/local/include下,但是实际执行make install安装时却安装在了/usr/include下面,也就是我们多了一层local目录,因此我们需要把该行的两个local目录去掉。

      去掉local目录后如下图所示。同样的,我们把其它三台设备的这行配置也都去掉local目录。

       4.安装nginx依赖包

        把下面四条命令执行一遍。

        yum install pcre

        yum install pcre-devel

        yum install zlib

        yum install zlib-devel

      5.安装nginx

       四台设备都进入到/usr/local/software目录下,该目录下nginx-1.6.2.tar.gz是nginx安装包。

     把解压命令:tar -zxvf nginx-1.6.2.tar.gz -C /usr/local/输入到下面的输入框中,回车即可在这四台设备上同时执行解压操作。

        安装完之后,我们都进入到/usr/local/nginx-1.6.2/目录下,然后在下面的输入框中输入命令:./configure --add-module=/usr/local/fast/fastdfs-nginx-module/src/并按回车,在四台设备上都加入下模块并进行检查。

      检查信息如下图所示。

      检查完之后,我们在下面输入框中输入命令make && make install,回车,四台设备同时执行编译安装操作。

       安装信息中没有出现错误信息,说明我们的安装成功,安装完之后,我们到/usr/local/目录下,可以看到多了一个nginx的文件夹,如下图所示。

       下面我们到/usr/local/fast/fastdfs-nginx-module/src/目录下,我们还是在输入框中输入cd /usr/local/fast/fastdfs-nginx-module/src/并回车,四台设备都进入到该目录下。

        我们将cp mod_fastdfs.conf /etc/fdfs/复制到/etc/fdfs/目录下,我们在下面输入框中输入命令cp mod_fastdfs.conf /etc/fdfs/并按回车,四台设备同时进行复制操作。

        复制完之后,我们修改/etc/fdfs/目录下的mod_fastdfs.conf,我们使用命令vim /etc/fdfs/mod_fastdfs.conf来编辑192.168.156.7上的该文件。

        需要修改的地方如下:

connect_timeout=10
tracker_server=192.168.156.5:22122
tracker_server=192.168.156.6:22122
storage_server_port=23000//默认就是2300,不用做修改
url_have_group_name=true
store_path0=/fastdfs/storage
group_name=group1
group_count=2


[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/fastdfs/storage


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

         修改后如下图所示。

       我们把192.168.156.7上的这个配置文件复制到其它三台设备上,先到/etc/fdfs/目录下,如下图所示。

       使用命令:scp  mod_fastdfs.conf 192.168.156.8:/etc/fdfs/、scp  mod_fastdfs.conf 192.168.156.9:/etc/fdfs/、scp  mod_fastdfs.conf 192.168.156.10:/etc/fdfs/进行复制。

       复制完之后,我们到8、9、10这三台设备上看下配置文件是否就是我们刚才复制过去的文件。由于192.168.156.8这台设备与192.168.156.7这台设备同属group1,因此192.168.156.8这台设备不用做修改。我们只需把192.168.156.9和192.168.156.10这两台设备的这个配置文件的group名称改为group2即可。192.168.156.9的修改如下图所示,192.168.156.10与之一样。

       接下来,我们需要把/usr/local/fast/FastDFS/conf/目录下的http.conf和mime.types两个文件复制到/etc/fdfs/目录下,由于这四台设备的这步操作都一样,因此我们在下面的输入框中输入cd /usr/local/fast/FastDFS/conf/并回车,都进入到该目录下,然后输入命令cp http.conf mime.types /etc/fdfs/并回车,在四台设备同时进行复制操作。

       复制完之后,我们给四个节点都创建一下软链接,由于步骤都一样,因此在下面输入框中输入创建软链接命令:ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00并同时执行就可以了。如下图所示。

       创建完软链接之后,我们来配置下nginx,由于四个节点操作一样,我们都进入到/usr/local/nginx/conf/这个目录下,并使用命令vim nginx.conf来编辑该文件,我们需要修改的地方有listen端口,把它由80改成8888,至于原因,是因为我们在上篇博客搭建storage的时候使用的端口是8888,因此这里也需要使用8888。另一个修改的地方是location,修改代码如下,路径采用正则表达式来匹配,匹配group0到group9下的M00前缀。由于fastdfs与nginx的模块结合,因此需要在location当中添加该模块。

 

[html] view plain copy

  1. location ~/group([0-9])/M00 {  
  2.               ngx_fastdfs_module;   
  3.         }  


 

 

       修改完192.168.156.7之后,我们把这个配置文件再复制到其它三台设备上。在用scp复制文件到其它设备的时候,反应很慢,加上-o GSSAPIAuthentication=no会快点,但还是不够快,解决办法是我们可以在/etc/hosts文件当中配置所有要通信的设备的IP和名称的映射,这样scp就很快了。

      6.四台设备都启动nginx,我们在下面的输入框中输入/usr/local/nginx/sbin/nginx并按回车,四台设备同时启动nginx。

       7.启动完nginx之后,我们现在便可以通过http的方式访问上传到FastDFS上的文件了,比如我们现在再把那个3.jpg文件上传一次并拿回显地址去访问,如下所示(注意:上传是在192.168.156.5上进行的)。

 

[html] view plain copy

  1. [root@itcast05 local]# /usr/bin/fdfs_upload_file  /etc/fdfs/client.conf /usr/local/3.jpg  
  2. group1/M00/00/00/wKicCFjj1xqAcN8EAAHk-VzqZ6w619.jpg  
  3. [root@itcast05 local]#   

       我们在地址栏输入:http://192.168.156.7:8888/group1/M00/00/00/wKicCFjj1xqAcN8EAAHk-VzqZ6w619.jpg,这时我们访问不到图片,如下图所示。

        原因是我们的虚拟机的防火墙把端口8888给阻拦了,禁止外界访问,解决方法有两个:

       1.关闭虚拟机的防火墙,并禁止开启自启动,大家可以参考:http://blog.csdn.NET/u012453843/article/details/52411019这篇博客进行防火墙的关闭操作。

       2.不关闭防火墙,只是让外界可以访问8888端口,这在实际环境中更实用,因此,我们采用方法2。

方法2的操作方法如下:

       使用命令:vim /etc/sysconfig/iptables打开编辑界面,如下图所示,我们添加的一行内容是:-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT

        编辑完之后,保存退出,之后需要重新启动防火墙,重启的命令:service iptables restart,如下图所示。

        这样192.168.156.7这台设备的防火墙我们便配置好了,其它三台设备我们也都配置一下防火墙。

        配置过防火墙之后,我们再访问http://192.168.156.7:8888/group1/M00/00/00/wKicCFjj1xqAcN8EAAHk-VzqZ6w619.jpg,这时我们便可以看到图片了,如下图所示:


© 著作权归作者所有

共有 人打赏支持
舒运
粉丝 7
博文 213
码字总数 510016
作品 0
深圳
【FastDFS】FastDFS分布式文件系统安装手册(单机版)

一、前言 FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用,高性能等指标。使用FastDFS很容易搭建...

qq_26545305 ⋅ 04/24 ⋅ 0

Ubuntu 14.04下部署FastDFS 5.08+Nginx 1.13.0

环境 Ubuntu 14.04 用户 admin 数据目录: /fastdfs 安装包:FastDFS v5.05 一、下载安装libfastcommon 1.1、上传或下载 libfastcommon-master.zip 到/usr/local/src 目录 1.2、解压 1.3、编...

paascloud ⋅ 2017/05/29 ⋅ 0

FastDFS分布式文件存储搭建

FastDFS分布式文件存储,具体介绍不在阐述,有很多相关的资料介绍。这里描述一下FastDFS存储应用的搭建过程: 一、环境: 1、操作系统 :centos6.5 2、FastDFS版本: 5.0.8 3、Nginx版本: ...

菜鸟早起 ⋅ 06/12 ⋅ 0

淘淘商城——VMware添加已配置好的虚拟机

我们有时候会碰到虚拟机环境搭建特别麻烦,很容易出错的问题,而这时我们又刚好有别人或者自己以前搭建好的虚拟机,我们便可以把搭建好的整个虚拟机copy过来供自己使用。本文就来教大家怎样在...

a_blackmoon ⋅ 05/24 ⋅ 0

1Nginx+fastdfs分布式文件存储

 准备,将所需的软件传到服务器上,服务器的列表如下: fastdfs-nginx-modulev1.15.tar.gz FastDFSv4.06.tar.gz libevent-2.0.21-stable.tar.gz nginx-1.5.6.tar.gz openssl-1.0.1c.tar......

涂作权 ⋅ 2014/12/24 ⋅ 0

centos7安装FastDFS和nginx

1.所需的安装包: 链接:https://pan.baidu.com/s/1Hm48o3aBYn0C7PyWzBGUqw 密码:kio7 2安装centos7 输入yum -y install libevent 安装FastDFS依赖libevent库...

暴走萨摩耶 ⋅ 05/26 ⋅ 0

CentOS7下分布式文件系统FastDFS的安装 配置 (单节点)

背景 FastDFS是一个开源的轻量级分布式文件系统,为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,解决了大容量存储和负载均衡的问题,特别适...

botaozhao ⋅ 04/24 ⋅ 0

Mavn 项目 引入第三方jar包 导致ClassNotFoundException

案例 我有一个Maven构建的项目,项目模块之间有依赖关系,我需要用到一个本地的jar包,而该jar包不能通过配置pom.xml文件从远程仓库自动下载,于是我直接导入该jar包到其中一个项目,不通过p...

Dylan1009 ⋅ 05/22 ⋅ 0

fastdfs+springboot

springboot整合fastdfs上传文件报错 java.net.SocketException: Connection reset by peer: socket write error at java.net.SocketOutputStream.socketWrite0(Native Method) ~[na:1.8.0_1......

feel105 ⋅ 05/02 ⋅ 0

【FastDFS】FastDFS+FastDHT完成文件上传去重

一、前言 最近公司让我搞FastDFS分布式文件系统。整个集群环境已经搭建成功啦。但是有一个问题一直困扰着我,那就是重复文件的上传。即使是同一个文件,多次上传,返回的id也是不一样的。这样...

qq_26545305 ⋅ 04/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

Java8新增的DateTimeFormatter与SimpleDateFormat的区别

两者最大的区别是,Java8的DateTimeFormatter也是线程安全的,而SimpleDateFormat并不是线程安全。 在并发环境下使用SimpleDateFormat 为了能够在多线程环境下使用SimpleDateFormat,有这三种...

人觉非常君 ⋅ 今天 ⋅ 0

多线程如何控制执行顺序

线程的生命周期说明: 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、...

MarinJ_Shao ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Django第一期

安装Django 去https://www.djangoproject.com/download/ 下载最新版的Django,然后解压放到Anaconda\Lib\site-packages目录下,然后cmd进入此目录,输入安装命令: python setup.py install ...

大不了敲一辈子代码 ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部