fastdfs集群部署​

部署架构如下:

fastdfs集群部署_fastdfs

部署规划

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