最近接收了公司里面一个云平台项目,发现文件存储管理那块太乱,也没有用成熟框架去搞,就下很心把问题整改了。
目前选择成熟的文件管理框架有两个,一个是fastdfs,一个是hdfs,我对两个框架的选择是基于需不需对文件数据进行2次挖掘考虑的,(hdfs可以做并行化计算,属于hadoop生态圈的),基于我们目前项目考虑,还是选择了fastdfs。
首先讲解下fastdfs的优点:
FastDFS主要用于大中网站,为文件上传和下载提供在线服务。所以在负载均衡、动态扩容等方面都支持得比较好,FastDFS不会对文件进行分快(切分)存储。
fastdfs 介绍:
FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage),跟踪器主要做调度工作,在访问上起负载均衡的作用。
存储节点存储文件,完成文件管理的所有功能:就是这样的存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key value)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以包含多个键值对。
跟踪器和存储节点都可以由一台或多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。
为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。
在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。
当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。
FastDFS中的文件标识分为两个部分:卷名和文件名,二者缺一不可。
1.安装包
软件包 | 版本 |
---|---|
FastDFS | v5.05 |
libfastcommon | v1.0.7 |
fastdfs-nginx-module | v1.16 |
nginx | v1.12.1 |
2.安装libevent
#yum -y remove libevent //先卸载原始的libevent
#tar xvf libevent-2.0.20-stable.tar.gz
#cd libevent-2.0.20-stable/
#./configure –prefix=/usr
#make
#make install
2.安装libfastcommon
#tar xvf libfastcommonV1.0.7.tar.gz
#./make.sh
#./make.sh install
3.安装FastDFS
#tar xvf FastDFS_v5.05.tar.gz
#./make.sh
#./make.sh install
从这里可以看见有个拷贝过程将目录下的配置拷贝到 /etc/fdfs
#cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
将里面的信息改下
disabled=false # 启用配置文件
port=22122 # tracker服务器端口(默认22122)
base_path=/fastdfs/tracker # 存储日志和数据的根目录
storage安装过程一样
只需要改下storage的配置就可以
disabled=false # 启用配置文件
port=23000 # storage服务端口
base_path=/fastdfs/storage # 数据和日志文件存储根目录
store_path0=/fastdfs/storage # 第一个存储目录
tracker_server=192.100.139.121:22122 # tracker服务器IP和端口
启动如果报告
file /usr/local/bin/restart.sh does not exist!
参考:http://www.linuxidc.com/Linux/2016-09/135537.htm
稍后补充怎么使用
//////////////////////////////////////////////////////////////////////////
安装的全命令:
安装libfastcommon
unzip libfastcommon-master.zip
yum -y install unzip zip
yum -y install gcc-c++
./make.sh
./make.sh install
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
安装 FastDFS
tar -zxvf fastdfs-5.05.tar.gz
./make.sh
./make.sh install
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
安装 Tracker 节点
mkdir /opt/fastdfs_tracker //创建数据文件路径
接下来就要重新编辑上一步准备好的/etc/fdfs目录下的tracker.conf配置文件,打开文件后依次做以下修改:
disabled=false #启用配置文件(默认启用)
port=22122 #设置tracker的端口号,通常采用22122这个默认端口
base_path=/opt/fastdfs_tracker #设置tracker的数据文件和日志目录
http.server_port=6666 #设置http端口号,默认为8080
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
service fdfs_trackerd start // 启动trackerd
netstat -unltp|grep fdfs // 检测主节点启动情况
安装 Storage 节点
mkdir /opt/fastdfs_storage // 创建存储节点日志和数据路径
mkdir /opt/fastdfs_storage_data // 创建数据存储路径
接下来修改/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
netstat -unltp|grep fdfs // 检测存储接点启动情况
到此基本完成所有环境搭建
测试storage 节点是否已经连接到Tracker节点
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
测试文件上传
在Storage 节点上配置编辑/etc/fdfs目录下的client.conf 文件
base_path=/opt/fastdfs_tracker #tracker服务器文件路径
tracker_server=192.168.111.11:22122 #tracker服务器IP地址和端口号
http.tracker_server_port=6666 # tracker 服务器的 http 端口号,必须和tracker的设置对应起来
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /opt/HRB0712001.jpg 测试命令
安装 fastdfs-nginx-module
安装nginx 依赖
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel
storage服务器上 安装nginx
tar -zxvf nginx-1.8.1.tar.gz
unzip fastdfs-nginx-module-master.zip
cd nginx-1.8.1/
vi /fastdfs-nginx-module/src/config,修改如下配置
我这里原来是
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
改成
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
这个是很重要的,不然在nginx编译的时候会报错的,我看网上很多在安装nginx的fastdfs的插件报错,都是这个原因,而不是版本不匹配。
./configure --prefix=/usr/local/nginx --add-module=/home/tools/fastdfs-nginx-module-master/src
接下来要修改一下nginx的配置文件,进入conf目录并打开nginx.conf文件加入以下配置:
listen 9999;
location ~/group1/M00 {
root /opt/fastdfs_storage_data/data;
ngx_fastdfs_module;
}
cp -r /home/tools/FastDFS/conf/http.conf /etc/fdfs/
cp -r /home/tools/FastDFS/conf/mime.types /etc/fdfs/
cp -r /home/tools/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
没什么问题,接下来就需要编辑刚拷贝的这个mod_fastdfs.conf文件了,打开mod_fastdfs.conf并按顺序依次编译以下内容:
base_path=/opt/fastdfs_storage #保存日志目录
tracker_server=192.168.111.11:22122 #tracker服务器的IP地址以及端口号
storage_server_port=23000 #storage服务器的端口号
url_have_group_name = true #文件 url 中是否有 group 名
store_path0=/opt/fastdfs_storage_data # 存储路径
group_count = 3 #设置组的个数,事实上这次只使用了group1
设置了group_count = 3,接下来就需要在文件尾部追加这3个group setting:
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data
[group3]
group_name=group3
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
/////////////////////////////////////////////////////////////////////////////////
软件包版本:
FastDFS_v5.05.tar.gz
libfastcommonV1.0.7
fastdfs-nginx-module_v1.16.tar
nginx-1.8.1.tar
安装libfastcommon
unzip libfastcommon-master.zip
yum -y install unzip zip
yum -y install gcc-c++
./make.sh
./make.sh install
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
安装 FastDFS
tar -zxvf fastdfs-5.05.tar.gz
./make.sh
./make.sh install
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
安装 Tracker 节点
mkdir /opt/fastdfs_tracker //创建数据文件路径
接下来就要重新编辑上一步准备好的/etc/fdfs目录下的tracker.conf配置文件,打开文件后依次做以下修改:
disabled=false #启用配置文件(默认启用)
port=22122 #设置tracker的端口号,通常采用22122这个默认端口
base_path=/opt/fastdfs_tracker #设置tracker的数据文件和日志目录
http.server_port=6666 #设置http端口号,默认为8080
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
service fdfs_trackerd start // 启动trackerd
netstat -unltp|grep fdfs // 检测主节点启动情况
安装 Storage 节点
mkdir /opt/fastdfs_storage // 创建存储节点日志和数据路径
mkdir /opt/fastdfs_storage_data // 创建数据存储路径
接下来修改/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
netstat -unltp|grep fdfs // 检测存储接点启动情况
到此基本完成所有环境搭建
测试storage 节点是否已经连接到Tracker节点
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
测试文件上传
在Storage 节点上配置编辑/etc/fdfs目录下的client.conf 文件
base_path=/opt/fastdfs_tracker #tracker服务器文件路径
tracker_server=192.168.111.11:22122 #tracker服务器IP地址和端口号
http.tracker_server_port=6666 # tracker 服务器的 http 端口号,必须和tracker的设置对应起来
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /opt/HRB0712001.jpg 测试命令
安装 fastdfs-nginx-module
安装nginx 依赖
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel
storage服务器上 安装nginx
tar -zxvf nginx-1.8.1.tar.gz
unzip fastdfs-nginx-module-master.zip
cd nginx-1.8.1/
vi /fastdfs-nginx-module/src/config,修改如下配置
我这里原来是
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
改成
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
这个是很重要的,不然在nginx编译的时候会报错的,我看网上很多在安装nginx的fastdfs的插件报错,都是这个原因,而不是版本不匹配。
./configure --prefix=/usr/local/nginx --add-module=/home/tools/fastdfs-nginx-module-master/src
接下来要修改一下nginx的配置文件,进入conf目录并打开nginx.conf文件加入以下配置:
listen 9999;
location ~/group1/M00 {
root /opt/fastdfs_storage_data/data;
ngx_fastdfs_module;
}
cp -r /home/tools/FastDFS/conf/http.conf /etc/fdfs/
cp -r /home/tools/FastDFS/conf/mime.types /etc/fdfs/
cp -r /home/tools/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
没什么问题,接下来就需要编辑刚拷贝的这个mod_fastdfs.conf文件了,打开mod_fastdfs.conf并按顺序依次编译以下内容:
base_path=/opt/fastdfs_storage #保存日志目录
tracker_server=192.168.111.11:22122 #tracker服务器的IP地址以及端口号
storage_server_port=23000 #storage服务器的端口号
url_have_group_name = true #文件 url 中是否有 group 名
store_path0=/opt/fastdfs_storage_data # 存储路径
group_count = 3 #设置组的个数,事实上这次只使用了group1
设置了group_count = 3,接下来就需要在文件尾部追加这3个group setting:
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data
[group3]
group_name=group3
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
/////////////////////////////////////////////////////////////////////////////////
软件包版本:
FastDFS_v5.05.tar.gz
libfastcommonV1.0.7
fastdfs-nginx-module_v1.16.tar
nginx-1.8.1.tar