FastDFSのクラスタ構成(転載)

この記事はから::再現される https://blog.csdn.net/xiaoweiqb/article/details/68065618

究極の目標を設定します

4つのサービスは、クラスタ、トラッカーなどの2つのセットを行い、ストレージノードとして、トラッカーは最初のクライアントとして起動した後、これは、同義的に純粋なストレージノードなど、他の2を使用することができ、リーダーとしてスタートし、割り当てるために、2つのグループは、GROUP1があります以下の説明とグループ2サーバー:

192.168.10.152トラッカーリーダーグループ1、ストレージ1

192.168.10.153トラッカークライアントグループ1、storage2

192.168.10.154グループ2、ストレージ1

192.168.10.155グループ2、storage2

これらは、クラスタ構成の究極の目標です

 

回路図:



環境と前提条件

オペレーティングシステム

必要な依存関係

説明依存性

依存順序

ダウンロード

CentOSの7

GCC

Cファイルには、必要な依存関係をコンパイルします

1

 

YUMのgccをインストール-y

GCC-C ++

C ++コンパイラに依存ファイルが必要

2

 

yumのGCC-Cをインストール-y ++

解凍

zipアーカイブを解凍

3

 

yumの解凍をインストール-y

vimの

シェルエディタ

4

 

YUMのvimをインストール-y

PCREのPCRE-develの

nginxの必要な依存関係

5

 

yumのPCREのPCRE-develのインストール-y

zilbのZLIB-develの

nginxの必要な依存関係

6

 

YUMたzlibはzlib-develのインストール-y

openssl opensslの-develの

nginxの必要な依存関係

7

 

YUMのopensslのopenssl-develのインストール-y

PCRE

PCREライブラリ

8

8.00

https://ftp.pcre.org/pub/pcre/pcre-8.00.tar.gz

zlibの

zlibライブラリ

9

1.2.11

http://www.zlib.net/zlib-1.2.11.tar.gz

openssl

openssl 类库

10

1.1.0e

https://www.openssl.org/source/openssl-1.1.0e.tar.gz

libfastcommon-master

fastDFS 所需依赖

11

1.0.35

https://github.com/happyfish100/libfastcommon/archive/master.zip

fastdfs

fasdfs 安装包

12

5.09

https://github.com/happyfish100/fastdfs/archive/V5.09.tar.gz

fast-nginx-module

nginx 的FastDFS插件

13

 

https://github.com/happyfish100/fastdfs-nginx-module/archive/master.zip

nginx

nginx 安装包

14

1.8.1

http://nginx.org/download/nginx-1.8.1.tar.gz


安装部署

依赖顺序直接跳至8,1-7都可以使用centos的命令安装,一般不会出现错误,但一定要执行1,2,5,6,7依赖,不然会出现未知错误,下面开始需要手动安装的步骤

说明

以下操作都是在192.168.10.152机器上操作,为确保安装fasdfs不报错,为了保险起见,还是先安装pcre,zlib,openssl这三个包,安装方法基本一致,解压其tar.gz包,进入该目录,./configure & make &make install 除了openssl是./config 其他的make & make install都一致。

安装libfastcommon-master依赖包

安装完三个依赖包后,进行fasdfs安装,安装fastdfs前需要安装


      
      
  1. unzip libfastcommon-master.zip
  2. cd libfastcommon-master
  3. ./ make.sh
  4. ./ make.sh install


至此libfastcommon就已经安装成功了,但注意一下上图中红色框标注的内容,libfastcommon.so 默认安装到了/usr/lib64/libfastcommon.so,但是FastDFS主程序设置的lib目录是/usr/local/lib,所以此处需要重新设置软链接(类似于Windows的快捷方式):


      
      
  1. ln -s /usr/lib64/libfastcommon.so /usr/local/ lib/libfastcommon.so
  2. ln -s /usr/lib64/libfastcommon.so /usr/ lib/libfastcommon.so
  3. ln -s /usr/lib64/libfdfsclient.so /usr/local/ lib/libfdfsclient.so
  4. ln -s /usr/lib64/libfdfsclient.so /usr/ lib/libfdfsclient.so

