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,见下
修改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