FastDFS单机、单节点和多节点集群部署文档

FastDFS单机版部署

环境准备工作

名称 说明
服务器IP 192.168.11.134
CentOS 7.x(mini最小化安装系统)
libfastcommon V1.0.39,FastDFS分离出的一些公用函数包
FastDFS v5.11,FastDFS本体
fastdfs-nginx-module v1.16,FastDFS和nginx的关联模块,解决组内同步延迟问题
nginx nginx 1.15.2,建议1.18

安装FastDFS依赖

FastDFS是C语言开发的应用。安装必须使用make、cmake和gcc编译

yum install -y make cmake gcc gcc-c++ wget perl lrzsz
#yum groups install Development Tools -y

1.安装libfastcommon

下载和解压

mkdir /fastdfs
cd /fastdfs
#下载文件
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz
tar -zxvf V1.0.39.tar.gz
ls

编译和安装

cd libfastcommon-1.0.39/
./make.sh && ./make.sh install

2.安装FastDFS主程序

cd /fastdfs
#下载fdfs文件,预计有问题,建议自行上传
#wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz#解压到指定目录,进入目录
tar -zxvf V5.11.tar.gz
cd fastdfs-5.11/#执行编译和安装
./make.sh && ./make.sh install#查看可执行命令
ls -la /usr/bin/fdfs*#配置文件准备,注意目录的位置
#tracker节点
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
#storage节点
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
#客户端文件,测试用
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
#供nginx访问使用,
cp /fastdfs/fastdfs-5.11/conf/http.conf /etc/fdfs/
#供nginx访问使用
cp /fastdfs/fastdfs-5.11/conf/mime.types /etc/fdfs/

#创建软链接
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

tracker server配置:

cd /etc/fdfs
yum install net-tools vim -y#创建存储日志和数据的根目录
mkdir -p /fastdfs/tracker/base
#需要修改的内容如下:
vi /etc/fdfs/tracker.conf# the base path to store data and log files#base_path=/home/yuqing/fastdfs#存储日志和数据的根目录(此目录必须存在 )base_path=/fastdfs/tracker/base#非开机自启动(支持start|stop|restart|status)
service fdfs_trackerd start
/usr/bin/fdfs_trackerd  /etc/fdfs/tracker.conf start
#查看状态
service fdfs_trackerd status

storage server配置

storage可以和tracker不在同一台服务器上。示例中把storage和tracker安装在同一台服务器上。

service firewalld stop#创建运行时存放临时文件和日志的目录(此目录必须存在)
mkdir -p /fastdfs/storage/base
#创建上传文件的目录(此目录必须存在)
mkdir -p /fastdfs/storage/datavim /etc/fdfs/storage.conf# the base path to store data and log files#base_path=/home/yuqing/fastdfs#更改为运行时存放临时文件和日志的目录(此目录必须存在)base_path=/fastdfs/storage/base# store_path#, based 0, if store_path0 not exists, it's value is base_path# the paths must be exist#store_path0=/home/yuqing/fastdfs#更改为上传文件的目录(此目录必须存在)store_path0=/fastdfs/storage/data# tracker_server can ocur more than once, and tracker_server format is#  "host:port", host can be hostname or ip address#更改为tracker_server的ip地址tracker_server=192.168.11.134:22122#非开机自启动(支持start|stop|restart|status)
service fdfs_storaged start#启动成功后,配置文件中 base_path指向的目录中出现FastDFS服务相关数据目录( data目录、logs目录),配置文件中的store_path0指向的目录中#可通过monitor来查看storage是否成功绑定
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
#若成功绑定会弹出很多行信息,失败则弹出几行

service fdfs_storaged无法启动原因:

解决方案:卸载fdfs,换个安装包

Client配置

#创建运行时存放临时文件和日志的目录(此目录必须存在)
mkdir -p /fastdfs/client/basevim /etc/fdfs/client.conf# the base path to store log filesbase_path=/fastdfs/client/base# tracker_server can ocur more than once, and tracker_server format is#  "host:port", host can be hostname or ip addresstracker_server=192.168.11.134:22122#客户端client配置完成#查看fdfs功能文件
ls /usr/bin/ | grep fdfs#上传文件测试
fdfs_upload_file /etc/fdfs/client.conf /fdfs/V1.0.39.tar.gzgroup1/M00/00/00/wKgLhmEkoCKAVNQTAAJZX-7XAV0.tar.gz
#即group1/M00/=/fastdfs/storage/data/data/00/#查看源文件
ls /fastdfs/storage/data/data/00/00#查看文件信息
fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/wKgLhmEkoCKAVNQTAAJZX-7XAV0.tar.gz#下载文件信息
fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKgLhmEkoCKAVNQTAAJZX-7XAV0.tar.gz /libfast.tar.gz
ll /

