首页 > 代码库 > CentOS6.4系统下FastDFS部署
CentOS6.4系统下FastDFS部署
(一) 概述
FastDFS是一个开源的分布式文件系统,她对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。
FastDFS系统结构如下图所示:
上传文件交互过程:
1. client询问tracker上传到的storage,不需要附加参数;
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件上传。
下载文件交互过程:
1. client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件下载。
需要说明的是,client为使用FastDFS服务的调用方,client也应该是一台服务器,它对tracker和storage的调用均为服务器间的调用。
(二) 安装环境准备
后面加* 表示对各台机器采取相同的操作
- 服务器环境:CentOS6.4_x86-64(需要gcc编译环境)*
- 本次实验环境说明:
服务器 | Ip | 端口 | 角色 |
Tracker | 192.168.11.224 | 22122 | Tracker server |
Storage | 192.168.11.225 | 23000 | Storage server |
- 安装包*:
libevent-2.0.21-stable.tar.gz
FastDFS_v3.11.tar.gz
fastdfs-nginx-module_v1.10.tar.gz
nginx-1.5.13.tar.gz
pcre-8.32.tar.gz
4、修改服务器机器名称*:
vi /etc/sysconfig/network
HOSTNAME=localhost à HOSTNAME=tracker1
如果是storage,则HOSTNAME=storage1,或HOSTNAME=storage2等等
群集类服务器机器名的命名方式以节点名加IP地址后三位,不足三位则以0补充。
5、关闭iptables和selinux*
(三) 安装libevent
1、卸载系统自带libevent*
# rpm -qa |grep libevent
libevent-1.4.13-4.el6.x86_64
# rpm -elibevent-1.4.13-4.el6.x86_64 --nodeps
2、为Tracker和Storage节点节点安装libevent*
#tar-zxvf libevent-2.0.21-stable.tar.gz
#cd libevent-2.0.21-stable
#./configure
# make && make install
为libevent创建软链接到/lib库下,64位系统对应/lib64 *
ln -s /usr/local/lib/libevent* /lib/
ln -s /usr/local/lib/libevent* /lib64/
(四) 为 tracker节点安装 FastDFS
1、编译安装*
#tar -zxvfFastDFS_v3.11.tar.gz
#cd FastDFS
如果Trackerd需要使用内置的webserver,需要修改make文件
# vi make.sh
#WITH_HTTPD=1 à WITH_HTTPD=1
#WITH_LINUX_SERVICE=1àWITH_LINUX_SERVICE=1 [去掉前面的#号即可]
# ./make.sh
# ./make.sh install
2、创建存储目录*
# mkdir -p /home/iflytek/fastdfs
3、修改tracker.conf配置
vi /etc/fdfs/tracker.conf
base_path=/home/yuqing/fastdfs à base_path=/home/iflytek/fastdfs
store_group=group2à store_group=group1
##include http.conf à#includehttp.conf
4、启动tracker
/usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
重新启动tracker命令如下:
/usr/local/bin/restart.sh /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
(五) 为storage 节点安装 FastDFS
1、修改storage.conf配置
# vi /etc/fdfs/storage.conf
base_path=/home/yuqing/fastdfs --> /home/iflytek/fastdfs
store_path0=/home/yuqing/fastdfs --> store_path0=/home/iflytek/fastdfs
group_name=group1
tracker_server=192.168.209.121:22122 --> tracker_server=192.168.11.224:22122
##include http.conf --> #include http.conf
2、取消storage默认的http服务
#HTTP settings
http.disabled=true
3、启动storage
/usr/local/bin/fdfs_storaged/etc/fdfs/storage.conf
重新启动storage命令如下:
/usr/local/bin/restart.sh /usr/local/bin/fdfs_storaged/etc/fdfs/storage.conf
此时确保可以与tracker通讯,关闭tracker服务器的防火墙或添加入站规则。如果此时出现异常请检查/home/iflytek/fastdfs/logs/storage.log文件的相关内容。
(六) Nginx在storage节点上安装部署
1、安装 pcre
# tar zxvf pcre-8.32.tar.gz
# cd pcre-8.32
# ./configure
# make
# make install
默认安装到/usr/local/lib下即可。
2、安装fastdfs-nginx-module和nginx组件
#cd /root
#tar -xzvffastdfs-nginx-module_v1.10.tar.gz
# cd /root
# tar -xzvfnginx-1.5.13.tar.gz
# cd nginx-1.5.13
# ./configure --prefix=/usr/local/nginx --add-module=/root/fastdfs-nginx-module/src
#make
#make install
3、在nginx的server配置段中增加M00的location声明并修改nginx默认工作端口80为8888
vi/usr/local/nginx/conf/nginx.conf
server {
listen 80; à8888
server_name localhost;
location /group1/M00 {
root /home/iflytek/fastdfs/data;
ngx_fastdfs_module;
}
......
}
3、创建M00目录的软连接
#mkdir -p /home/iflytek/fastdfs/data/M00
#ln -s /home/iflytek/fastdfs/data /home/iflytek/fastdfs/data/M00
4、修改mod_fastdfs.conf
# cp/root/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
# vi/etc/fdfs/mod_fastdfs.conf
base_path=/home/iflytek/fastdfs====> 放置log的目录
tracker_server=192.168.11.224:22122 ====> tracker server的ip和端口
group_name=group1 ====> 此台storage server所属的服务器组名
url_have_group_name= true ====> 在URL中包含group名称
store_path0=/home/iflytek/fastdfs ====> 放置文件的目录
5、启动nginx
#/usr/local/nginx/sbin/nginx
启动nginx 报libpcre.so.1找不到的错误
32位系统 ln -s /usr/local/lib/libpcre.so.1 /lib
64位系统 ln -s /usr/local/lib/libpcre.so.1 /lib64
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
Killall nginx
(七) 配置Client及上传测试
在FastDFS的tracker或者storage节点上都可以承担client的角色。只需要配置一下client即可(本例在tracker节点上配置client),详细配置如下:
1、修改client.conf
# vi /etc/fdfs/client.conf
base_path=/home/yuqing/fastdfs-> base_path=/home/iflytek/fastdfs
tracker_server=192.168.209.121:22122 -> tracker_server=192.168.11.224:22122
##include http.conf ->#include http.conf
2、上传文件验证
#cd /root
# /usr/local/bin/fdfs_test /etc/fdfs/client.conf upload install.log
This is FastDFS client test program v3.11
Copyright (C) 2008, Happy Fish / YuQing
FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/
for more detail.
[2014-04-14 18:21:26] DEBUG - base_path=/home/iflytek/fastdfs, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0
……..
http://192.168.11.224:8080/group1/M00/00/00/wKgL4FNLtqaikmQxAABw_8UwDjI625_big.log
通过浏览器访问上述标红的文件地址,如果浏览器返回文件的内容则说明部署成功。
附录:
1、Group中设置多存储路径
在FastDFS的一个Group中可以设置多个存储路径,这样就可以使数据存储到多个存储目录中。设置多路径后至于数据存储到哪个目录中是由FastDFS随机分配的,关于Group中多存储路径的设置详细信息如下所述:
1) 修改storage服务器上的storage.conf
- 编辑storage.conf
Vi /etc/fdfs/storage.conf
- 修改存储路径节点数
# path(disk or mount point) count, default value is 1
store_path_count=3 //根据实际情况修改配置的路径数,我这里配置了三个路径,默认是1
- 添加存储路径
# store_path#, based 0, if store_path0 not exists, it‘s value is base_path
# the paths must be exist
store_path0=/iflytek/fastdfs //第一个数据存储路径
store_path1=/home/iflytek/fastdfs //第二个存储路径
store_path2=/opt/iflytek/fastdfs //第三个存储路径
#store_path1=/home/yuqing/fastdfs2
备注:上面的三个存储路径必须事先提前建立好,否则在重启storage服务时会提示找不到路径。路径的命名规则需遵守store_pathN的方式其中N代表1,2,3….N。
2) 在nginx的server配置段中增加location声明
在storage.conf中增加了多个路径后需要在nginx的配置中对该配置进行声明,否则存储的数据将无法下载,这里以增加两个路径为例。
- 编辑nginx.conf增加如下配置项
Vi /usr/local/nginx/conf/nginx.conf
备注:必须在nginx的配置文件中作上述声明,否则上传的文件将无法通过返回的url地址进行下载。在此声明中store_path0对应M00,store_path1对应M01,以此类推。
- 对新增加目录创建软连接
ln –s /home/iflytek/fastdfs/data /home/iflytek/fastdfs/data/M01
ln –s /opt/iflytek/fastdfs/data /opt/iflytek/fastdfs/data/M02
3) 修改storage服务器上的mod_fastdfs.conf文件
- 修改存储路径节点数
# path(disk or mount point) count, default value is 1
store_path_count=3
- 添加存储路径
# store_path#, based 0, if store_path0 not exists, it‘s value is base_path
# the paths must be exist
store_path0=/iflytek/fastdfs
store_path1=/home/iflytek/fastdfs
store_path2=/opt/iflytek/fastdfs
备注:在mod_fastdfs.conf中添加文件目录和storage.conf中增加的目录是相同的。