FastDFS集群搭建-详细

FastDFS

1. 简介

  • 小文件-适用于图片
  • 静默IO

搭建流程

目标:
新服务器:

  • Tracker
    10.16.42.160
    10.16.42.161

  • Storage
    10.16.42.162
    10.16.42.163

准备环境

上传失败:chmod 777 soft

统一存放目录:/usr/local/soft

安装目录:/mnt/fastdfs

准备工作

这里给出我自己用的安装包,有点老了,但是实践过没问题。其实也是找别人的。再次感谢那些分享的陌生人。
链接:https://pan.baidu.com/s/1rROaM_EL4MBSvXGezn_QUw
提取码:84qy

sudo su - root
cd usr/local;
mkdir soft #统一安装目录
# 这里遇到了不能上传文件的问题,是因为没有写权限
chmod 777 soft
cd soft/ 

安装libfastcommon函数包

git clone https://github.com/happyfish100/libfastcommon.git --depth 1
#根目录要有权限才能执行
chmod a+x *.sh
./make.sh && ./make.sh install

安装fastdfs

tar -xzvf fastdfs.tar.gz
cd fastdfs
chmod a+x *.sh
./make.sh && ./make.sh install
# 拷贝这两东西到生成的配置文件目录
cp /usr/local/soft/FastDFS/conf/http.conf /etc/fdfs/
cp /usr/local/soft/FastDFS/conf/mime.types /etc/fdfs/

安装fastdfs-nginx-module

tar -xzvf fastdfs-nginx-module.tar.gz

cd fastdfs-nginx-module/src/  #进入fast/fastdfs-nginx-module/src/目录下
 
vim /usr/local/soft/fastdfs-nginx-module/src/config  #编辑配置文件config中的路径,因为默认路径和实际路径是不符合的
# 全局替换`/usr/local`为`/usr`
:%s+/usr/local+/usr

#复制生成的mod_fastdfs.conf并修改里面的traker
cp /usr/local/soft/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

此时,/etc/fdfs已经有一堆配置文件了,我们过去看看:

顺便重命名一下:

cd etc/fastdfs
mv storage.conf.sample storage.conf
mv client.conf.sample client.conf
mv tracker.conf.sample tracker.conf

安装nginx

安装prec

pcre-config --version #检查

yum -y install wget   #如果wget没有安装的,报wget命令未找到,需要先安装wget,否则可以忽略
 
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz #安装pcre
 
tar -zxvf pcre-8.35.tar.gz -C /usr/local/soft #解压到/usr/local
 
cd /usr/local/soft/pcre-8.35 #进入pcre-8.35目录
 
./configure 
 
make && make install #编译安装

pcre-config --version #查看版本

搭建

Nginx

安装Nginx

#安装nginx
tar -zxvf nginx-1.14.1.tar.gz
cd /usr/local/soft/nginx-1.14.1/

./configure --add-module=/usr/local/soft/fastdfs-nginx-module/src/
#编译并安装
make && make install

修改ngxin.conf配置

cd /usr/local/nginx/conf
#修改ngxin.conf,见下

image-20211114215652078

修改fast-nginx-module生成的mod_fastdfs.conf

vim /etc/fdfs/fastdfs-nginx-module.conf
#修改traker
base_path=/fastdfs/storage
tracker_server=10.224.201.100:22122 # tracker服务器
tracker_server=10.224.201.101:22122 #tracker服务器
group_name=group1                 #当前服务器的group名,默认
store_path0=/fastdfs/storage/m0        # 存储路径
#最重要的,默认的是不能用的!!!!
url_have_group_name=true #url中包含group名称

启动

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
- [root@mvxl43154 conf]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
- ngx_http_fastdfs_set pid=13780
# 有时需要重启,这是停止的命令
/usr/local/nginx/sbin/nginx -s stop

启动Tracker

准备

cd /etc/fdfs
vim tracker.conf
# 修改配置
base_path=/mnt/fastdfs/storage
tracker_server=......
# 去新建上面的设置文件夹,它不能自己新建、
mkdir xxx

启动
这里遇到了坑,fdfs_trackerd /etc/fdfs/tracker.conf start在集群中会报错
所以建议使用`/etc/init.d/fdfs_trackerd start

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf

#发现上面的那个,在当前版本有bug,使用下面这个,stop、start、restar都有
/etc/init.d/fdfs_trackerd start
#有bug就重启。重启时要情况数据文件夹,避免冲突
/etc/init.d/fdfs_trackerd restart

这里遇到了两个tracker节点之间通信的很奇怪的问题。最终像网上说的,把非leader关闭,把leader的data里产生的的配置拷贝到出问题服务器的data中。除了pid文件,这个当然不要。

启动Storage

准备

vim tracker.conf
#配置参数
base_path=/mnt/fastdfs  #记得去新建文件夹
store_path0=/mnt/fastdfs/storage
tracker_server=.....:22122
http.server_port=:22122
# 这里遇到了不能同步的bug,实际上是配置文件和其他节点不同。这一点很坑。这里节点之间的配置文件最好全都复制来使用,不然随时出现问题!!!
max_connections=1024
work_threads=8

启动

#启动
sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
#或
/etc/init.d/fdfs_storaged restart
tail /xxx #看日志,地址是上面设置的base
ps -ef|grep storage

监控Storage状态

# 监控
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
## 遇到bug重启吧
#停止
sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop
#从集群中删除
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf delete group1 10.16.42.162
#在服务器中,删除数据文件夹
rm -rf /mnt/fastdfs/storage/data
#重启节点
/etc/init.d/fdfs_storaged restart
#重新查状态 
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

配置Client

Client将用于在服务器上直接上传文件测试,转发到配置的 tracker中

cd /etc/fdfs
vim client.conf
#配置参数
base_path=/mnt/fastdfs
store_path0=/mnt/fastdfs/storage
tracker_server=.....:22122
http.tracker_server_port=80

测试

# storage中上传一个文件
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/soft/nginx-1.14.1.tar.gz
# 返回值
- group1/M00/08/48/ChAaY2GODtOAWG70AA95GDoMzU8.tar.gz
# 到浏览器中,访问tracker的ip+返回值,可以访问到strorage的文件
#这是删除文件
/usr/bin/fdfs_delete_file /etc/fdfs/client.conf group1/M00/08/48/ChAaY2GODtOAWG70AA95GDoMzU8.tar.gz

搭建完成

其他一些命令

复制文件

前面说了,最大的心得,就是要使用复制的文件,不然集群之间参数不同时会导致无法运行的

# 服务器之间复制文件,熟练后其实会比sftp方便
##下载
scp apps@10.16.26.99:/apps/fastng.tar.gz E:/
## 上传
scp E:/fastng.tar.gz apps@10.16.26.99:/usr/local/soft
#关闭防火墙
systemctl stop firewalld
#看看端口是否正常
netstat -ano|grep 80
netstat -unltp|grep fdfs
#批量kill
pkill -9 fdfs

参考文章,非常感谢~~~

posted @ 2021-11-14 22:20  快乐的海盗  阅读(562)  评论(0编辑  收藏  举报