摘要:FastDFS 是一个开源的高性能 DFS(分布式文件系统)。它的主要功能包括:文件存储、文件同步和文件访问,以及大容量和负载均衡的设计(https://sourceforge.net/projects/fastdfs/)。

本文是个人在实际部署过程中记录下来的,主要涉及fdfs的安装、Tracker、Storage的配置,以及横向拓展Storage子节点的部署。


文章目录

  • 一、安装FastDFS
  • 1、准备环境
  • 2、安装libfastcommon
  • 3、安装FastDFS
  • 4、配置Tracker
  • 5、配置Storage :
  • 6、测试
  • 7、安装:fastdfs-nginx-module
  • 8、配置tracker nginx
  • 二、拓展Storage子存储节点
  • 1、在新的服务器上安装fdfs(具体过程不在重复)。
  • 2、本地测试


一、安装FastDFS

1、准备环境

(1)拷贝相关文件进入/usr/local:

fastdfs 适配arm架构 fastdfs 部署_fastdfs 适配arm架构


(2)最小化安装的linux系统,还需要安装依赖如下:

yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget

若未安装以上运行环境,就运行./make.sh。需要清除编译(./make.sh clean),安装好以上运行环境,重新运行即可。(如果是内网环境,建议本地最小化安装虚拟机,配置安装目录,执行上述语句后,将安装目录中的内容拷贝到服务器上直接安装即可(进入目录后执行:rpm -ivh *.rpm --nodeps --force ))

2、安装libfastcommon

进入目录,执行:

unzip libfastcommon-master.zip。

进入解压包下:./make.sh命令进行编译,没有error信息的话就说明编译成功了,最后再执行./make.sh install进行安装。
libfastcommon.so 默认安装到了/usr/lib64/libfastcommon.so,但是FastDFS主程序设置的lib目录是/usr/local/lib,所以此处需要重新设置软链接(类似于Windows的快捷方式):

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

3、安装FastDFS

解压:tar -zxvf fastdfs-5.08.tar.gz ,解压完成后进入目录fastdfs-5.08,依次执行./make.sh和 ./make.sh install
安装成功后,进入/etc/fdfs生成如上的3个.sample文件(示例配置文件),我们再分别拷贝出3个后面用的正式的配置文件

cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf

4、配置Tracker

重新编辑上一步准备好的/etc/fdfs目录下的tracker.conf配置文件,打开文件后依次做以下修改:

disabled=false #启用配置文件(默认启用)
port=22122 #设置tracker的端口号,通常采用22122这个默认端口
base_path=/opt/fastdfs_tracker #设置tracker的数据文件和日志目录
http.server_port=6666 #设置http端口号,默认为8080

配置完成后就可以启动Tracker服务器了,但首先依然要为启动脚本创建软引用,因为fdfs_trackerd等命令在/usr/local/bin中并没有,而是在/usr/bin路径下:

ln -s /usr/bin/fdfs_trackerd /usr/local/bin
ln -s /usr/bin/stop.sh /usr/local/bin
ln -s /usr/bin/restart.sh /usr/local/bin

最后通过命令启动Tracker服务器:

service fdfs_trackerd start // 启动Tracker
netstat-unltp|grep fdfs  //可以看到tracker服务运行的22122端口正常被监听

确认tracker正常启动后可以将tracker设置为开机启动,打开/etc/rc.d/rc.local并在其中加入以下配置:service fdfs_trackerd start 如果重启后发现未能自动启动则通过命令ll /etc/rc.d/rc.local检查一下rc.local是否具备可执行权限,若是无可执行权限则通过chmod +x /etc/rc.d/rc.local进行授权.

5、配置Storage :

mkdir /opt/fastdfs_storage
mkdir /opt/fastdfs_storage_data

接下来修改/etc/fdfs目录下的storage.conf配置文件: vi /etc/fdfs/storage.conf 打开文件后依次做以下修改:

disabled=false #启用配置文件(默认启用)
group_name=group1 #组名,根据实际情况修改
port=23000 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
base_path=/opt/fastdfs_storage #设置storage数据文件和日志目录
store_path_count=1 #存储路径个数,需要和store_path个数匹配
store_path0=/opt/fastdfs_storage_data #实际文件存储路径
tracker_server=192.168.111.11:22122  #tracker 服务器的 IP地址和端口号,如果是单机搭建,IP不要写127.0.0.1,否则启动不成功(此处的ip是我的CentOS虚拟机ip)
http.server_port=8888 #设置 http 端口号

配置完成后同样要为Storage服务器的启动脚本设置软引用:

ln -s /usr/bin/fdfs_storaged /usr/local/bin

接下来就可以启动Storage服务了:

service fdfs_storaged start //启动Storage服务
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf //查看storage服务器是否已经登记到 tracker服务器(也可以理解为tracker与storage是否整合成功)

6、测试

测试时需要设置客户端的配置文件,编辑/etc/fdfs目录下的client.conf 文件,打开文件后
vi /etc/fdfs/client.conf
依次做以下修改:配置时不要加注释,我加了之后upload时报错

base_path=/opt/fastdfs_tracker #tracker服务器文件路径
tracker_server=192.168.1.238:22122#tracker服务器IP地址和端口号
http.tracker_server_port=6666 # tracker 服务器的 http 端口号,必须和tracker的设置对应起来

配置完成后就可以模拟文件上传了,先给/opt目录下放一张图片: 1.jpg。然后通过执行客户端上传命令尝试上传:

/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /opt/1.jpg

上传后返回的文件存储地址:group1/M00/00/00/wKgB7lh3UeGAZYJvAACFao7PICk390.jpg

7、安装:fastdfs-nginx-module

安装:storage nginx
解压: tar -zxvf nginx-1.11.8.tar.gz
unzip fastdfs-nginx-module-master.zip
解压成功后就可以编译安装nginx了,进入nginx目录并输入以下命令进行配置:

./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module-master/src

紧接着就可以进行编译安装了,依次执行以下命令:

make
make install

安装完成后,我们在我们指定的目录/usr/local/nginx中就可以看到nginx的安装目录了,接下来要修改一下nginx的配置文件,进入conf目录并打开nginx.conf文件加入以下配置:

listen       9999;
location
~/group1/M00 {
      root /opt/fastdfs_storage_data/data;
      ngx_fastdfs_module;
}

然后进入FastDFS的安装目录/usr/local/fastdfs-5.08目录下的conf目录,将http.conf和mime.types拷贝到/etc/fdfs目录下:

cd /usr/local/fastdfs-5.08/conf
cp -r /usr/local/fastdfs-5.08/conf/http.conf /etc/fdfs/ 
cp -r /usr/local/fastdfs-5.08/conf/mime.types /etc/fdfs/

接下来还需要把fastdfs-nginx-module安装目录中src目录下的mod_fastdfs.conf也拷贝到/etc/fdfs目录下:

cp -r /usr/local/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/

打开mod_fastdfs.conf并按顺序依次编译以下内容:

base_path=/opt/fastdfs_storage #保存日志目录
tracker_server=192.168.1.238:22122 #tracker服务器的IP地址以及端口号
storage_server_port=23000 #storage服务器的端口号
url_have_group_name = true #文件 url 中是否有 group 名
store_path0=/opt/fastdfs_storage_data # 存储路径
group_count = 1 #设置组的个数.

#设置了group_count = 1,接下来就需要在文件尾部追加group setting:

[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data

接下来还需要建立 M00 至存储目录的符号连接:

ln -s /opt/fastdfs_storage_data/data /opt/fastdfs_storage_data/data/M00

最后启动nginx:/usr/local/nginx/sbin/nginx。启动时报下面的错误:

8、配置tracker nginx

同理,再装一个nginx,目录命名为nginx2,安装路径依旧放在/usr/local下,由于和之前一样,此处就不再做详细解释:

mkdir nginx2
cd nginx-1.11.8/
./configure --prefix=/usr/local/nginx2 --add-module=/usr/local/fastdfs-nginx-module-master/src
make
make install

接下来依然是修改nginx2的配置文件,进入conf目录并打开nginx.conf文件加入以下配置,storage的nginx无需修改listen端口,即默认的80端口,并将upstream指向tracker的nginx地址:

upstream fdfs_group1 {
     server 127.0.0.1:9999;
}
location /group1/M00 {
     proxy_pass http://fdfs_group1;
}

fastdfs 适配arm架构 fastdfs 部署_fastdfs_02

接下来启动nginx2:/usr/local/nginx2/sbin/nginx 最后一步就是需要修改/etc/fdfs目录下的client.conf文件,打开该文件并加入以下配置:

vi /etc/fdfs/client.conf
base_path=/data/fastdfs_storage  #日志存放路径
tracker_server=192.168.1.238:22122  #tracker 服务器 IP 地址和端口号
http.tracker_server_port=6666  # tracker 服务器的 http 端口号,必须和tracker的设置对应起来

至此,整个Fdfs就完成了安装部署。

二、拓展Storage子存储节点

注意:在新的服务器上配置Storage,当group名称一样时,实现文件备份,当group名称不一样时,实现文件拓展。

1、在新的服务器上安装fdfs(具体过程不在重复)。

  1. 安装FastDFS,配置Storage。
  2. 修改storage.conf的tracker地址为老服务器ip。
  3. 配置storage.conf,文件中的group名字,如已经存在的storage属于group1,新加的设置为group2;
  4. 安装nginx(fastdfs-nginx-module),修改mod_fastdfs.conf文件:
url_have_group_name = true
group_name=group2
#########增加[group2]#########新增group,则前面的都要配置(哪怕不使用)#########
group_count = 2
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/root/fastdfs_storage_data
  1. 重新启动nginx服务,通过命令 /usr/bin/fdfs_monitor /etc/fdfs/storage.conf。可查看文件服务器的运行状态和配置信息。
  2. 修改原tracker服务器的nginx,代理新storage服务器的nginx,如下所示:

2、本地测试

修改原服务器上的tracker.conf文件:

store_lookup=0  #0-轮询,1-指定目录,2-负载,选择剩余空间大的

调用文件clent.conf配置文件,通过文件上传命令上传文件:

/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /opt/test.txt

查看文件的存储地址信息如下:

fastdfs 适配arm架构 fastdfs 部署_fastdfs 适配arm架构_03


在此,可以看到新的服务器上的节点也可以储存文件了,后期存储不够可以按照此方法无限拓展了