文章目录
FASTDFS
1. 概述
- FASTDFS是一个开源的高性能的分布式文件系统. 它主要功能有: 文件存储,文件同步和文件访问及高容量和负载均衡,主要是用来解决海量数据存储问题.
- 在大数据里面的HDFS也是解决海量数据存储问题.
- FASTDFS存储的文件一般比较小(4KB-500MB),存储的文件数量比较多,大多是图像. HDFS是一个谷歌的文件服务器,它是Hadoop中分布式文件系统,可以存储的文件数据超级大,文件数量超级多
拓展
2. FastDFS的三个组成部分
FastDFS系统一般有三个角色: 跟踪服务器(Tracking server),存储服务器(Storage server),客户端(Client)
- 跟踪服务器(Tracking server)
主要工作是调度服务,起到负载均衡的作用,负载管理所有的存储服务器(Storage server)和客户端(Client).
每个存储服务器在启动后都会先连接跟踪服务器,告知自己所属的group信息,并且它们之间需要保存周期性心跳
文件上传和下载的流程:
客户上传图片1.jpg,FastFDS的客户端(web服务器)会与之对接,然后告知跟踪服务器,跟踪服务器会随机把图片存储到某个存储服务器,这个存储服务器会把图片的id和路径告知跟踪服务器,跟踪服务器把图片id和路径告知客户端. 当客户下载1.jpg时客户端根据路径找到具体的存储服务器拿到图片反馈给客户.
- 存储服务器
主要提供容量存储和备份服务;以group为单位,每一个grop内可以用于多台存储服务器,数据之间是互为备份的
- 客户端
主要起到上传与下载数据的服务器,其实本质就是自己搭建的应用服务器(web服务器)
3. 存储策略
存储节点是以group(组,卷)进行组织的. 存储系统由一个或多个卷组成,卷与卷之间是独立的,所有卷的容量累加就是整个存储系统中的文件容量,一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台服务器起到了冗余备份和负载均衡的作用.
在卷中增加服务器时,会同步已有的文件到新增的服务器上,由系统自动完成,同步完成后,系统自动将新增的服务器切换到线上提供服务.它是由源服务器通过广播的方式把数据同步到新增的服务器.
当存储空间不足时,那么可以做到动态添加卷,只需要添加一台或多台服务器并将它们配置为新的卷,这样就扩大了存储系统的存储容量
4. FastFDS的文件同步
即上面的图
5.FastFDS的文件下载
即上面的跟踪服务器的文件上传和下载的流程
6. 下载安装FastDFS
6.1.分别在linux和windows配置lhosts文件的域名信息(可以不做)
vim /etc/hosts
指定一个域名 92.168.88.108 web应用服务器
192.168.88.108 www.zyvideo.com
路径:C:\Windows\System32\drivers\etc
192.168.88.108 www.zyvideo.com
6.2. 下载安装libfastCommon插件
- 下载
在/usr/local下创建文件夹
cd /usr/local
mkdir fastdfs
cd 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
- 建立软连接
因为默认安装的位置不正确,默认安装到/usr/lib64, 而fastdfs主程序在/usr/local/lib
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/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
6.3. 下载FastDFS
- 下载
cd …
wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
- 解压
tar -axvf V5.05.tar.gz
- 编译
cd fastdfs-5.05/
./make.sh
- 安装
./make.sh install
- 建立软连接
ln -s /usr/bin/fdfs_trackerd /usr/local/bin
ln -s /usr/bin/fdfs_storaged /usr/local/bin
ln -s /usr/bin/fdfs_stop.sh /usr/local/bin
ln -s /usr/bin/stop.sh /usr/local/bin
ln -s /usr/bin/restart.sh /usr/local/bin
6.4. 配置安装跟踪服务器Tracker
cd /etc/fdfs
cp tracker.conf.sample tracker.conf
- 修改配置文件
vim tracker.conf
修改的内容:
base_path=/fastdfs/tracker/tracker
http.server_port=80
-创建目录
mkdir -p /fastdfs/tracker/tracker
- 启动Tracker跟踪服务器
/etc/init.d/fdfs_trackerd start
- 停止
service fdfs_trackerd stop
- 设置Tracker开机自启
chkconfig fdfs_trackerd on
- 查看端口号
netstat -unltp | grep fdfs
6.5. 配置FastDFS存储服务器 Storage
cd /etc/fdfs
cp storage.conf.sample storage.conf
- 修改 storage.conf
vim storage.conf
修改内容
设置base:wq_path=/fastdfs/storage/storage
store_path0=/fastdfs/storage/file
tracker_server=www.zyvideo.com:22122
http.server_port=80
- 创建目录
mkdir -p /fastdfs/storage/storage
mkdir -p /fastdfs/storage/file
reboot 重启虚拟机
- 启动storage存储服务器
/etc/init.d/fdfs_storaged start
- 查看端口号
netstat -unltp | grep fdfs
- 查看是否启动成功
ps -ef | grep storage
- 查看storage服务器和tracker服务器是否在通信
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
查看ip_addr = 192.168.88.107 (bogon) ACTIVE ;ACTIVE 标志成功
- 假设失败了
重启tracker服务器
/usr/local/bin/restart.sh /usr/lcoal/bin/fdfs_trackerd /etc/fdfs/tracker.conf
重启storage服务器
/usr/local/bin/restart.sh /usr/lcoal/bin/fdfs_storaged /etc/fdfs/storage.conf
重新查看它们是否通信
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
- 设置storage开机自启动
chkconfig fdfs_storaged on
7. 测试文件上传
- 准备客户端
修改Tracker服务器的客户端配置文件
cd /etc/fdfs
cp client.conf.sample client.conf
vim client.conf
- 修改文件
#保存客户端的数据和日志
base_path=/fastdfs/client/client
#tracker的端口号
tracker_server=com.zy.video.com:22122
mkdir -p /fastdfs/client/client
-
在当前目录下新建一个文件夹test.txt,编辑一段信息
-
上传文件
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.txt
如果上传成功,会返回一个存储路径
比如: group1/M00/00/00/wKhEgmBhS8WAIpzgAAAAFITq_MM299.txt
group1 是storage存储服务器的存储卷地址
M00 是storage存储服务器的虚拟目录
00/00 在storage存储服务器中的存储目录 256 * 256 ,目录文件在—> /fastdfs/storage/file/data
8. FastDFS绑定Nginx负载均衡器
- 配置nginx.conf
#fastdfs服务器
server{
listen 81;
server_anme www.zy.video.com;
location /group1/M00 {
alias /fastdfs/storage/file/data;
}
}
- 重启nginx
cd ../
./sbin/nginx -s reload
- 测试上传文件
在当前目录中上传一个文件test.txt
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.txt
上传成功后,会返回fastdfs的存储路径
group1/M00/00/00/wKhEgmBhS8WAIpzgAAAAFITq_MM299.txt
- 查看是否成功
http://www.zy.video.com:81/存储路径