一.FastDFS:
是一个分布式文件系统,具有文件存储,文件同步,文件访问解决了大量文件存储问题
二.FastDFS:架构
Client:
客户端
Tracker:
tracker是一个追踪服务器,它时刻的关注着Storage服务器,它是storage和client的桥梁
Storage:
文件存储服务器,用来存放文件的
工作流程:
<1> 单机版:
1.单机版的配置:
由于FastDFS的安装解压后,需要编译后才能安装(c语言书写的)所以我们需要依赖 gcc
a: yum install gcc-c++ perl-devel pcre-devel openssl-devel zlib-devel wget //该依赖是用来编译C语言写的程序
由于FastDFS编译完后,需要make install 进行安装,在安装的过程中他需要依赖 libfastcommon
b: wget https://github.com/happyfish100/libfastcommon/archive/V1.0.35.tar.gz
开始下载FastDFS 文件
c: wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz // 最后用5.11版本 后面跟nginx搭建
以上的啊a,b,c的操作都是准备工作
现在我们将分别解压下载后的 V1.0.35.tar.gz 和 V5.11.tar.gz
d: tar -zxvf V1.0.35.tar.gz 解压 进入解压后的文件 cd libfastcommon-1.0.35/ 执行 ./make.sh 完成 编译 执行./make.sh install完成安装
e:tar -zxvf V5.11.tar.gz 解压 进入解压后的文件 cd fastdfs-5.10/ 执行 ./make.sh 完成 编译 执行./make.sh install完成安装
以上的d,e操作完成了FastDFS的安装,接下来我们看看 文件的安装位置在哪
安装完了,FastDFS分布式文件系统将会分为 配置文件 启动脚本 相关命令
配置文件-->存放在 /etc/fdfs/ 目录下
这里我们需要将里面的client.conf.sample,storage.conf.sample和tracker.conf.sample这三个配置文件
通过执行 cp 命令(cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf ) 来文件 重命名 除掉.sample 比喻结果 client.conf 这三个文件
很重要他将是我们的启动文件
启动脚本-->存放在 /etc/init.d/ 目录下
/etc/init.d/fdfs_tracker start //启动
相关命令-->存放在 /usr/bin 目录下 都是一fdfs_开头的 这些命令是正对一些文件操作的 比喻上传 下载 删除
到了这一步了,先别急,我们首先要创建一个文件作为 FastDFS 运行时产生的数据存储位置
执行 mkdir -p /data/fastdfs/{tracker,storage/store} 命令 /data/fastdfs/storage/store 是存放文件的目录
最后一步配置了
进入我们的配置文件 打开tracker.conf文件 修改他的 base_path=/data/fastdfs/tracker 保存退出
打开storage.conf (配置存储服务器)
vi /etc/fdfs/storage.conf
base_path=/data/fastdfs/storage
store_path0=/data/fastdfs/storage/store/
group_name=group2
tracker_server=192.168.128.141:22122 //这个追踪服务器他的 ip:port 指向追踪器服务器的 可以配置多个
配置客户端配置器
vi /etc/fdfs/client.conf
base_path=/tmp
tracker_server=192.168.128.141.22122 //这个追踪服务器他的 ip:port 指向追踪器服务器的 可以配置多个
<2> 集群版的搭建:
集群版的搭建很容易:只需要在单机版的搭建的最后一步的文件配置上 配置多个tracker 追踪服务就ok
总结流程执行流程:
client接受请求去找tracker追踪器,这个tracker追踪器他监控着多个storage文件存储服务器(从storage.conf文件中可以知道那个文件存储服务器是由XXX追踪器管理的,但是文件服务器也能搭建集群,就是说storage存储服务器交给多个tracker他去管理,而怎么知道有哪些tracker追踪器可以从client客户端知晓。最终的一个意思就是FastDFS的集群搭建,从追踪器开始搭建,3个追踪器,6个存储服务器,存储服务器分为三组每一组两个存储服务器(他们之能过自动的完成备份),过后以组来划分每一组都拥有3个追踪器达到的效果是高性能,高并发高可用。client客户端是用来分配调用的是哪一个追踪器)
三.nginx来整合FastDFS
a. 不用nginx时出现的问题:
1.FastDFS的HTTP服务较为简单,无法提供负载均衡等高性能的服务
2.同卷之间的文件备份具有延迟,如果在这个时间段上client进行了访问就会出现问题
3.当访问文件的时候IP地址时刻在更换
b. 用nginx的好处:
解决上面的问题,nginx作为反向代理屏蔽了IP地址得到差异,它拥有高性能的负载均衡,还有一个叫着FastDFS模块nginx他解决了文件备份延迟导致的错误
重定向到源服务器去取文件
c. 搭建Nginx
1.下载
yum install git
# fastdfs 需 >=5.11
git clone https://github.com/happyfish100/fastdfs.git
./make.sh clean
./make.sh && ./make.sh install
# fastdfs模块依赖
https://github.com/happyfish100/fastdfs-nginx-module.git
# nginx
wget http://nginx.org/download/nginx-1.11.1.tar.gz
2.安装
tar -zxvf nginx-1.11.1.tar.gz
cd nginx-1.11.1
# nginx和fastdfs模块联合编译
./configure --add-module=/root/fastdfs-nginx-module/src/ --prefix=/usr/local/nginx
# 安装nginx
make && make install
# 拷贝mod_fastdfs.conf 到/etc/fdfs目录下
cp /root/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
# 拷贝fastdfs-5.10/conf下anti-steal.jpg 、http.conf mime.types 文件
cd /root/fastdfs/conf/
cp http.conf mime.types anti-steal.jpg /etc/fdfs/
3.配置
# 修改nginx.conf
location ~/group([0-2])/M00 {
root /data/fastdfs/storage/store;
ngx_fastdfs_module;
}
# 修改/etc/fdfs/mod_fastdfs.conf配置文件
tracker_server=192.168.128.141:22122
url_have_group_name = true
group_name=group1
store_path0=/data/fastdfs/storage/store
4. 启动nginx
cd /usr/local/nginx/sbin
./nginx -t
./nginx -c /usr/local/nginx/conf/nginx.conf
以上几步就完成了nginx与FastDFS的搭建,可以通过HTTP去访问文件夹,但是在访问的时候出现了,时刻的需要更换IP地址,接下来搭建一个nginx的方向代理服务
upstream fdfs_group1 {
server 192.168.128.137:80 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.128.151:80 weight=1 max_fails=2 fail_timeout=30s;
}
upstream fdfs_group2 {
server 192.168.128.150:80 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.128.152:80 weight=1 max_fails=2 fail_timeout=30s;
}