安装fastDFS


       
       
  1. tar -xzf fastdfs -5.0 .9.tar.gz
  2. cd fastdfs -5.0 .9/
  3. ./ make.sh
  4. ./ make.sh install

如果成功,则看见以 fi 结尾



安装成功后,会在etc目录下生成fdfs目录,里面是fdfs的配置文件,现在先拷贝文件




初始化文件路径

为要配置FastDFS,所以也要创建写入日志与data的地方,创建目录:



     
     
  1. mkdir /opt/fastdfs_tracker
  2. mkdir /opt/fastdfs_storage
  3. mkdir /opt/fastdfs_storage_data

配置

因为先要配置tracker所以以152机器先启动tracker为例启动第一个trcker节点

vim /etc/fdfs/tracker.conf
   
   

因为tracker修改的地方不多,所以以下只列举修改的地方:

base_path=/opt/fastdfs_tracker

store_lookup=0 //一般不用配置,因为这里是为了做集群上传测试能看到分别上传到其他节点,所以设置为0,表示循环上传到goup 节点中,那么如果集群中有3个节点,则会依次上传到group1,group2,group3,group1,group2...以此循环

store_group=group1 //因为是store_lookup设置为0,则表示集群中你讲分配几个group 目前我们是设置为两个,即为goup1与group2,所以这里设置为goup1,另外153的tracker配置文件的这里则设置为group2,store_lookup也设置为0

完成后保存tracker.conf 配置文件

启动152上的tracker

/usr/bin/fdfs_trackerd/ etc/fdfs/tracker.conf
   
   

查看是否启动成功

netstat -unlpt|grep fdfs


出现对应的fdfs端口号则启动成功

查看是否报错

cat /opt/fastdfs_tracker/logs/tracker.log
   
   


出现这些log文字即表示tracker启动成功

启动153上的tracker

刚刚第5步已经提到了,153 只有store_group设置为group2以外,其他都跟152上的设置一样,配置完了启动启动结果跟152的一致

/usr/bin/fdfs_trackerd/ etc/fdfs/tracker.conf
    
    

查看端口:

netstat -unlpt|grep fdfs


出现对应的fdfs端口号则启动成功

查看日志是否报错

cat /opt/fastdfs_tracker/logs/tracker.log
    
    


ok,现在启动了两个tracker,但是还没有关联起来,也就是说还没有集群效果,下面低8步开始则配置storage,FastDFS 的核心,因为152,153都是即作为tracker又作为storage的,所以初始化文件路径的时候做了storage的操作。

配置152的storage

152为例配置

vim /etc/fdfs/storage.conf

group_name=group1 //配置当前storage节点属于哪个group

port=23000 //配置当前group的端口号

base_path=/opt/fastdfs_storage //设置storage 存放日志的路径

store_path=/opt/fastfs_storage_data //设置storage 存储路径,如果没有设置,则使用base_path,这里的路径是指文件存储的地址,而不是日志存放的路径,因为为了区分日志的data和存储文件的data所以文件路径初始化的时候就做不同的文件

tracker_server=192.168.10.152:22122

tracker_server=192.168.10.153:22122 //配置两个tracker服务器地址,两个这直接写在下面即可,三个依次添加

配置153的storage

vim /etc/fdfs/storage.conf

group_name=group1 //配置当前storage节点属于哪个group

port=23000 //配置当前group的端口号

base_path=/opt/fastdfs_storage //设置storage 存放日志的路径

store_path=/opt/fastfs_storage_data //设置storage 存储路径,如果没有设置,则使用base_path,这里的路径是指文件存储的地址,而不是日志存放的路径,因为为了区分日志的data和存储文件的data所以文件路径初始化的时候就做不同的文件

tracker_server=192.168.10.152:22122

tracker_server=192.168.10.153:22122 //配置两个tracker服务器地址,两个这直接写在下面即可,三个依次添加

两个一模一样。。。。

启动storage

首先启动152的storage

/usr/bin/fdfs_storaged/ etc/fdfs/storage.conf
    
    

查看 端口是否启动

netstat -unlpt|grep fdfs


