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/
安装步骤
- 2台主机上分别先安装依赖
yum install make cmake gcc gcc-c++ -y
- 下载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
- 安装libfastcommon
cd /opt tar -zxvf libfastcommon-1.0.53.tar.gz cd libfastcommon-1.0.53/ ./make.sh ./make.sh install
等待安装完成。 - 安装fastdfs
cd /opt tar -zxvf fastdfs-6.07.tar.gz cd fastdfs-6.07/ ./make.sh ./make.sh install
等待安装完成 - 配置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
- 启动2台的tracker服务
service fdfs_trackerd start /sbin/chkconfig fdfs_trackerd on
检查端口22122是否存在:netstat -tunlp | grep 22122
- 配置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/
- 启动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
- 集群检测
/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 ...其他信息已省略...
- 配置文件上传测试
配置客户端的配置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 #成功
- 最后
最后fastdfs集群搭建完成。客户端或者研发可以任意选择一个fastdfs的节点连接。
遇到的错误
- 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