FastDFS对象存储初步搭建
FastDFS是什么?
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS角色有哪些?需要注意什么?
FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。
注:这里启动服务需要nginx做均衡
- 存储节点:存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key value pair)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以包含多个键值对。
- FastDFS 同步:tracker server会在内存中保存storage分组及各个组下的storage server,并将连接过自己的storage server及其分组保存到文件中,以便下次重启服务时能直接从本地磁盘中获得storage相关信息。storage server会在内存中记录本组的所有服务器,并将服务器信息记录到文件中。
交互过程
上传文件交互过程
- client询问tracker上传到的storage,不需要附加参数;
- tracker返回一台可用的storage;
- client直接和storage通讯完成文件上传。
返回存储信息:
group0/M00/00/02/Cs8b8lFJIIyAH841AAAbpQt7xVI4715674
参数解释:
组名:group0 磁盘: M00 目录:00/02 文件名:Cs8b8lFJIIyAH841AAAbpQt7xVI4715674
下载文件交互过程
- client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);
- tracker返回一台可用的storage;
- client直接和storage通讯完成文件下载。
环境搭建以及配置
安装libfastcommon
libfastcommon是FastDFS操作的基础库
下载
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
解压
tar -zxvf V1.0.7.tar.gz
安装
cd libfastcommon-1.0.7/
./make.sh
./make.sh install
即可
安装FastFDS
官网: https://github.com/happyfish100/fastdfs
下载zip或直接git clone
解压完成后安装
cd fastdfs
./make.sh
./make.sh install
并在某个地方生成一个文件夹用作存放数据和日志的
我自己配的是在fastdfs下的一个logs文件夹
如下图:
Tracker服务配置
先执行
cd /etc/fdfs
查看有没有tracker.conf如果只有一个tracker.conf.sample
就执行
cp tracker.conf.sample tracker.conf
开始配置
sudo vim tracker.conf
找到
base_path=/opt/fastdfs/logs
http.server_port = 8454 #最好不要是8080
注:改为你刚刚创建的数据存储的文件夹这里是我的logs文件夹
测试
cd /usr/bin
./fdfs_trackerd /etc/fdfs/tracker.conf start
netstat -lnpt|grep fdfs
这样就能看到服务启动
配置 Storage 服务
cd /etc/fdfs/
查看是否有storage.conf.sample,如果没有:
cp storage.conf.sample storage.conf
开始配置
sudo vim storage.conf
找到
store_path0=/home/saltfish/fastdfs
base_path=/home/saltfish/fastdfs #更改一下同上
#存储节点数目前单机就是一个
store_path_count=1
tracker_server=xx.xx.xx.xx:22122
上面填一个自己主机的ip如下图:
测试
cd /usr/bin
./fdfs_storaged /etc/fdfs/storage.conf start
查看监控
./fdfs_monitor /etc/fdfs/storage.conf
测试是否可以手动上传
cd /etc/fdfs/
查看客户端
vim client.conf
配置这两项
然后测试是否可以上传
./fdfs_upload_file /etc/fdfs/client.conf 图片路径 ip:23000 group1/M01/00/00/xx
group1/M00/00/00/wKgBZmL7ncaAQCx9AAb53j0cLbc594.png
查看一下你存放文件的文件夹
配置NGINX
下载命令
wget http://nginx.org/download/nginx-1.15.0.tar.gz
解压 nginx
tar -zxvf nginx-1.15.0.tar.gz
编译安装
./configure
make
make install
启动
cd /usr/local/nginx/sbin
nginx -c nginx路径/conf/nginx.conf
下载fastdfs-nginx-module
wget https://nchc.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz
解压
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
执行配置命令
./configure --prefix=/usr/local/nginx --add-module=/opt/fastdfs-nginx-module_v1.16/fastdfs-nginx-module/src
查看nginx 的Makefile文件:
发现执行的是objs/Makefile,再找到此文件
再(nginx下)
make一下
将nginx配置更新到/usr/local
cp objs/nginx /usr/local/nginx/sbin/nginx
启动nginx
查看模块是否被加载上
配置fastdfs-nginx-module 模块
拷贝mod-fastdfs.conf到/etc/fdfs文件目录下,配置mod-fastdfs.conf
cp mod_fastdfs.conf /etc/fdfs/
sudo vim /etc/fdfs/mod_fastdfs.conf
修改
tracker_server=xx.xx.xx.xx:22122 #修改成tracker服务器的ip
url_have_group_name = true
store_path0=/home/saltfish/fastdfs#按照上面的一样
cd 到 fastdfs的conf/目录下
cp anti-steal.jpg http.conf mime.types /etc/fdfs/
然后
cd /etc/fdfs/
查看是否有这些
配置nginx
cd /usr/local/nginx/conf
重启nginx
./nginx -s reload
在浏览器中如下图输入网址
这样就算是基础搭建完成
后面有我写的简单脚本即可变成一条命令直接启动整套服务
只需要将配置项目
这里配置的只是根目录