这篇文章介绍如何搭建FastDFS 集群
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
系统系统 centos6.5
六台服务器:192.168.53.85/86/90
192.168.54.73/74/75
安装包:
服务器规划
tracker服务器:192.168.53.85/86
storage服务器:192.168.53.90
安装依赖包
注意:FastDFS 5.x 取消了对 libevent 的依赖,添加了对 libfastcommon 的依赖。
在安装FastDFS和Nginx之前,需确保gcc、gcc-c++、 libstdc++-devel、make等依赖库和工具已经安装
安装libfastcommon类库
安装FastDFS必须先安装libfastcommon类库,否则会导致报错,安装直接根据如下几个步骤即可~
安装FastDFS
安装好之后,在/usr/bin目录下,可以看fdfs开头的命令工具
FastDFS安装完成之后,所有配置文件在/etc/fdfs目录下,tracker需要tracker.conf配置文件,storage需要storage.conf配置文件。
将tracker.conf.sample文件重命名为tracker.conf,然后修改配置文件/etc/fdfs/tracker.conf
只需要修改 base_pash路径(文件存储路径)
配置文件中有这几个参数需要注意:
使用<code>/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start</code>尝试启动tracker
没有报错,查看端口22122是否开始监听,确认启动是否成功。
也可以查看tracker的日志是否启动成功
至此,一个简单的的tracker配置就完成了,Tracker也成功启动~, 接下来要做的就是完成Storage的配置~
将存储节点分为两个组,其中group1 (72、73)、group2 (74、75)。
创建存储目录和配置文件
修改配置
storage主要完成base_path,store_path以及tracker的连接地址以及storage的http服务端口配置等。
主要有如下几个参数:
启动Storage
启动storage,会根据配置文件的设置自动创建多级存储目录,查看端口23000是否开始监听,确认启动是否成功。
也可以查看storage的日志是否启动成功。
验证storage是否登记到tracker服务器
使用<code>fdfs_monitor /etc/fdfs/storage.conf</code>,运行fdfs_monitor查看storage服务器是否已经登记到tracker服务器。
可以在任一存储节点上使用如下命令查看集群的状态信息
如果出现ip_addr = Active, 则表明storage服务器已经登记到tracker服务器,如下:
至此,tracker、storage等配置都完成并成功启动
接下来,继续完成Nginx和fastdfs-nginx-module的安装和配置
注意:fastdfs-nginx-module模块只需要安装到storage上。
解压安装包
需要先配置软链接:
安装nginx的时候,添加 fastdfs-nginx-module-master模块,如: <code>./configure --add-module=../fastdfs-nginx-module/src/</code>
configure 成功输出结果:
configure成功了
接下来执行make和make install
确定编译没有出错,再进行install
安装成功,查看版本信息
配置fastdfs-nginx-module
进入fastdfs-nginx-module的src目录,将md_fastdfs.conf配置文件拷贝到/etc/fdfs/目录中
配置 mod_fastdfs.conf
在末尾增加3个组的具体信息:
建立M00至存储目录的符号连接。
配置nginx
编辑<code>/usr/local/nginx/conf</code>配置文件目录下的nginx.conf,设置添加storage信息并保存。
将server段中的listen端口号改为8080,启动用户使用root。
在server段中添加:
复制fastdfs中的http.conf、mime.types文件到/etc/fdfs
至此,nginx以及FastDFS插件模块设置完成。
运行nginx之前,先要把防火墙中对应的端口打开(本例中为8080)。
启动nginx,确认启动是否成功。(查看是否对应端口8080是否开始监听)
也可查看nginx的日志是否启动成功或是否有错误。
在error.log中没有错误,既启动成功。可以打开浏览器,直接访问http://192.168.53.90:8080,查看是否弹出nginx欢迎页面。
查看到欢迎页则说明,nginx运行成功。之后依次在其它storage上全部安装上nginx并确认运行正常。
将nginx设置为开机启动:
将运行命令行添加进文件:<code>/usr/local/nginx/sbin/nginx</code>
在tracker上安装的nginx主要为了提供http访问的反向代理、负载均衡以及缓存服务。
解压
运行./configure进行安装前的设置,主要设置安装路径
运行make进行编译,确保编译成功。
运行make install进行安装。
编辑/usr/local/nginx/conf配置文件目录下的nginx.conf,设置负载均衡
配置信息
至此,nginx设置完成。
运行nginx之前,先要把防火墙中对应的端口打开(本例中为8080)
尝试上传一个文件到FastDFS,然后访问试试。先配置client.conf文件。
修改以下参数:
使用/usr/local/bin/fdfs_upload_file上传一个文件,程序会自动返回文件的URL。
然后使用浏览器访问:
看有查看到图片,说明集群搭建成功!
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnauEmZ5MmN0Y2YjFmMiBTYlFTZxUWN2YGNmljNyY2Y5EGMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.jpg)
生产中可以将:<code>/root/fastdfs</code> 替换为:<code>/fdfs/storage</code>
在nginx目录下,执行configure之后,进行make编译报错,报错内容如下:
做以下修改
将、
修改为:
其实就是改动了fastdfs的路径,没改之前直接访问<code>cd /usr/local/include/fastdfs</code>为空目录。
或者设置对应的软连接也可以。
修改完成之后在nginx目录,重新configure和make就好了。
在在storage上配置nginx相关信息后启动nginx,查看日志发现报错:
解决方案:
然后重启nginx
查看日志,还报错:
将
改为
重启正常
搭建完成之后,访问<code>http://192.168.53.85:8080/group2/M00/00/00/wKg26VncfamAEqZ0AAu-4Kcs3QI677.jpg</code>
地址图片总是报404无法找到,跟踪到storage服务器,查看nginx的error日志发现如下;
原因是nginx启动的时候默认会以nobody用户来启动,这样的话就权限访问<code>/root/fastdfs/data</code>的权限
修改这个问题有两个版本,第一个方案设置nginx以root身份启动,或者设置nobody用户权限可以访问<code>/root/fastdfs/data</code>地址。这里只展示第一种方案的修改
重启nginx后问题解决
这里有一个网友整理的word版本的安装配置文档,包括缓存各方面的内容比较全面,需要的朋友在公众号回复:“fastdfs”
参考:
<a href="https://my.oschina.net/wangmengjun/blog/1142982">CentOS上安装分布式文件系统FastDFS & 配置和问题</a>