FastDFS介绍
FastDFS是一个开源的分布式文件系统,她对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。
存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口,FastDFS同时对文件的meta data进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key value pair)方式表示,如:width=1024,其中的key为width,value为1024。文件meta data是文件属性列表,可以包含多个键值对。
FastDFS系统结构
在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。
当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。
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的调用均为服务器间的调用。
软件安装包
安装包:FastDFS_4.06.tar.gz fastdfs-nginx-module_v1.15.tar.gz nginx-1.4.0.tar.gz libevent libevent-devel
yum -y install libevent libevent-devel
安装FastDFS
下载地址:http://download.csdn.net/detail/u011650048/8382263
tar -zxvf FastDFS_4.06.tar.gz
cd FastDFS
./make.sh
./make.sh install
配置FastDFS
Tracker:接受请求,调度请求,路由请求
Storage:文件存放的地方
Client:客户端,发起请求
默认配置文件在/etc/fdfs/,有需要可以修改。
· tracker.conf:base_path=/fdfs
· storage.conf
· base_path=/fdfs
· store_path0=/fdfs
· tracker_server=192.168.199.223:22122
· client.conf
. base_path=/fdfs
. tracker_server=192.168.20.160:22122
.http.tracker_server_port=8888(改成nginx的端口)
改完上面的配置文件,已经基本OK了
启动tracker fdfs_trackerd/etc/fdfs/tracker.conf
启动storage fdfs_storaged/etc/fdfs/storage.conf
测试上传 /usr/local/bin/fdfs_test /etc/fdfs/client.conf upload /tmp/aa.txt
配置nginx
tar -zxvf fastdfs-nginx-module_v1.15.tar.gz
tar -zxvf nginx-1.4.0.tar.gz
cd nginx-1.4.0./configure --prefix=/usr/local/nginx--add-module=/root/fastdfs-nginx-module/src
make && make install
查看nginx是否安装成功[root@kb3 ~]# /usr/local/nginx/sbin/nginx -t
ngx_http_fastdfs_set pid=1789
nginx: the configuration file/usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file/usr/local/nginx/conf/nginx.conf test is successful
查看nginx的配置
[root@kb3 ~]# /usr/local/nginx/sbin/nginx-V
nginx version: nginx/1.4.0
built by gcc 4.1.2 20080704 (Red Hat4.1.2-55)
configure arguments:--prefix=/usr/local/nginx --add-module=/root/fastdfs-nginx-module/src
修改nginx.conf
1. location /M00 {
root /fdfs/data;
ngx_fastdfs_module;
}
或者
location /group1 /M00 {
root /fdfs/data;
ngx_fastdfs_module;
}
如果使用group1就修改client.conf
很明显的可以看出来把url_have_group_name = false更改为true
# if the url / uriincluding the group name
# set to false when urilike /M00/00/00/xxx
# set to true when urilike ${group_name}/M00/00/00/xxx, such as group1/M00/xxx
# default value is false
url_have_group_name =true
2.fastdfs的nginx的module中的mod_fastdfs.conf,copy到/etc/fdfs下,修改配置
base_path=/tmp
tracker_server=192.168.199.223:22122
重启nginx服务 /etc/init.d/nginxd restart
执行:/usr/local/bin/fdfs_test /etc/fdfs/client.conf upload /tmp/aa.txt
执行结果:
source ip address:192.168.199.223
file timestamp=2015-01-2117:43:52
file size=17
file crc32=4255546601
file url:
http://192.168.199.223:8888/group1/M00/00/00/wKjH31S_dNiAQ3C5AAAAEf2mfOk927.txt
访问:http://192.168.199.223:8888/group1/M00/00/00/wKjH31S_dNiAQ3C5AAAAEf2mfOk927.txt
如果修改端口为8888,nginx的监听端口也对应8888