zoukankan      html  css  js  c++  java
  • fastDFS安装使用

    前言:
    项目中有需要上传文件或者图片功能的情况,应该是经常碰到的事情,每个公司可能都有不一样的处理方案,有的公司可能选择七牛云做图片服务器,有的可能选择搭建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位小伙伴在等你们啦,感兴趣的就赶紧来点击关注我把,哪里有不明白或有不同观点的地方欢迎留言。

  • 相关阅读:
    wcf通道Channel
    固定位置右下角
    小闹钟(无样式)
    CSS小注意(初级)
    java少包汇总
    maven的pom.xml配置
    myeclipse 手动安装 lombok
    Could not synchronize database state with session
    (转)myeclipse插件—SVN分支与合并详解【图】
    Nginx的启动、停止与重启
  • 原文地址:https://www.cnblogs.com/bozhengheng/p/12896704.html
Copyright © 2011-2022 走看看