3.Nginx安装和fastdfs-nginx-module安装

nginx安装

#安装编译工具及库文件
yum -y install gcc automake autoconf libtool make gcc-c++ pcre* zlib openssl openssl-devel
cd /fastdfs
#下载PCRE,让Nginx支持重写功能。
wget  http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
tar -zxvf pcre-8.35.tar.gz
cd pcre-8.35#编译安装
./configure
make && make install#查看版本
pcre-config --version#上传nginx和fastdfs-nginx-module_v1.16.tar.gz到/fastdfs
cd /fastdfs
tar -zxvf nginx-1.15.2.tar.gz

fastdfs-nginx-module安装

cd /fastdfs
tar -zxf fastdfs-nginx-module_v1.16.tar.gz
vim fastdfs-nginx-module/src/config#去掉localCORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
cd /fastdfs/nginx-1.15.2
./configure  --add-module=/fastdfs/fastdfs-nginx-module-1.20/src/
make
/usr/local/nginx/sbin/nginx -V
make intall
#/usr/local/nginx/sbin/nginx -V 后如下图继续进行,不去检查nginx启动情况,需配置后启动

fastdfs-nginx-module安装编译失败解决方案

原因是:

无该/usr/include/local/fastdfs和/usr/include/local/fastcommon/文件

需将该路径修改到能找到该路径为止
vim fastdfs-nginx-module/src/config# 1.16版本修改为如下内容(建议使用1.16版本的fastdfs-nginx-module) CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/" # 1.20版本修改为如下内容ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/" CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/

nginx访问配置

将fastdfs-nginx-module/src下的mod-fastdfs.conf配置文件拷贝到/etc/fdfs文件目录下(在安装FastDFS主程序时已复制)

进入/etc/fdfs目录,修改mod_fastdfs.conf文件

vim /etc/fdfs/mod_fastdfs.conf   # 日志文件存放路径base_path=/tmp # tracker的地址 tracker_server=192.168.11.134:22122 # 组名 group_name=group1 # url是否包含group名称 url_have_group_name=true # 需要和storage配置的相同 storage_server_port=23000 # 存储路径个数,需要和store_path个数匹配 store_path_count=1 # 上传文件存储的位置,可自定义但一定要存在store_path0=/fastdfs/storage/data