查看日志是否报错

cat /opt/fastdfs_storage/logs/storaged.log
   
   


因为这里我是先启动的153,所以leader为153的,先启动152的,leader则为152的

查看 152机器上的tracker日志

cat /opt/fastdfs_tracker/logs/trackerd.log 
   
   


在之前的日志后面打印了选择leader的日志,这里选择153的机器为leader,同理,153的tracker也会增加日志

查看153的tracker日志:

cat /opt/fastdfs_tracker/logs/trackerd.log 
   
   

153的日志最后一条跟152的不一致,因为153作为leader,则打印的为:I am new tracker leader

152的则打印:the tracker leader is 192.168.10.153:22122

接下来配置与启动153的storage

启动跟152的一致

/usr/bin/fdfs_storaged/etc/fdfs/storage.conf
   
   

查看 端口是否启动

netstat -unlpt|grep fdfs
   
   


然后配置与启动154的storage

因为154跟155只作为单纯的storage节点,所以就不配置tracker,但是storage.conf的配置则跟152与153的不一致,下面请看配置:

vim /etc/fdfs/storage.conf
   
   

group_name=group2 //配置当前storage节点属于哪个group

port=23001 //配置当前group的端口号

不一致主要是前面2个配置,group_name与port,因为后面两个存储节点是group2的,所以只需要把端口改为23001即可

base_path=/opt/fastdfs_storage //设置storage 存放日志的路径

store_path=/opt/fastfs_storage_data //设置storage 存储路径,如果没有设置,则使用base_path,这里的路径是指文件存储的地址,而不是日志存放的路径,因为为了区分日志的data和存储文件的data所以文件路径初始化的时候就做不同的文件

tracker_server=192.168.10.152:22122

tracker_server=192.168.10.153:22122 //配置两个tracker服务器地址,两个这直接写在下面即可,三个依次添加

启动 154的storage

启动方式跟查看端口日志不再累述

最后配置与启动155的storage

vim /etc/fdfs/storage.conf
   
   

group_name=group2 //配置当前storage节点属于哪个group

port=23001 //配置当前group的端口号

不一致主要是前面2个配置,group_name与port,因为后面两个存储节点是group2的,所以只需要把端口改为23001即可

base_path=/opt/fastdfs_storage //设置storage 存放日志的路径

store_path=/opt/fastfs_storage_data //设置storage 存储路径,如果没有设置,则使用base_path,这里的路径是指文件存储的地址,而不是日志存放的路径,因为为了区分日志的data和存储文件的data所以文件路径初始化的时候就做不同的文件

tracker_server=192.168.10.152:22122

tracker_server=192.168.10.153:22122 //配置两个tracker服务器地址,两个这直接写在下面即可,三个依次添加

启动 155的storage

启动方式跟查看端口日志不再累述

目前我们依次启动了:

152 的tracker,153的tracker,152的storage,153的storage,154的storage,155的storage

现在我们来查看集群状态:

在启动stroage的任意一台机器上都可以查看集群状态:

例如:在155上查看:

/usr/bin/fdfs_monitor  /etc/fdfs/storage.conf
   
   

首先查看前面部分:


看这里说明了启动2个tracker由server_count=2表示,启动了2个group由group count:2表示

再查看:


这里写明group1的配置,disk total space,则为总容量,disk free space 为可用容量

再看storage1:

主要看后面这个ACTIVE

这里列出几个常见的状态:

ACTIVE表示可用状态,也就是正常的,成功的

WAIT_SYNC:等待同步,一般出现这个状态基本上是由于添加了新存储节点造成,一般正常情况下一会就会同步完成

SYNCING:同步中,添加新节点一般会在新添加的storage节点显示该状态,说明正在同步

DELETE:删除storage节点,一般删除后会显示该状态,重启tracker服务器则不再看见该状态的storage节点,删除指令为:/etc/fdfs/client.conf delete groupxx 192.168.xx.xx 这里的client.conf配置很简单,只需要配置上base_path=/opt/fastdfs_storage 与tracker_server 既可,当然tracker_server如果是集群,则写集群的所有tracker服务器

