FastDFS
fastDFS是一个开源的轻量级分布式文件系统,它可以对文件进行管理操作,功能包括:
- 文件存储
- 文件自动同步
- 文件的访问(文件的上传 下载等)
解决了大容量存储和负载均衡,特别适合以文件为载体的在线服务,例如相册网站,视频网站,商城等。
FastDFS是一个专门为互联网量身定制,充分考虑了冗余备份,负载均衡,扩容机制,并注重高可用,高性能等指标,使用FastDFS可以何用意搭建一套高性能的问及那服务集群提供服务。
FastDFS里面又两个核心角色:
-
跟踪器(tracker)
负责调度工作,在访问上负责负载均衡
-
存储节点(storage)
文件的储存,以及文件的管理操作,他提供文件的存储,同步,提取等接口
FastDFS会对文件的metaData进行管理,所谓的metaData是指文件的相关属性,以及key value的形式表示,如果我们上传的是一张图片,图片的宽,高等属性会被记录成 width=888,metaData也就是文件的属性列表包含多个键值对。
跟踪器以及存储节点都可以使一台或多台服务服务器组成,并且跟踪器和存储节点的服务增加贺下线都不会应该想服务的正常运行,其中跟踪器里面的所有服务都是对等的,可以根据服务器的压力岁时调整。
为了支持大容量数据的存储,存储节点采用分卷的组织方式,这存储系统由一个或者多个卷组成。卷与卷之间的系统是相互独立的,所有的卷中的我呢见容量累加就是整个存储系统的所有文件。每一个卷都可以由一台或多台服务器组成的,卷中的所有存储服务中文件都是相同的,卷中的多台服务实现了冗余备份及高可用的负载均衡。在卷中增加服务器的时候,所有文件都由系统自动完成同步,当文件同步完成后系统自动将服务器上线提供服务。
当存储空间不足时,可以动态的添加卷,来达到容量的扩充,FastDFS中文件的标识符由两部分组成
卷名+文件名
安装FastDFS
-
安装gcc和c++
[root@Test1 ~]# yum install gcc [root@Test1 ~]# yum install gcc -c++
-
解压V1.0.7(fastDFS运行的一些基本库)
[root@Test1 local]# tar -zxvf V1.0.7.tar.gz
-
编译
[root@Test1 ~]# cd libfastcommon-1.0.7 [root@Test1 libfastcommon-1.0.7]# ./make.sh
-
安装
[root@Test1 libfastcommon-1.0.7]# ./make.sh install
-
简历软连接
[root@Test1 libfastcommon-1.0.7]# ln -s /usr/lib64/libfastcommmon.so /usr/local/lib/libfafstcommon.so [root@Test1 libfastcommon-1.0.7]# ln -s /usr/lib64/libfastcommmon.so /usr/lib/libfafstcommon.so [root@Test1 libfastcommon-1.0.7]# ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so [root@Test1 libfastcommon-1.0.7]# ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
安装tracker
[root@Test1 local]# tar -zxvf V5.05.tar.gz
[root@Test1 fastdfs-5.05]# ./make.sh
[root@Test1 fastdfs-5.05]# ./make.sh install
[root@Test1 fastdfs-5.05]# cd /etc/fdfs/
# 拷贝一份相同的文件
[root@Test1 fdfs]# cp client.conf.sample client.conf
[root@Test1 fdfs]# cp storage.conf.sample storage.conf
[root@Test1 fdfs]# cp tracker.conf.sample tracker.conf
[root@Test1 local]# cd /etc/fdfs
[root@Test1 fdfs]# ls
client.conf storage.conf tracker.conf
client.conf.sample storage.conf.sample tracker.conf.sample
# 修改配置文件
[root@Test1 fdfs]# vim tracker.conf
bind_addr=192.168.218.130
bese_path=/usrdata/fastdfs
[root@Test1 fdfs]# vim storage.conf
bind_addr=192.168.218.130
bese_path=/usrdata/fastdfs
store_path0=usrdata/fastdfs
tracker_server=192.168.218.130:22122
[root@Test1 fdfs]# vim client.conf
bese_path=/usrdata/fastdfs
tracker_server=192.168.218.130:22122
# 创建目录
[root@Test1 fdfs]# mkdir /usrdata
[root@Test1 fdfs]# mkdir /usrdata/fastdfs
# 启动服务
[root@Test1 fdfs]# fdfs_trackerd /etc/fdfs/tracker.conf
[root@Test1 fdfs]# fdfs_storaged /etc/fdfs/storage.conf
## 安装nginx
# 解压文件
[root@Test1 local]# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
# 切换目录
[root@Test1 local]# cd fastdfs-nginx-module/src/
# 修改配置文件
[root@Test1 src]# vim config
CORE_INCS="$CORE_INCS/usr/include/fastdfs/usr/include/fastcommon/"
# 拷贝文件
[root@Test1 src]# cp mod_fastdfs.conf /etc/fdfs
# 编辑文件
[root@Test1 src]# vim /etc/fdfs/mod_fastdfs.conf
base_path=/usrdata/fastdfs
tracker_server=192.168.218.130:22122
url_have_group_name = true
store_path0=/usrdata/fastdfs
# 建立软连接
[root@Test1 src]# ln -s /usrdata/fastdfs/data /usrdata/fastdfs/data/M00
# 拷贝http相关文件到 etc fdfs下
[root@Test1 src]# cp /usr/local/fastdfs-5.05/conf/http.conf /etc/fdfs/
[root@Test1 src]# cp /usr/local/fastdfs-5.05/conf/mime.types /etc/fdfs/
## ngin 安装
# 安装pcre
[root@Test1 local]# tar -zxvf pcre-8.36.tar.gz
[root@Test1 local]# cd pcre-8.36
[root@Test1 pcre-8.36]# ./configure
[root@Test1 pcre-8.36]# make && make install
检查/lib64/下是否有 libpcre.so.1 如果没有建立软连接(有就不用执行这个命令)
[root@Test1 pcre-8.36]# ln -s /usr/local/lib/libpcre.so.1/lib64
# 安装zlib
[root@Test1 local]# tar -zxvf zlib-1.2.8.tar.gz
[root@Test1 local]# cd zlib-1.2.8
[root@Test1 zlib-1.2.8]# ./configure
[root@Test1 zlib-1.2.8]# make && make install
# 安装 openssl
[root@Test1 zlib-1.2.8]# yum install openssl openssl-devel
## 正式安装nginx
[root@Test1 local]# tar -zxvf nginx-1.8.0.tar.gz
[root@Test1 local]# cd nginx-1.8.0
[root@Test1 nginx-1.8.0]# ./configure --prefix=/usr/local/ngin --add-module=/usr/local/fastdfs-nginx-module/src
[root@Test1 nginx-1.8.0]# make && make install
[root@Test1 local]# cd nginx/conf/
[root@Test1 conf]# vim nginx.conf
# 第2行
user root;
# 在第47行插入以下内容
location /group1{
root /usrdata/fastdfs/data;
ngx_fastdfs_module;
}
# 安装killall
[root@Test1 conf]# yum install psmisc
# 启动nginx
[root@Test1 sbin]# ./nginx -c /usr/local/nginx/conf/nginx.conf
# 关闭命令
[root@Test1 sbin]# killall fdfs_trackerd
[root@Test1 sbin]# killall fdfs_storaged
# 启动命令
[root@Test1 sbin]# fdfs_trackerd /etc/fdfs/tracker.conf
[root@Test1 sbin]# fdfs_trackerd /etc/fdfs/storage.conf
# nginx相关命令
# 配置文件启动
[root@Test1 sbin]# ./nginx -c /usr/local/ngin/conf/nginx.conf
# 关闭命令
[root@Test1 sbin]# ./nginx -s quit
[root@Test1 sbin]# ./nginx -s stop
# 普通启动
[root@Test1 sbin]# service nginx restart
# 重新加载配置文件
[root@Test1 sbin]# ./nginx -s reload
# 查看
[root@Test1 sbin]# tail -f /usr/local/ngin/logs/error.log
# 测试上传
[root@Test1 sbin]# /usr/bin/fdfs_test /etc/fdfs/client.conf upload /1.png