分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置(单点安装)——第一篇

分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置(单点安装)——第一篇 

  • ### 简介

先是简单询问一下基础概念,FastDFS是一个开源之轻量级分布式文件系统,由跟踪服务器(tracker
server)、存储服务器(storage
server)和客户端(client)三个组成部分组成,主要解决了海量数据存储问题,特别吻合为中等文件(建议范围:4KB
< file_size <500MB)为载体的在线服务。FastDFS的系统结构图如下:

图片 1

苟齐图,FastDFS的有限独着力概念分别是:

  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])的团方式,存储系统由一个或者多单组做,组与组内的文书是互相独立的,所有组的文本容量增长就是合存储系统受到的文件容量。一个卷[Volume](组[group])可以由一致尊抑多雅囤服务器组成,一个组中的储存服务器中的文书都是同等之,组中的多台存储服务器起至了冗余备份和负载均衡的图,数据交互备份,存储空间为group内容量最小的storage为依照,所以建议group内的多只storage尽量配置相同,以免导致存储空间的浪费。更多原理性的始末可以参见这首blog,介绍的很详细:分布式文件系统FastDFS设计原理
连着下去就是实际看一下FastDFS的普下载安装过程~

 

 

下载

此时此刻笔者最后一坏releases的时刻的14年11月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,但是FastDFS主程序设置的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

如齐图,安装成功后即使会见变如齐之3只.sample文件(示例配置文件),我们重各自拷贝出3个后面用底正统的布文件:

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

而后再翻一下/etc/fdfs之文件目录:
图片 8

至此FastDFS已经装了,接下去的工作就是是各个配置Tracker和Storage了。

Tracker

于配置Tracker之前,首先要创造Tracker服务器的文书路径,即用于存储Tracker的数据文件和日志文件等,我这边选择以/opt目录下创造一个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服务器了,但第一还是要吗启动脚本创建软引用,因为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至此就配备好了,接下便足以配备FastDFS的外一样基本——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的端口号,默认是23000,同一个组的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

果真是绝非启动成功!端口目前还是仅监听了一个,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级目录,每级目录下同时生出256只2级子目录总共65536个文件,新写的文件会因为hash的方法于路由于至内有子目录下,然后拿文件数量直接当做一个地方文件存储到拖欠目录中。那么最终我们再看一下storage服务之端口监听情况:
图片 18

要是齐图,可以见见这儿已经正常监听tracker的22122端口和storage的23000端口,至此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

此刻发现并无能够看,因为FastDFS目前既非支持http协议,我们在FastDFS
4.0.5底本子更新日志中可见见如此同样长长的消息:
图片 24

倘达到图,4.0.5本子开始移除了自带的HTTP支持(因为事先自带的HTTP服务较为简单,无法提供负载均衡等强性能服务),所以余大提供了nginx上行使FastDFS的模块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;
}

下一场进FastDFS的安装目录/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,接下便用在文件尾增加这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

一切正常~ 至此关于FastDFS在CentOS 7生之部署测试就曾经整整完成了。