fastdfs集群部署

fastdfs集群部署

参考链接:https://www.cnblogs.com/penngke/p/15396701.html
部署架构如下:

部署规划

2台主机,数据存储节点共1个group组,每个组里面有2个storage节点互为主备,这样就能保证一定高可用。角色分配如下:

ps:之前准备利用3台服务器分三组多实例部署,fastdfs不支持同角色多实例部署。

ip地址 角色1 角色2
192.168.0.77 Tracker1 Storage-group1-1
192.168.0.89 Tracker2 Storage-group1-2

数据路径:/data/fastdfs/

安装步骤

  1. 2台主机上分别先安装依赖

    yum install make cmake gcc gcc-c++ -y

  2. 下载fastdfs软件包:

    依赖包libfastcommon链接:https://github.com/happyfish100/libfastcommon/releases

    FastDFS包链接:https://github.com/happyfish100/fastdfs/releases

    下载命令:

    wget https://codeload.github.com/happyfish100/libfastcommon/tar.gz/refs/tags/V1.0.53 -O /opt/libfastcommon-1.0.53.tar.gz

    wget https://codeload.github.com/happyfish100/fastdfs/tar.gz/refs/tags/V6.07 -O /opt/fastdfs-6.07.tar.gz

  3. 安装libfastcommon

    cd /opt
    tar -zxvf libfastcommon-1.0.53.tar.gz
    cd libfastcommon-1.0.53/
    ./make.sh 
    ./make.sh install
    

    等待安装完成。

  4. 安装fastdfs

    cd /opt
    tar -zxvf fastdfs-6.07.tar.gz 
    cd fastdfs-6.07/
    ./make.sh 
    ./make.sh install
    

    等待安装完成

  5. 配置2台主机上的trcker服务

    #1. 复制配置文件
    cd /etc/fdfs/
    cp tracker.conf.sample tracker.conf
    vim tracker.conf
    
    #修改如下内容:
    # 配置文件是否不生效,false 为生效
    disabled=false
    # 提供服务的端口
    port=22122
    # Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建)
    base_path=/data/fastdfs/tracker
    # HTTP 服务端口 默认8080 ,
    http.server_port=8080 #这端口没什么用,4以上版本已经不在启动网络服务了
    
    bind_addr = 192.168.0.77  #2台独自改为自己ip
    

    创建tracker的数据和日志目录:mkdir -p /data/fastdfs/tracker

  6. 启动2台的tracker服务

    service fdfs_trackerd start
    /sbin/chkconfig fdfs_trackerd on
    

    检查端口22122是否存在:netstat -tunlp | grep 22122

  7. 配置2台主机上storage服务

    #1. 复制配置文件
    cd /etc/fdfs/
    cp storage.conf.sample storage.conf
    vim storage.conf
    
    #修改以下内容
    # Storage 数据和日志目录地址(根目录必须存在,子目录会自动生成)  (注 :这里不是上传的文件存放的地址,之前版本是的,在某个版本后更改了)
    base_path=/data/fastdfs/storage
    
    # 逐一配置 store_path_count 个路径,索引号基于 0。
    # 如果不配置 store_path0,那它就和 base_path 对应的路径一样。
    store_path0=/data/fastdfs/storage_data/
    
    group_name = group1 #由于我只有1个组,只需配置一个,storage配置相同的group_name则代表同一组,互相互为主备。
    
    # tracker_server 的列表 ,会主动连接 tracker_server
    # 有多个 tracker server 时,每个 tracker server 写一行
    tracker_server = 192.168.0.77:22122
    tracker_server = 192.168.0.89:22122
    
    # 访问端口 默认80  建议修改 防止冲突
    http.server_port=80 #这端口没什么用,4以上版本已经不在启动网络服务了
    
    bind_addr = 192.168.0.77  #2台独自改为自己ip
    

    创建日志目录:mkdir -p /data/fastdfs/storage
    创建数据目录:mkdir -p /data/fastdfs/storage_data/

  8. 启动2台主机上的storage服务

    service fdfs_storaged start
    systemctl start fdfs_storaged  #centos7 推荐
    
    systemctl enable fdfs_storaged #设置开机启动
    /sbin/chkconfig fdfs_storaged on #设置开机启动
    

    检查端口23000是否存在:netstat -tunlp | grep 23000

  9. 集群检测

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

    输出的结果看到存储节点状态为 ACTIVE 则表示已生效。

    	Storage 1:
    		id = 192.168.0.77
    		ip_addr = 192.168.0.77  ACTIVE
    		http domain = 
    		version = 6.07
    		...其他信息已省略...
    	Storage 2:
    		id = 192.168.0.89
    		ip_addr = 192.168.0.89  ACTIVE
    		http domain = 
    		version = 6.07
    		...其他信息已省略...
    
  10. 配置文件上传测试

    配置客户端的配置

    cd /etc/fdfs
    cp client.conf.sample client.conf
    vim client.conf
    #修改一下配置,其他默认
    
    # Client 的数据和日志目录
    base_path=/data/fastdfs/client
    # Tracker端口
    tracker_server=192.168.0.77:22122
    tracker_server=192.168.0.89:22122
    

    创建client的日志目录:mkdir -p /data/fastdfs/client

    分别在2台客户端上传一个文件试试:

    cd /tmp
    /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /tmp/peng-test1.png
    /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /tmp/peng-test2.png
    #返回文件ID号说明集群搭建成功
    [root@ecs-192_168_0_89 tmp]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /tmp/peng2.png 
    group1/M00/00/00/wKgATWFk85SARmKvAAA7rh9qvEI417.png  #成功
    
  11. 最后

    最后fastdfs集群搭建完成。客户端或者研发可以任意选择一个fastdfs的节点连接。

遇到的错误

  1. libfastcommon编译错误

    [root@ecs-192_168_0_77 libfastcommon-1.0.53]# ./make.sh 
    gcc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O3 -c -o hash.o hash.c  
    In file included from /usr/include/errno.h:35:0,
                     from hash.c:19:
    /usr/include/bits/errno.h:24:26: fatal error: linux/errno.h: No such file or directory
     # include <linux/errno.h>
                              ^
    compilation terminated.
    make: *** [hash.o] Error 1
    

    解决:yum install kernel-headers -y

posted @ 2021-10-12 10:39  penngke  阅读(224)  评论(1编辑  收藏  举报