美学原理分布式文件系统 法斯特DFS 5.0.5 & Linux CentOS 7 安装配置(单点安装)——第壹篇

分布式文件系统 法斯特DFS 5.0.5 & Linux CentOS 7 安装配备(单点安装)——第②篇 

  • ### 简介

首先不难询问一下基础概念,法斯特DFS是三个开源的轻量级分布式文件系统,由跟踪服务器(tracker
server)、存款和储蓄服务器(storage
server)和客户端(client)多少个部分构成,首要化解了海量数据存款和储蓄难点,更加吻合以中等文件(建议范围:4KB
< file_size <500MB)为载体的在线服务。法斯特DFS的系统结构图如下:

美学原理 1

如上海教室,法斯特DFS的八个主导概念分别是:

  1. Tracker(跟踪器)
  2. Storage(存款和储蓄节点)

Tracker重要做调度工作,也就是mvc中的controller的剧中人物,在拜访上起负载均衡的功力。跟踪器和储存节点都能够由一台或多台服务器构成,跟踪器和仓库储存节点中的服务器均能够天天扩充或下线而不会影响线上劳动,当中跟踪器中的所有服务器都以对等的,能够遵照服务器的下压力意况随时扩充或调整和收缩。Tracker负责管理全数的Storage和group,每一种storage在开发银行后会连接Tracker,告知本人所属的group等音信,并保险周期性的心跳,tracker依照storage的心跳新闻,建立group==>[storage
server
list]的映射表,Tracker要求管理的元音信很少,会整整存款和储蓄在内部存款和储蓄器中;其余tracker上的元音讯都以由storage汇报的信息变化的,本人不须要持久化任何数据,那样使得tracker分外不难扩充,直接扩展tracker机器即可扩大为tracker
cluster来服务,cluster里种种tracker之间是一心对等的,全数的tracker都领受stroage的心跳音信,生成元数据消息来提供读写服务。

Storage选取了分卷[Volume](或分组[group])的协会章程,存款和储蓄系统由2个或三个组结合,组与组之间的公文是彼此独立的,全体组的文件容积增进正是整整存款和储蓄系统中的文件体量。1个卷[Volume](组[group])可以由一台或多台存款和储蓄服务器组成,3个组中的存款和储蓄服务器中的文件都以一致的,组中的多台存款和储蓄服务器起到了冗余备份和负载均衡的功能,数据交互备份,存储空间以group内容积最小的storage为准,所以建议group内的七个storage尽量配置相同,以防导致存款和储蓄空间的浪费。更加多原理性的剧情能够参照那篇blog,介绍的很详细:分布式文件系统FastDFS设计原理
接下去就实际看一下法斯特DFS的方方面面下载安装进度~

 

 

下载

当下作者最终一遍releases的年华的14年1一月22号,对应的时尚版本是5.0.5,直接在余大的GitHub上下载就能够了:
https://github.com/happyfish100/fastdfs/releases

 

安装

libfastcommon

第③第三步是安装libfastcommon,小编那里将libfastcommon上传到的/usr/local目录下,直接解压:

unzip libfastcommon-master.zip

解压成功后进入目录看一下压缩包的公文:
美学原理 2

若是没有装解压工具unzip能够透过以下yum命令实行安装后再解压:

yum -y install unzip zip

解压完毕后就足以开始展览编译安装了,分别实施./make.sh./make.sh install,由于是新安装的类别有可能会唤起找不到gcc命令:
美学原理 3

如上图,所以大家先要安装gcc编写翻译器:

yum -y install gcc-c++

看看如下音讯表明gcc已经安装成功:
美学原理 4

那时再次实施./make.sh命令举办编写翻译,没有error音信的话就证实编写翻译成功了,最终再履行./make.sh install举行安装,看到类似如下提醒音信就证实libfastcommon已设置成功(画风突变,黑底白字看的双眼累T_T,所以换到白底黑字了):
美学原理 5

至此libfastcommon就曾经设置成功了,但只顾一下上海体育场地中白灰框标注的始末,libfastcommon.so
私下认可安装到了/usr/lib64/libfastcommon.so,但是法斯特DFS主程序设置的lib目录是/usr/local/lib,所以那里必要重新安装软链接(类似于Windows的快速情势):

ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

