FastDFS集群安装
FastDFS集群规划
跟踪服务器1:192.168.248.30 node1
跟踪服务器2:192.168.248.31 node2
存储服务器1:192.168.248.30 node1
存储服务器2:192.168.248.31 node2
操作系统:CentOS 7.4
用户:root
数据目录:/opt/fastdfs/storage-data
安装包如下:
libfastcommon-master.zip 下载地址:https://github.com/happyfish100/libfastcommon
FastDFS_v5.07.tar.gz 下载地址 https://sourceforge.net/projects/fastdfs/files/FastDFS%20Server%20Source%20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20V5.07/
fastdfs-nginx-module_v1.16.tar.gz 下载地址 https://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/
nginx-1.13.8.tar.gz 下载地址 http://nginx.org/download/
一、安装集群节点
在所有跟踪服务器和存储服务器节点上执行以下操作(tracker1、tracker2、storage1、storage2)
1.安装所需的依赖包
yum install make cmake gcc gcc-c++
2.安装libfatscommon
cd /opt/soft
unzip libfastcommon-master.zip
cd libfastcommon-master
编译、安装
./make.sh
./make.sh install
3.安装FastDFS
cd /opt/soft
tar -zxf FastDFS_v5.07.tar.gz
cd FastDFS
编译、安装
./make.sh
./make.sh install
二、配置跟踪节点(tracker1和tracker2)
说明:每个节点执行相同的操作
1.复制tracker样例配置文件,并重命名
cd /etc/fdfs/
cp tracker.conf.sample tracker.conf
2.修改tracker.conf配置文件
vim tracker.conf
# 修改的内容如下:
disabled=false # 启用配置文件
port=22122 # tracker服务器端口(默认22122)
base_path=/opt/fastdfs/tracker # 存储日志和数据的根目录
说明:
其它参数保留默认配置, 具体配置解释可参考官方文档说明:http://bbs.chinaunix.net/thread-1941456-1-1.html
服务器防火墙关闭或者开放tracker服务端口22122
3.创建base_path指定的目录
mkdir -p /opt/fastdfs/tracker
4.启动tracker服务器
/etc/init.d/fdfs_trackerd start #也可以用systemctl start fdfs_trackerd
初次启动,会在/opt/fastdfs/tracker目录下生成logs、data两个目录:
检查FastDFS Tracker Server是否启动成功:ps -ef | grep fdfs_trackerd
5.停止tracker服务器
/etc/init.d/fdfs_trackerd stop #也可以用systemctl stop fdfs_trackerd
6.设置tracker服务开机启动
chkconfig fdfs_trackerd on
chkconfig --list fdfs_trackerd
fdfs_trackerd 0:关 1:关 2:开 3:开 4:开 5:开 6:关
三、配置存储节点(storage1和storage2)
说明:每个节点执行相同的操作
1.复制storage样例配置文件,并重命名
cd /etc/fdfs/
cp storage.conf.sample storage.conf
2.编辑配置文件
vim storage.conf
# 修改的内容如下:
disabled=false # 启用配置文件
port=23000 # storage服务端口
group_name=group1 # 组名(第一组为group1,第二组为group2,依次类推...)
base_path=/opt/fastdfs/storage-info # 数据和日志文件存储根目录
store_path0=/opt/fastdfs/storage-data # 第一个存储目录,第二个存储目录起名为:store_path1=xxx,其它存储目录名依次类推...
store_path_count=1 # 存储路径个数,需要和store_path个数匹配
tracker_server=192.168.248.30:22122 # tracker服务器IP和端口
tracker_server=192.168.248.31:22122 # tracker服务器IP和端口
http.server_port=8888 # http访问文件的端口
说明:
其它参数保留默认配置, 具体配置解释可参考官方文档说明:http://bbs.chinaunix.net/thread-1941456-1-1.html
服务器防火墙关闭或者开放tracker服务端口23000
3.创建基础数据目录
mkdir -p /opt/fastdfs/storage-data
mkdir -p /opt/fastdfs/storage-info
4.启动storage服务器
/etc/init.d/fdfs_storaged start #也可以用systemctl start fdfs_storaged
初次启动,会在/opt/fastdfs/storage-info目录下生成logs、data两个目录:
检查FastDFS storage Server是否启动成功:ps -ef | grep fdfs_storage
5.停止storage服务器
/etc/init.d/fdfs_storaged stop #也可以用systemctl stop fdfs_storaged
6.设置storage服务开机启动
chkconfig fdfs_storaged on
chkconfig --list fdfs_storaged
fdfs_trackerd 0:关 1:关 2:开 3:开 4:开 5:开 6:关
四、文件上传测试
1.修改tracker服务器client.conf配置文件(tracker1和tracker2)
cd /etc/fdfs/
cp client.conf.sample client.conf
vi /etc/fdfs/client.conf
# 修改的内容如下:
base_path=/fastdfs/tracker #tracker的base_path设置的路径
tracker_server=192.168.248.30:22122 #tracker1 server的ip地址和端口
tracker_server=192.168.248.31:22122 #tracker2 server的ip地址和端口
2> 执行文件上传命令
fdfs_upload_file /etc/fdfs/client.conf /opt/soft/fastdfs.jpg
返回以下ID号,说明文件上传成功:
group1/M00/00/00/wKj4H1pUgHaAI1WqAABC4xj8qpM842.jpg
五、配置nginx为storage server提供http访问接口
存储节点安装Nginx和fastdfs-nginx-module模(storage1和storage2)
说明:每个节点执行相同的操作
1.fastdfs-nginx-module作用说明
FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储,但是同组存储服务器之间需要进入文件复制流程,有同步延迟的问题。假设 Tracker 服务器将文件上传到了 192.168.248.30,上传成功后文件 ID已经返回给客户端。此时 FastDFS 存储集群机制会将这个文件同步到同组存储 192.168.248.31,在文件还没有复制完成的情况下,客户端如果用这个文件 ID 在 192.168.248.31上取文件,就会出现文件无法访问的错误。而 fastdfs-nginx-module 可以重定向文件连接到源服务器(192.168.248.30)上取文件,避免客户端由于复制延迟导致的文件无法访问错误。
2.安装nginx和fastdfs-nginx-module模块
安装nginx所需的依赖包
yum install pcre-devel zlib-devel
编译安装nginx(添加fastdfs-nginx-module模块)
cd /opt/soft/
tar -zxf fastdfs-nginx-module_v1.16.tar.gz
tar -zxf nginx-1.13.8.tar.gz
cd nginx-1.13.8
./configure --prefix=/opt/fastdfs/nginx --add-module=/opt/soft/fastdfs-nginx-module/src/
Make
############################如果出现以下这个错误:############################
/opt/soft/fastdfs-nginx-module/src//common.c:21:25: 致命错误:fdfs_define.h:没有那个文件或目录
#include "fdfs_define.h"
^
编译中断。
make[1]: *** [objs/addon/src/ngx_http_fastdfs_module.o] 错误 1
make[1]: 离开目录"/opt/soft/nginx-1.13.8"
make: *** [build] 错误 2
解决:
执行以下命令,然后重新make
ln -s /usr/include/fastcommon /usr/local/include/fastcommon
ln -s /usr/include/fastdfs /usr/local/include/fastdfs
make install
3.复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录,并修改
cp /opt/soft/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
vi /etc/fdfs/mod_fastdfs.conf
# 修改的内容如下:
connect_timeout=10 #超时时间
base_path=/opt/fastdfs/storage-info #保存日志目录
tracker_server=192.168.248.30:22122 #tracker服务器的IP地址以及端口号
tracker_server=192.168.248.31:22122
storage_server_port=23000 #storage服务器的端口号
group_name=group1 #第一组storage的组名
url_have_group_name=true #文件 url 中是否有 group 名
store_path0=/fastdfs/storage #存储路径
group_count=1 #设置组的个数,这里只使用了group1
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs/storage-data
如果有多个组,第二组的mod_fastdfs.confg配置与第一组的配置只有group_name不同:
group_name=group2
4.配置nginx.conf文件(Nginx简洁版样例)
vim /opt/fastdfs/nginx/conf/nginx.conf
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8888;
server_name localhost;
# FastDFS 文件访问配置(fastdfs-nginx-module模块)
location ~/group([0-9])/M00 {
root /opt/fastdfs/storage-data/data;
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
注意:
listen 8888 端口值要与/etc/fdfs/storage.conf 中的 http.server_port=8888 相对应,因为 http.server_port 默认为 8888,如果想改成 80,则要对应修改过来。
Storage 对应有多个 group 的情况下,访问路径带 group 名,如:http://xxxx/group1/M00/00/00/xxx, 对应的 Nginx 配置为:
location ~/group([0-9])/M00 {
root /opt/fastdfs/storage-data/data;
ngx_fastdfs_module;
}
如下载时如发现老报 404,将nginx.conf第一行user nobody;修改为user root;后重新启动。
防火墙关闭或者打开Nginx的 8888 端口
5.复制FastDFS源文件目录中HTTP相关的配置文件到/etc/fdfs目录
cp /opt/soft/FastDFS/conf/http.conf /etc/fdfs/
cp /opt/soft/FastDFS/conf/mime.types /etc/fdfs/
6.创建数据存放目录的软链接
ln -s /opt/fastdfs/storage-data/data /opt/fastdfs/storage-data/data/M00
7.启动Nginx
/opt/fastdfs/nginx/sbin/nginx
ngx_http_fastdfs_set pid=xxx # fastdfs-nginx-module进程ID
重启 Nginx 的命令为:/usr/local/nginx/sbin/nginx -s reload
设置Nginx开机启动:
vi /etc/rc.local
# 加入
/opt/nginx/sbin/nginx
rc.local添加执行权限
chmod +x /etc/rc.d/rc.local # centos7
8.通过浏览器访问测试时上传的文件
http://192.168.248.30:8888/group1/M00/00/00/wKj4H1pUgHaAI1WqAABC4xj8qpM842.jpg
http://192.168.248.31:8888/group1/M00/00/00/wKj4H1pUgHaAI1WqAABC4xj8qpM842.jpg
访问结果如下:
注意:千万不要使用 kill -9 命令强杀 FastDFS 进程,否则可能会导致 binlog 数据丢失。
常用命令
tarcker服务:
1 重启tracker_server:
/etc/init.d/fdfs_trackerd restart
或者:systemctl restart fdfs_trackerd
2 停止tracker_server:
/etc/init.d/fdfs_trackerd stop
或者:systemctl stop fdfs_trackerd
3.启动tracker_server
/etc/init.d/fdfs_trackerd start
或者:systemctl start fdfs_trackerd
storage服务:
1 重启storage_server:
/etc/init.d/fdfs_storagere start
或者:systemctl restart fdfs_storage
2 停止storage_server:
/etc/init.d/fdfs_storage stop
或者:systemctl stop fdfs_storage
3.启动storage_server
/etc/init.d/fdfs_storages tart
或者:systemctl start fdfs_storage
查看tracker_server及storage_server状态
fdfs_monitor /etc/fdfs/client.conf
se_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0
server_count=2, server_index=0
tracker server is 192.168.248.30:22122
group count: 1
Group 1:
group name = group1
disk total space = 45030 MB
disk free space = 33668 MB
trunk free space = 0 MB
storage server count = 2
active server count = 2
storage server port = 23000
storage HTTP port = 8888
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0
删除一个storage
fdfs_monitor /etc/fdfs/client.conf delete group1 192.168.248.30
文件上传fdfs_upload_file
fdfs_upload_file /etc/fdfs/client.conf /opt/soft/fastdfs.jpg
fdfs_test /etc/fdfs/client.conf upload /opt/soft/fastdfs.jpg
查看文件fdfs_file_info
fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/wKj4H1pUgHaAI1WqAABC4xj8qpM842.jpg
文件下载fdfs_download_file
fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKj4H1pUgHaAI1WqAABC4xj8qpM842.jpg /opt/fastdfs.jpg
文件删除fdfs_delete_file
fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKj4HlpUVc6AVAZDAAAAAAAAAAA411.txt
- 本文标签: 技术分享
- 本文链接: http://www.iamlk.cn/article/73
- 版权声明: 本文由Leonidax原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权