码迷,mamicode.com
首页 > 其他好文 > 详细

fastDFS安装使用

时间:2020-05-15 20:17:28      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:trunc   lib   主程序   指标   分布   lib64   机制   path   文件大小   

前言:
项目中有需要上传文件或者图片功能的情况,应该是经常碰到的事情,每个公司可能都有不一样的处理方案,有的公司可能选择七牛云做图片服务器,有的可能选择搭建ftp+nginx做简单图片处理,或者搭建FastDFS+nginx来存储和管理图片。这篇博客主要讲解下如何在云服务器上搭建FastDFS和springboot如何整合FastDFS客户端上传图片。

正文:
一、FastDFS的介绍
1.1 什么是FastDFS

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

1.2 FastDFS的架构

FastDFS架构包括 Tracker server和Storage server。客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载。

Tracker server作用是负载均衡和调度,通过Tracker server在文件上传时可以根据一些策略找到Storage server提供文件上传服务。可以将tracker称为追踪服务器或调度服务器。

Storage server作用是文件存储,客户端上传的文件最终存储在Storage服务器上,Storage server没有实现自己的文件系统而是利用操作系统的文件系统来管理文件。可以将storage称为存储服务器。

 技术图片

 

 

服务端两个角色:

Tracker:管理集群,tracker也可以实现集群。每个tracker节点地位平等。

收集Storage集群的状态。

Storage:实际保存文件。

Storage分为多个组,每个组之间保存的文件是不同的。每个组内部可以有多个成员,组成员内部保存的内容是一样的,组成员的地位是一致的,没有主从的概念 。

1.3 文件上传的流程

 技术图片

 

 

客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。

 技术图片

 

 

组名:文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。
虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。
数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。
1.4 文件下载

 

 

二、FastDFS的安装
2.1 准备工作:

2.1 .1 安装前我们需要准备的东西

下载的地址:https://github.com/happyfish100

下面是我准备好的源码包和nginx的安装包,总共5个包

 技术图片

 

 

一定看好上面的版本,如果版本和我不一致,安装也许会出现其他的问题。

2.1.2 把这些安装包通过xftp上传到服务器你想安装的目录下

 

2.2 开始安装:

2.2.1 安装libfastcommon

解压libfastcommon-master.zip安装包

unzip libfastcommon-master.zip

 


如果unzip没有安装的话,会出现下面的提示

 

安装下unzip就可以,指令如下

yum -y install unzip zip

 


解压完后进到解压后的目录

 

进到解压的libfastcommon-master文件下,然后分别执行./make.sh和./make.sh install(红色箭头指的文件解压后是不存在的,是后续操作生成的)

编译安装完后要注意,libfastcommon默认会被安装到/usr/lib64/libfastcommon.so但是FastDFS的主程序却在/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

 


------------------------------------------------------到此libfastcommon安装完毕。

2.2.2 安装FastDFS

解压FastDFS安装包

unzip fastdfs-5.11.zip


解压后进到fastdfs-5.11目录下

 

在fastdfs-5.11目录下执行./make.sh和./make.sh install

如果没有报错那么就成功了。安装log中会提示FastDFS安装到了/etc/fdfs目录下。

成功后会有client.conf.sample、storage.conf.sample、tracker.conf.sampl这个文件,下面截图中多余的文件是后续步骤出现的文件。

 

我们需要把这三个示例文件复制一份,去掉.sample。

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


 ----------------------------------------------------到此FastDFS安装结束。

2.2.3 安装tracker

2.2.3.1 创建tracker的工作目录,我的根目录是app,然后依次创建了mainapp/dev/fastdfs/fastdfs_tracker文件夹,根据自己的需求和喜好也可以随意创建,因为这个目录的作用是用来保存tracker的data和log 的。

 

2.2.3.2 配置tracker

cd /etc/fdfs
vim tracker.conf


打开后重点关注下面4个配置: 

1.disabled=false #默认开启 
2.port=22122 #默认端口号 
3.base_path=/app/mainapp/dev/fastdfs/fastdfs_tracker #上面创建的目录就用在这里
4.http.server_port=6666 #默认端口是8080

 

2.2.3.3 启动tracker

保存配置后启动tracker,命令如下:

service fdfs_trackerd start

 


如果不能启动,或提示用systemctl可改用命令:

systemctl start fdfs_trackerd

 


成功后应该可以看到:

 