设置实现后就足以开端安装fastdfs了。

FastDFS

第壹步依然是解压:

tar -zxvf fastdfs-5.05.tar.gz 

解压完结后跻身目录fastdfs-5.05,依次执行./make.sh和./make.sh install:

./make.sh
./make.sh install

从不报错就表达安装成功了,在log中大家得以窥见安装路径:
美学原理 6

是的,便是安装到了/etc/fdfs中,大家看一下该目录下的公文:
美学原理 7

如上海教室,安装成功后就会转移如上的三个.sample文件(示例配置文件),大家再分别拷贝出三个后边用的标准的布局文件:

cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf

尔后再查看一下/etc/fdfs的文件目录:
美学原理 8

至此法斯特DFS已经安装完成,接下去的做事正是各样配置Tracker和Storage了。

Tracker

在安顿Tracker从前,首先须要成立Tracker服务器的文件路径,即用于存款和储蓄Tracker的数据文件和日志文件等,笔者那边选择在/opt目录下创制1个fastdfs_tracker目录用于存放Tracker服务器的有关文书:

mkdir /opt/fastdfs_tracker

接下去就要重新编排上一步准备好的/etc/fdfs目录下的tracker.conf配置文件,打开文件后相继做以下修改:

  1. disabled=false #启用配置文件(暗中同意启用)
  2. port=22122 #安装tracker的端口号,经常采取22122以此暗中认可端口
  3. base_path=/opt/fastdfs_tracker
    #安装tracker的数据文件和日志目录
  4. http.server_port=6666 #设置http端口号,默认为8080

安顿达成后就能够运维Tracker服务器了,但第2仍旧要为运营脚本创立软引用,因为fdfs_trackerd等一声令下在/usr/local/bin中并从未,而是在/usr/bin路径下:

ln -s /usr/bin/fdfs_trackerd /usr/local/bin
ln -s /usr/bin/stop.sh /usr/local/bin
ln -s /usr/bin/restart.sh /usr/local/bin

终极通过命令运行Tracker服务器:

service fdfs_trackerd start

指令执行后方可观察以下提醒:
美学原理 9

一经开发银行命令执行成功,那么与此同时在刚刚创设的tracker文件目录/opt/fastdfs_tracker中就足以见到运行后新转变的data和logs目录,tracker服务的端口也应有被符合规律监听,最后再通过netstat命令查看一下端口监听意况:

netstat -unltp|grep fdfs

可以见到tracker服务运转的22122端口正常被监听:
美学原理 10

肯定tracker寻常运维后方可将tracker设置为开机运维,打开/etc/rc.d/rc.local并在当中参预以下配置:

service fdfs_trackerd start

Tracker至此就布置好了,接下去就足以安顿法斯特DFS的另一着力——Storage。

Storage

同理,步骤基本与陈设Tracker一致,首先是创办Storage服务器的文件目录,须求小心的是同Tracker比较作者多建了多个索引,因为Storage还亟需八个文本存款和储蓄路径,用于存放接收的文件:

mkdir /opt/fastdfs_storage
mkdir /opt/fastdfs_storage_data

接下去修改/etc/fdfs目录下的storage.conf配置文件,打开文件后逐一做以下修改:

  1. disabled=false #启用配置文件(暗中同意启用)
  2. group_name=group1 #组名,依据实况修改
  3. port=23000
    #设置storage的端口号,默许是2三千,同二个组的storage端口号必须一致
  4. base_path=/opt/fastdfs_storage #设置storage数据文件和日志目录
  5. store_path_count=1 #存款和储蓄路径个数,须求和store_path个数匹配
  6. store_path0=/opt/fastdfs_storage_data #骨子里文件存储路径
  7. tracker_server=192.168.111.11:22122 #tracker 服务器的
    IP地址和端口号,如若是单机搭建,IP不要写127.0.0.1,不然运营不成事(此处的ip是本人的CentOS虚拟机ip)
  8. http.server_port=8888 #设置 http 端口号

安排实现后同样要为Storage服务器的启航脚本设置软引用:

ln -s /usr/bin/fdfs_storaged  /usr/local/bin

接下去就能够运转Storage服务了:

service fdfs_storaged start

一声令下执行后能够看看以下提示:
美学原理 11

同理,假诺开发银行成功,/opt/fastdfs_storage中就足以看看运维后新变化的data和logs目录,端口23000也应被符合规律监听,还有有个别就是文件存款和储蓄路径下会转变多级存款和储蓄目录,那么接下去看看是否运转成功了:
美学原理 12

如上海教室,貌似没得逞啊,因为运转storage后文件都没生成,为了确认我们看一下storage的端口景况:
美学原理 13

果真是没运维成功!端口近年来照旧只监听了2个,storage的23000端口并未被监听,那么大家只可以去日志文件中找原因了,进入/opt/fastdfs_storage/logs目录下并开拓storaged.log文件:
美学原理 14

如上海教室,能够看到确实有二个error,关键消息是:

ERROR – file: storage_func.c, line: 896, mkdir
“/etc/fastdfs_storage_data/data” fail, errno: 2, error info: No such
file or directory

没有公文或目录!再回头看一下/etc/fdfs目录下的storage.conf的安排:
美学原理 15

果然配错了,大家钦赐成了/etc/fastdfs_storage_data目录,而其实我们创立的职分是/opt/fastdfs_storage_data,马虎马虎,老眼昏花!修改路径后再度重启storage服务,然后再看看data目录和实在存款和储蓄文件的/opt/fastdfs_storage_data:
美学原理 16

如上海教室,能够观察/opt/fastdfs_storage/data目录下生成好的pid文件和dat文件,那么再看一下其实文件存款和储蓄路径下是还是不是有开创好的层层目录呢:
美学原理 17

如上航海用教室,没有别的难点,data下有256个1级目录,每级目录下又有2六十多少个2级子目录总共65536个文件,新写的文件会以hash的艺术被路由到里面有些子目录下,然后将文件数量直接当做三个本土文件存款和储蓄到该目录中。那么最终大家再看一下storage服务的端口监听意况:
美学原理 18

如上海教室,能够看到那儿一度屡见不鲜监听tracker的22122端口和storage的2三千端口,至此storage服务器就早已陈设达成,鲜明了storage服务器运维成功后,还有一项工作正是看看storage服务器是还是不是业已登记到
tracker服务器(也足以明白为tracker与storage是否构成成功),运维以下命令:

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

[root@localhost /]# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
[2016-09-23 12:59:26] DEBUG – base_path=/opt/fastdfs_storage,
connect_timeout=30, network_timeout=60, tracker_server_count=1,
anti_steal_token=0, anti_steal_secret_key length=0,
use_connection_pool=0, g_connection_pool_max_idle_time=3600s,
use_storage_id=0, storage server id count: 0

server_count=1, server_index=0

tracker server is 192.168.111.11:22122

group count: 1

Group 1:
group name = group1
disk total space = 6818 MB
disk free space = 2169 MB
trunk free space = 0 MB
storage server count = 1
active server count = 1
storage server port = 23000
storage HTTP port = 8888
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0

Storage 1:
id = 192.168.111.11
ip_addr = 192.168.111.11 ACTIVE
http domain =
version = 5.05
join time = 2016-09-23 11:15:54
up time = 2016-09-23 12:33:26
total storage = 6818 MB
free storage = 2169 MB
upload priority = 10
store_path_count = 1
subdir_count_per_path = 256
storage_port = 23000
storage_http_port = 8888
current_write_path = 0
source storage id =
if_trunk_server = 0
connection.alloc_count = 256
connection.current_count = 0
connection.max_count = 0
total_upload_count = 0
success_upload_count = 0
total_append_count = 0
success_append_count = 0
total_modify_count = 0
success_modify_count = 0
total_truncate_count = 0
success_truncate_count = 0
total_set_meta_count = 0
success_set_meta_count = 0
total_delete_count = 0
success_delete_count = 0
total_download_count = 0
success_download_count = 0
total_get_meta_count = 0
success_get_meta_count = 0
total_create_link_count = 0
success_create_link_count = 0
total_delete_link_count = 0
success_delete_link_count = 0
total_upload_bytes = 0
success_upload_bytes = 0
total_append_bytes = 0
success_append_bytes = 0
total_modify_bytes = 0
success_modify_bytes = 0
stotal_download_bytes = 0
success_download_bytes = 0
total_sync_in_bytes = 0
success_sync_in_bytes = 0
total_sync_out_bytes = 0
success_sync_out_bytes = 0
total_file_open_count = 0
success_file_open_count = 0
total_file_read_count = 0
success_file_read_count = 0
total_file_write_count = 0
success_file_write_count = 0
last_heart_beat_time = 2016-09-23 12:58:59
last_source_update = 1970-01-01 08:00:00
last_sync_update = 1970-01-01 08:00:00
last_synced_timestamp = 1970-01-01 08:00:00