OFFLINE:离线,不能提供服务,一般是由于先启动两个tracer节点,没有启动任何节点是storage造成,解决原因就是启动storage就可以了,但是这个一般是由于配置成功过一次后关机再启动tracker没有启动storage造成的。

INIT:初始化

我们继续查看集群情况:

这里是153的storage节点,归属group1:


这里是154的stroage节点,归属到group2中去了


这里是155的stroage节点,归属到group2中去了:


到这里fastdfs的纯集群配置完成,下面我们来尝试模拟生产环境进行添加一个storage节点,并分配一个group3,把新增的storage节点归属到group3中并完成同步操作

1.添加一个storage节点

同理 我们开辟一个新的机器,ip为192.168.10.156,则只配置storage的

group_name=group3

port=23002

tracker_server=192.168.10.152:22122

tracker_server=192.168.10.152:22122

base_path与store_path0则为152,153,154,155的一致,前提需要初始化文件路径

注意:如果156之前作为storage为其他tracker的storage,则需要删除/opt/fastdfs_storage_data/data的所有数据

因为156我之前做过一个storage则需要执行 rm -rf /opt/fastdfs_storage_data/data

如果是新增加的则不需要执行这一步操作,如果不执行这一步操作,则无法同步。。。也就是会造成集群状态的group3节点的storage1位WATI_SYNC状态。

下面启动stroage

端口就不查看了,直接查看log

cat /opt/fastdfs_storage/logs/storage.log
   
   


查看到创建文件data数据后报错,tracker 153连接返回 status 2!=0

查看半天发现配置正确,日志报错,找了很多资料后没有解决,后来想了下是不是防火墙问题,果断执行关闭防火墙操作

service firewalld stop 
   
   

停止防火墙


systemctl disable firewalld
    
    

禁用防火墙,完全关闭,开机不启动

再查看日志:


原来是防火墙的问题,再查看集群stroage状态:


到这里集群的添加节点配置已经达到理想状态,

如果删除节点,在上面我已近提到过直接命令操作既可

接下来我们进行测试上传文件

添测试进行文件上传

因为我们配置tracker的时候设置了上传以循环group的方式进行上传,那么分别上传3个文件,看看返回的是否是group1/M00/xxx

group2/M00/xxx

group3/M00/xxx

的方式

随便找一太机器进行上传,以152作为上传节点吧,那么配置client.conf ,

设置

base_path=/opt/fastdfs_storage

tracker_server=192.168.10.152:22122

tracker_server=192.168.10.153:22122

vim test1.txt 输入11111,保存3个分别为test1.txt test2.txt test3.txt


可以看到,group2上传失败,是不是防火墙原因呢:

关闭154上的防火墙:

再继续进行上传:

Ok上传成功!

添安装Nginx,提供http的下载

因为FastDFS 的http服务太弱,无法提供负载均衡等服务,所以需要借助nginx来进行http访问的负载

下面进行配置 nginx与fast-nginx-module

解压nginx 


      
      
  1. cd nginx
  2. ./configure --prefix= /usr/local/nginx/ --add- module= /home/downloads/fast-nginx- module/src

 进行安装

解复制FastDFS目录下的文件 

conf中的http.conf  mime.types 两个文件到 /etc/fdfs/ 下,不然启动nginx会报错

 创建软连接

ln -s /opt/fastdfs_storage_data/data/ /opt/fastdfs_storage_data/data/M00 
    
    

 //创建软连接的目的是为了nginx能够访问储存路径的时候能直接访问到M00的数据,

复制mod_fastdfds.conf

cp fast-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
    
    

复制fastdfs-nginx-module下的mod_fastdfds.conf 至 /etc/fastdfs/下,并编辑,编辑几个主要属性

base_store=/opt/fastdfs_storage //也就是存储日志目录

tracker_server=192.168.10.152:22122

tracker_server=192.168.10.153:22122

storage_server_port=23000 //表示当前机器的storage的端口,因为是152的机器,152的storage端口为2300,所以这里设置为23000

group_name=group1 //这里也表示当前机器storage的group名称,因为152的storage的group名称为group1,所以这里设置为group1