配置nginx,80端口,server中的 location如:

    server {listen       8888;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location ~/group([1-9])/M00 {root   /fastdfs/storage/data/data;ngx_fastdfs_module;index  index.html index.htm;}

说明:

A、8888 端口值是要与/etc/fdfs/storage.conf 中的 http.server_port=8888 相对应, 因为 http.server_port 默认为 8888,如果想改成 80,则要对应修改过来。

B、Storage 对应有多个 group 的情况下,访问路径带 group 名,如/group1/M00/00/00/xxx, 对应的 Nginx 配置为:

   location ~/group([0-9])/M00 {root   /fastdfs/storage/data/data;ngx_fastdfs_module;}

复制http访问配置文件(2.安装FastDFS主程序中已经复制)

 #供nginx访问使用
cp /fdfs/fastdfs-5.11/conf/http.conf /etc/fdfs/
#供nginx访问使用
cp /fdfs/fastdfs-5.11/conf/mime.types /etc/fdfs/

启动nginx

#启动nginx
/usr/local/nginx/sbin/nginx
#重启
/usr/local/nginx/sbin/nginx -s reload

HHTP访问

利用client上传文件(以图为例)

#先将PC的图片上传带系统/fdfs路径下
fdfs_upload_file /etc/fdfs/client.conf /fdfs/1.png

上传成功后显示:

/group1/M00/00/00/wKgLhmEnDUiAD8WVAAQ8qaqNyck734.png

打开浏览器访问:

http://192.168.11.134:8888/group1/M00/00/00/wKgLhmEnDUiAD8WVAAQ8qaqNyck734.png

即显示如下:


创建访问data快捷方式——用于nginx代理访问时,可快捷输入找到目标文件

ln -s /fastdfs/storage/data/data/ /fastdfs/M00

4、卸载FastDFS

注意:所有删除操作请务必先查看是否存在文件文件是否为FastDFS相关和其他重要文件

FastDFS软件并未提供一键卸载功能,卸载比较麻烦,具体步骤可参考如下:

1、停止服务

# 停止tracker服务 service fdfs_trackerd stop # 停止storage服务 service fdfs_storaged stop

2、通过storage.conf找到base_path和store_path,然后删除相关文件

cat /etc/fdfs/storage.conf |grep base_path
cat /etc/fdfs/storage.conf |grep store_path
# 注意,如果有未备份的文件,请先备份再删除 rm -rf base_path文件夹 rm -rf store_path文件夹

3、通过tracker.conf找到base_path和store_path,然后删除相关文件

cat /etc/fdfs/tracker.conf |grep base_path
rm -rf base_path文件夹

4、删除配置文件目录

rm -rf /etc/fdfs/

5、删除链接文件

rm –rf /usr/local/bin/fdfs_trackerd
rm –rf /usr/local/bin/stop.sh
rm –rf /usr/local/bin/restart.sh

6、删除storage的链接文件

rm –rf /usr/local/bin/fdfs_storaged

7、删除/usr/bin/目录下FastDFS的可执行文件

# 列表查看
ll /usr/bin/fdfs_* # 执行删除
rm -rf /usr/bin/fdfs_*

8、删除/usr/include/目录下FastDFS相关的shell脚本

# 列表查看
ll /usr/include/fastdfs/* # 删除
rm -rf /usr/include/fastdfs/

9、删除/usr/lib64/目录下的库文件

# 列表查看
ll libfdfsclient* # 删除
rm -rf libfdfsclient*

10、删除/usr/lib/目录下的库

# 列表查看
ll libfdfsclient* # 删除
rm -rf libfdfsclient*

FastDFS单节点集群部署

环境准备工作

名称 说明
服务器IP 192.168.11.134
服务器IP 192.168.11.135
CentOS 7.x(mini最小化安装系统)
libfastcommon V1.0.39,FastDFS分离出的一些公用函数包
FastDFS v5.11,FastDFS本体
fastdfs-nginx-module v1.16,FastDFS和nginx的关联模块,解决组内同步延迟问题
nginx nginx 1.15.2,建议1.18

在集群中的每台服务器都根据FastDFS单机版部署后,每台服务器上应配置:

配置storage服务器

vi /etc/fdfs/storage.conf
#追加所有的tracker_servertracker_server=192.168.11.134:22122tracker_server=192.168.11.135:22122

保存后重启storage服务器

/etc/init.d/fdfs_storaged restart

配置Tracker服务器客户端

vim /etc/fdfs/client.conf#追加所有的tracker_servertracker_server=192.168.11.134:22122tracker_server=192.168.11.135:22122

验证

/usr/bin/fdfs_test /etc/fdfs/client.conf upload client.conf


在每台服务器上使用如下命令,可发现数据已经同步

ls /fastdfs/storage/data/data/00/00

使用浏览器访问集群中的任意IP,显示结果一致

http://192.168.11.134:8888/group1/M00/00/00/wKgLh2EsmmSAQ_CQAAF_XZ4s9GQ800.png

http://192.168.11.135:8888/group1/M00/00/00/wKgLh2EsmmSAQ_CQAAF_XZ4s9GQ800.png

FastDFS分布式文件系统集群(多节点)

参考连接:http://www.bjpowernode.com/tutorial_fastdfs/803.html

环境准备工作

名称 说明
服务器IP 192.168.11.134(部署tracker和storage,group1,client)
服务器IP 192.168.11.135(部署tracker和storage,group1,client)
服务器IP 192.168.11.136(部署storage,group2,client)
服务器IP 192.168.11.137(部署storage,group2,client)
CentOS 7.x(mini最小化安装系统)
libfastcommon V1.0.39,FastDFS分离出的一些公用函数包
FastDFS v5.11,FastDFS本体
fastdfs-nginx-module v1.16,建议v1.20,FastDFS和nginx的关联模块,解决组内同步延迟问题
nginx nginx 1.15.2,建议v1.18

在实际工作中根据实际需求进行规划。

对多台服务器,根据单机部署完成,均能使用网站访问后:(也可根据参考链接分别部署tracker和storage)

多台服务器同时操作使用xshell此功能进行部署

部署Tracker服务器

在tracker服务器上启动tracker

#非开机自启动(支持start|stop|restart|status)
service fdfs_trackerd start
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
#查看状态
service fdfs_trackerd status

部署storage server服务器

将storage server服务器其中两台配置为group1,另外两台部署为group2

storage server服务器都需要关闭tracker功能

service fdfs_trackerd stop

部署节点group 1

由于很多配置在单机部署时已经配置完成,只需在其中进行更改

vim /etc/fdfs/storage.confgroup_name=group1 #组名,根据实际情况修改,本节点值为 group1#增加集群tracker_server的ip地址tracker_server=192.168.11.134:22122tracker_server=192.168.11.135:22122

#非开机自启动(支持start|stop|restart|status)

service fdfs_storaged start

#非开机自重启支持start|stop|restart|status)

service fdfs_storaged restart

部署节点group 2

由于很多配置在单机部署时已经配置完成,只需在其中进行更改

vim /etc/fdfs/storage.confgroup_name=group2 #组名,根据实际情况修改,本节点值为 group2#增加集群tracker_server的ip地址tracker_server=192.168.11.134:22122tracker_server=192.168.11.135:22122

#非开机自启动(支持start|stop|restart|status)

service fdfs_storaged start

#非开机自重启支持start|stop|restart|status)

service fdfs_storaged restart

测试节点部署

四台服务器重启storage后

#可通过monitor来查看storage是否成功绑定
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
#若成功绑定会弹出很多行信息,失败则弹出几行

两个组的storage按照相同的步骤操作:

其中唯一的区别是一个是group_name=group1,另一个是group_name=group2

在tracker.conf配置文件配置存储group轮询

vim /etc/fdfs/tracker.conf#将默认的store_lookup=2改为store_lookup=0store_lookup=0#确认store_server值为0store_server=0重启tracker
service fdfs_trackerd restart

进行文件上传

#先将PC的图片上传带系统/fdfs路径下,会发现会存在不同的group节点,即表示节点部署成功

fdfs_upload_file /etc/fdfs/client.conf /fdfs/1.png

部署Http访问FastDFS上的文件

在每天服务器上进入/etc/fdfs目录,修改mod_fastdfs.conf文件

vim /etc/fdfs/mod_fastdfs.conf   # 增加tracker的地址 tracker_server=192.168.11.134:22122tracker_server=192.168.11.135:22122#修改组的个数group_count = 2  # 修改组名,根据实际情况,比如本机是group1就修改为group1,本机是group2,就改为group2group_name=group1 # 上传文件存储的位置,可自定义但一定要存在store_path0=/fastdfs/storage/data#在末尾增加2个组的具体信息:#其中store_path0的路径一定是上传文件存储的位置,否则会无法找到文件[group1]group_name=group1storage_server_port=23000store_path_count=1store_path0=/fastdfs/storage/data[group2]group_name=group2storage_server_port=23000store_path_count=1store_path0=/fastdfs/storage/data

在单机版部署nginx时,nginx.conf是如下配置,便无需更改,否则需对每个storage服务器的nginx进行更改

location ~ /group[1-9]/M0[0-9] {   ngx_fastdfs_module;
}

重启storage,启动Nginx

#重启storage
service fdfs_storaged restart#启动nginx
/usr/local/nginx/sbin/nginx
#重启
/usr/local/nginx/sbin/nginx -s reload

集群测试

利用client上传文件(以图为例)

#先将PC的图片上传带系统/fdfs路径下
fdfs_upload_file /etc/fdfs/client.conf /fdfs/1.png

上传成功后显示:

/group1/M00/00/00/wKgLh2EsxRqABvG8AAQ8qaqNyck069.png

#查看源文件

ls /fastdfs/storage/data/data/00/00

group1上的文件


group2上的文件


打开浏览器访问四台storage服务器的ip和各组名,都能访问成功(以下举例,自行测试):

http://192.168.11.134:8888/group1/M00/00/00/wKgLh2EsxRqABvG8AAQ8qaqNyck069.png

http://192.168.11.134:8888/group2/M00/00/00/wKgLh2EsxRqABvG8AAQ8qaqNyck069.png

http://192.168.11.135:8888/group1/M00/00/00/wKgLh2EsxRqABvG8AAQ8qaqNyck069.png

http://192.168.11.135:8888/group2/M00/00/00/wKgLh2EsxRqABvG8AAQ8qaqNyck069.png

tracker上部署nginx访问

配置两个tracker server服务器上的Nginx访问,这两个台服务器上的Nginx只需要做负载均衡。

#部署配置nginx负载均衡:
#http中增加
upstream fastdfs_storage_server {  server 192.168.11.134:8888;  server 192.168.11.135:8888;server 192.168.11.136:8888;server 192.168.11.137:8888;
}
server 8000{location ~ /group[1-9]/M0[0-9] {   proxy_pass http://fastdfs_storage_server; }
}


重启nginx

/usr/local/nginx/sbin/nginx -s reload

即可访问tracker server服务器的ip地址,比如:

http://192.168.11.134:8000/group1/M00/00/00/wKgLh2EsxRqABvG8AAQ8qaqNyck069.png

FastDFS单机、单节点和多节点集群部署文档相关推荐

  1. Redis集群部署文档(Ubuntu15.10系统)

    Redis集群部署文档(Ubuntu15.10系统) (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系 ...

  2. Kubernetes(k8s)入门及集群部署文档

    文章目录 一.k8s 快速入门 简介 部署方式的进化 k8s能做什么 架构 整体主从方式 Master 节点架构 Node 节点架构 概念 快速体验 流程叙述 二.k8s 集群安装 前置要求 了解ku ...

  3. 达梦数据库DSC集群安装文档

    达梦数据库DSC集群安装文档 一. DSC安装准备工作 1 1.1. 创建安装用户 2 1.2. 配置udev存储 2 二. DMDSC 搭建 8 三. 搭建DW容灾架构 39 修改dm.ini,数据 ...

  4. 细细品味Hadoop_Hadoop集群精华文档合集

    为什么80%的码农都做不了架构师?>>>    细细品味Hadoop_Hadoop集群精华文档合集 Hadoop作为开源的云计算平台,已引起了学术界和企业的普遍兴趣.本文集整理了Ha ...

  5. Redis集群明细文档(转)

    相信很多用过Redis的同学都知道,Redis目前版本是没有提供集群功能的,只能单打独斗.如果要实现多台Redis同时提供服务只能通过客户端自身去实现.目前根据文档已经看到Redis正在开发集群功能, ...

  6. Rhel6-mpich2 hpc集群配置文档

    系统环境: rhel6 x86_64 iptables and selinux disabled 主机: 192.168.122.121 server21.example.com 192.168.12 ...

  7. kubeadm安装Kubernetes V1.10集群详细文档

    1:服务器信息以及节点介绍 系统信息:centos1708 minimal    只修改IP地址 主机名称 IP 备注 node01 192.168.150.181 master and etcd r ...

  8. Linux中级实战专题篇:rabbitmq(消息中间件p2p模式和pub模式,消息队列rabbitmq详解,单机安装,集群部署以及配置实战)

    一.消息中间件相关概念 1.简介 消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台相关 的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息 队列模型,可以在分布 ...

  9. rabbitmq集群部署及配置

    rabbitmq集群部署及配置 文章目录 rabbitmq集群部署及配置 前言 一.原理介绍 二.部署方案 1.环境介绍 2.部署过程 小结 前言 消息中间件rabbitmq,一般以集群方式部署,主要 ...

  10. 【联邦学习】FATE 集群部署 step3

    [联邦学习]FATE 集群部署step1 [联邦学习]FATE 集群部署step2 部署FATE 参考中文集群部署文档 all 指的是2个虚拟机都要操作 f1 只的是1号虚拟机 f2 指的是2号虚拟机 ...

最新文章

  1. 站在这山看着那山高,到了那山没柴烧.
  2. matlab数据接口技术,实战MATLAB之文件与数据接口技术
  3. dietlibc中的strcpy算法浅析
  4. mockmvc get请求 tm的 一直404_大家快来看看404的兄弟姐妹
  5. 当年叱咤风云的框架Struts2,你可知Struts2内功如何修炼之体系结构
  6. 2008服务器网站设置密码,win2008服务器设置密码
  7. 服务器向客户端发送数据自动中断
  8. 二分从查找(2)按条件查找
  9. 实战之多有米项目测试环境搭建
  10. 《免费:商业的未来》“免费经济学”读书笔记----字节跳动案例分析
  11. java水彩画效果滤镜,把动物照片转成水彩画效果的PS滤镜教程
  12. Glide加载圆形图片并且带边框
  13. 决策树中的基尼系数、 熵之半和分类误差率
  14. python实现xlsx批量转xls(或者xls批量转xlsx)
  15. java并发机制_Java并发机制的底层实现原理.PDF
  16. 获取视频fps、总帧数
  17. Java设计模式大全
  18. 一个高逼格开发者必须理解的大型分布式网站的几点概念
  19. openpyxl报错修改:OSError: File contains no valid workbook part
  20. 前端学习笔记(一)HTML5

热门文章

  1. 区块链中心化业务必须基于中心化平台吗?
  2. FreeBSD下面安装PostgreSQL。
  3. WebAPI Delete方法报错405 Method Not Allowed
  4. 关于div+css布局值得注意的地方
  5. Java垃圾回收机制的工作原理
  6. js 程序执行与顺序实现详解
  7. 图像质量评价Code和Dataset
  8. 【事件驱动】【数码管识别】(C++多线程实现多幅图像的同步识别)
  9. 迭代器模式C++实现
  10. GPCP全球月降水量数据下载与读取