如上所示,看到192.168.111.11 ACTIVE
字样即可验证storage服务器已经打响注册到了tracker服务器,同理别忘了添加开机运营,打开/etc/rc.d/rc.local并将如下配置增加到文件中:

service fdfs_storage start

迄今大家就曾经完毕了fastdfs的全套布署,此时也就能够用客户端工具进行理文件件上传下载的测试了。

伊始测试

测试时索要设置客户端的配备文件,编辑/etc/fdfs目录下的client.conf
文件,打开文件后相继做以下修改:

  1. base_path=/opt/fastdfs_tracker #tracker服务器文件路径
  2. tracker_server=192.168.111.11:22122 #tracker服务器IP地址和端口号
  3. http.tracker_server_port=6666 # tracker 服务器的 http
    端口号,必须和tracker的安装相应起来

布局完结后就能够效仿文件上传了,先给/opt目录下放一张图纸(中雪老爹的LOGO):
美学原理 19

接下来通过履行客户端上传命令尝试上传:

/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /opt/BLIZZARD.jpg

运行后能够发现给大家回来了贰个路径:
美学原理 20

那就代表大家的文本已经上传成功了,当文件存款和储蓄到有个别子目录后,即认为该文件存款和储蓄成功,接下去会为该公文生成二个文书名,文件名由group、存款和储蓄目录、两级子目录、fileid、文件后缀名(由客户端内定,主要用于区分文件类型)拼接而成,如下图:
美学原理 21

而且在事先安排的storage服务器的实在文件存款和储蓄路径中也足以依照再次回到的路线找到实际文件:
美学原理 22

接下去尝试用浏览器发送HTTP请求访问一下文书:
美学原理 23

这儿察觉并无法访问,因为法斯特DFS最近已不协理http协议,我们在法斯特DFS
4.0.5的版本更新日志中得以看来那般一条音讯:
美学原理 24

如上图,4.0.5版本初叶移除了自带的HTTP协理(因为以前自带的HTTP服务较为简单,无法提供负载均衡等高品质服务),所以余大提供了nginx上行使法斯特DFS的模块fastdfs-nginx-module,下载地址如下:https://github.com/happyfish100/fastdfs-nginx-module,那样做最大的补益正是提供了HTTP服务并且消除了group中storage服务器的联合署名延迟难题,接下去就现实记录一下fastdfs-nginx-module的装置配置进程。

fastdfs-nginx-module

在余大的GitHub上下载好fastdfs-nginx-module上传到大家的CentOS中就可以起来安装了,在设置nginx以前要求先安装一些模块重视的lib库,小编在在此此前写的blog有做详细介绍(Linux
CentOS 7 & Tengine(Nginx)安装与陈设),间接贴出安装代码:

yum -y install pcre pcre-devel  
yum -y install zlib zlib-devel  
yum -y install openssl openssl-devel

 

次第装好这一个重视之后就能够开首安装nginx了。

storage nginx

率先是为storage服务器安装nginx,首先将nginx和fastdfs-nginx-module的安装包上传至CentOS:
美学原理 25

率先分别举办解压:

tar -zxvf nginx-1.8.1.tar.gz
unzip fastdfs-nginx-module-master.zip

 

解压成功后就能够编写翻译安装nginx了,进入nginx目录并输入以下命令实行布局:

./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module-master/src

配备成功后会看到如下音信:
美学原理 26