store_path0=/opt/fastdfs_storage_data //这里表示存储路径

group_count=3 //这里表示集群中group的数量,因为我们只开辟了3个,所以设置为3,那么以下的设置就要写3个,分别表示3个group的信息,下面分别设置了3个group的信息:

[group1]

group_name=group1

storage_server_port=2300

store_path_count=1

store_path0=/opt/fastdfs_storage_data

 

[group2]

group_name=group2

storage_server_port=2301

store_path_count=1

store_path0=/opt/fastdfs_storage_data

 

[group3]

group_name=group3

storage_server_port=2302

store_path_count=1

store_path0=/opt/fastdfs_storage_data

 

ok,这里的mod_fastdfs.conf 的配置已经完成,接下来最后一步就是设置nginx

配置nginx

打开ngxin的配置文件 

vim /usr/local/ngxin/conf/nginx.conf
     
     

编辑3行代码:


完成,保存后启动:

/usr/local/nginx/sbin/nginx 
     
     

启动成功后会有pid号:



然后查看nginx日志:

cat /usr/loca/nginx/logs/error.log
    
    




这里看到storage_server_port =23000,可能有疑问,为什么只有23000,那么23001,23002去哪里了呢?其实这里的23000表示本地机器storage的端口,如果在storage的端口为23001的机器上启动ngxin的话, 那么这里也会是23001

OK,nginx 配置启动完成,那么现在我们来看看刚刚上传的3个文件是否能通过http协议访问,打开浏览器,输入

192.168.10.152/group1/M00/00/00/wKgKmFjbH0qAG0HZAAAABTzXiJY913.txt

192.168.10.152/group2/M00/00/00/wKgKmljbH1eAQfcuAAAABj_dUtU558.txt

192.168.10.152/group3/M00/00/00/wKgKnFjbH2KAdeXPAAAABSJTpW4319.txt


结果分别是:grou1的为:


结果分别是:grou2的为:


结果group2报错,访问不了,我们查看下nginx的日志

cat /usr/local/nginx/logs/error.log
   
   


截图字太小,贴出来:

2017/03/29 11:01:57 [error] 2394#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.10.1, server: localhost, request: "GET /group2/M00/00/00/wKgKmljbH1eAQfcuAAAABj_dUtU558.txt HTTP/1.1", upstream: "http://192.168.10.154:80/group2/M00/00/00/wKgKmljbH1eAQfcuAAAABj_dUtU558.txt?redirect=1", host: "192.168.10.152"

2017/03/29 11:03:11 [error] 2394#0: *3 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.10.1, server: localhost, request: "GET /group2/M00/00/00/wKgKmljbH1eAQfcuAAAABj_dUtU558.txt HTTP/1.1", upstream: "http://192.168.10.154:80/group2/M00/00/00/wKgKmljbH1eAQfcuAAAABj_dUtU558.txt?redirect=1", host: "192.168.10.152"

日志说group2/xxx/xxx 无法upstream到154的80,忘了最后一件事件,就是所有当做stroage的节点机器都必须启动nginx做为storage负载,所以,这里除了152,153,那么剩下的154,155,156都需要启动nginx,下面则列举154与156的,155的就不累述了

 

配置154:

mod_fastdfs.conf 则按照152的配置来

group_name=group2

store_server_port=23001

url_have_group_name=true

group_count=3

因为154上的storage的group_name为group2,所以要设置为group2,另外,后面的跟152一致

然后nginx.conf 配置:



156的配置完成后启动nginx

然后再来访问:

192.168.10.152/group2/M00/00/00/wKgKmljbH1eAQfcuAAAABj_dUtU558.txt

192.168.10.152/group3/M00/00/00/wKgKnFjbH2KAdeXPAAAABSJTpW4319.txt

查看结果:group2



ok没问题!

查看结果group3



总结

FastDFS的集群配置到目前为止已经完全结束了,完成了安装依赖,配置,添加节点,数据同步,上传测试,下载测试,下载负载均衡等功能,遇到防火墙等问题,都给出了解决方法





おすすめ

転載: www.cnblogs.com/scChen/p/11519723.html
おすすめ