进行刚刚创建的tracker目录,发现目录中多了data和log两个目录

 

 最后我们需要给tracker加入开机启动,先ll下看看对文件有没有执行权限 ll /etc/rc.d/rc.local,下图-rwxr-xr-x表示有执行权限

 

如果权限是 -rw-r--r--,那需要刷下权限

chmod +x /etc/rc.d/rc.local
修改rc.local文件

vim /etc/rc.d/rc.local


查看一下tracker的端口监听情况

 

端口22122成功监听。

2.2.4 安装storage

storage的安装与tracker很类似。这里强调下,我这篇博客tracker和storage的我是安装到一台服务器里啦,有的会把tracker和storage安装到不同的服务器里,基本按着步骤操作一波,就会理解啦。

2.2.4.1 为storage配置工作目录

与tracker不同的是,由于storage还需要一个目录用来存储数据,所以需要另外多建了一个fasdfs_storage_data 

 

 2.2.4.2 修改storage配置文件

vim /etc/fdfs/storage.conf
1.disabled=false 
2.group_name=group1 #组名,根据实际情况修改 
3.port=23000 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致 
4.base_path=/usr/yong.cao/dev/fastdfs/fastdfs_storage #设置storage数据文件和日志目录 
5.store_path_count=1 #存储路径个数,需要和store_path个数匹配 
6.base_path0=/app/mainapp/dev/fastdfs/fastdfs_storage_data #实际文件存储路径 
7.tracker_server=ip:22122 #这里我写的是服务器内网ip
8.http.server_port=8999 #设置 http 端口号

修改保存后创建软引用(类似于快捷方式)

ln -s /usr/bin/fdfs_storaged /usr/local/bin
 2.2.4.3 启动storage

service fdfs_storaged start
如果不能启动,或提示用systemctl可改用命令:

systemctl start fdfs_storaged
成功后应该可以看到:

 

同样的,设置开机启动: 
修改rc.local

vim /etc/rc.d/rc.local
 

查看一下服务是否启动

netstat -unltp | grep fdfs


服务已正常启动。

  2.2.4.4 校验整合

到这里,fastdfs的东西都已安装完成,最后我们还要确定一下,storage是否注册到了tracker中去。 
查看命令:

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
成功后可以看到:

ip_addr = 服务器的ip  ACTIVE

server_count=1, server_index=0

tracker server is 192.168.xxx.x:22122

group count: 1

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

Storage 1:
id = 192.168.xxx.x
ip_addr = 192.168.xxx.x ACTIVE
http domain =
version = 5.11
join time = 2019-04-10 17:53:06
up time = 2019-04-11 21:21:31
total storage = 503832 MB
free storage = 475083 MB
upload priority = 10
store_path_count = 1
subdir_count_per_path = 256
storage_port = 23000
storage_http_port = 8999
current_write_path = 0
source storage id =
if_trunk_server = 0
connection.alloc_count = 256
connection.current_count = 0
connection.max_count = 1
total_upload_count = 8
success_upload_count = 8
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 = 124622
success_upload_bytes = 124622
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 = 8
success_file_open_count = 8
total_file_read_count = 0
success_file_read_count = 0
total_file_write_count = 8
success_file_write_count = 8
last_heart_beat_time = 2019-04-18 12:31:15
last_source_update = 2019-04-17 18:56:35
last_sync_update = 1970-01-01 08:00:00
last_synced_timestamp = 1970-01-01 08:00:00
到这里FastDFS基本安装完毕。

参考的文章:https://blog.csdn.net/m0_37797991/article/details/73381648 这篇博客前两篇没有太大的问题,就是在与nginx整合时有点小问题。然后我之所以没有把软件安到/usr下(因为很多博客都是安装到usr目录下),是因为有的公司,会专门建一个文件夹作为应用盘,而且权限只给你这个文件夹的操作权限,所以根据自己的需求选择安装目录。

总结:
FastDFS搭建起来的确比较麻烦,但是只要足够有耐心,还是会比较顺利的。我是阿达,一名喜欢分享知识的程序员,时不时的也会荒腔走板的聊一聊电影、电视剧、音乐、漫画,这里已经有71位小伙伴在等你们啦,感兴趣的就赶紧来点击关注我把,哪里有不明白或有不同观点的地方欢迎留言。

 

fastDFS安装使用

标签:trunc   lib   主程序   指标   分布   lib64   机制   path   文件大小   

原文地址:https://www.cnblogs.com/bozhengheng/p/12896704.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!