跟着就足以拓展编写翻译安装了,依次执行以下命令:

make
make install

安装到位后,我们在大家钦命的目录/usr/local/nginx中就能够看到nginx的设置目录了:
美学原理 27

接下去要修改一下nginx的配备文件,进入conf目录并开拓nginx.conf文件参与以下配置:

listen       9999;

location ~/group1/M00 {
      root /opt/fastdfs_storage_data/data;
      ngx_fastdfs_module;
}

下一场进入法斯特DFS的装置目录/usr/local/fastdfs-5.05目录下的conf目录,将http.confmime.types拷贝到/etc/fdfs目录下:

cp -r /usr/local/fastdfs-5.05/conf/http.conf /etc/fdfs/
cp -r /usr/local/fastdfs-5.05/conf/mime.types /etc/fdfs/

接下去还亟需把fastdfs-nginx-module安装目录中src目录下的mod_fastdfs.conf也拷贝到/etc/fdfs目录下:

cp -r /usr/local/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/

看一下/etc/fdfs目录下当前具有的配备文件:
美学原理 28

举重若轻难题,接下去就必要编写制定刚拷贝的那个mod_fastdfs.conf文件了,打开mod_fastdfs.conf并按梯次依次编写翻译以下内容:

  1. base_path=/opt/fastdfs_storage #封存日志目录
  2. tracker_server=192.168.111.11:22122
    #tracker服务器的IP地址以及端口号
  3. storage_server_port=23000 #storage服务器的端口号
  4. url_have_group_name = true #文本 url 中是或不是有 group 名
  5. store_path0=/opt/fastdfs_storage_data # 存储路径
  6. group_count = 3 #设置组的个数,事实上此次只利用了group1

设置了group_count = 3,接下去就需求在文件底部扩张那三个group setting:

[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data

[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data

[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data

接下去还亟需树立 M00 至存款和储蓄目录的标记连接:

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

末尾运行nginx:

/usr/local/nginx/sbin/nginx

呈现如下音信验证nginx已开发银行成功:
美学原理 29

由此浏览器也能够观察nginx的主页:
美学原理 30

storage服务器的nginx就曾经设置收尾,接下去看一下tracker服务器的nginx安装。

tracker nginx

同理,再装叁个nginx,目录命名为nginx2,安装路径仍然放在/usr/local下,由于和前边一样,此处就不再做详细分解:

mkdir nginx2
cd nginx-1.8.1/
./configure --prefix=/usr/local/nginx2 --add-module=/usr/local/fastdfs-nginx-module-master/src
make
make install
  • 1
  • 2
  • 3
  • 4
  • 5

接下去还是是修改nginx2的陈设文件,进入conf目录并打开nginx.conf文件插足以下配置,storage的nginx无需修改listen端口,即默许的80端口,并将upstream指向tracker的nginx地址:

upstream fdfs_group1 {
     server 127.0.0.1:9999;
}

location /group1/M00 {
     proxy_pass http://fdfs_group1;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

接下去运维nginx2:

/usr/local/nginx2/sbin/nginx
  • 1

那时候拜会nginx2的主页,由于并未改动端口,直接待上访问ip地址即可:
美学原理 31

终极一步正是内需修改/etc/fdfs目录下的client.conf文件,打开该公文并进入以下配置:

base_path=/data/fastdfs_storage  #日志存放路径
tracker_server=192.168.116.145:22122  #tracker 服务器 IP 地址和端口号
http.tracker_server_port=6666  # tracker 服务器的 http 端口号,必须和tracker的设置对应起来
  • 1
  • 2
  • 3

至此关于fastdfs就早已全体安排完成了,再一遍进行测试看看是还是不是能健康上传文件并因此http访问文件。

HTTP测试

再给/opt目录下上传一张小雪父亲的LOGO图:
美学原理 32

经过客户端命令测试上传:
美学原理 33

如上海教室,如故上传成功,接下去的首要就是通过HTTP测试文件访问,打开浏览器输入ip地址+文件名看看是或不是能平常访问该图形:
美学原理 34

一切平时~ 至此关于法斯特DFS在CentOS 7下的布置测试就早已全部到位了。