Fast DFS概述
Fast DFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合中小文件(建议范围:4KB < file size <500MB),以文件为载体的在线服务,如相册网站、视频网站等等。
Fast DFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用Fast DFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
FastDFS架构包括 (跟踪器)Tracker server和(存储节点)Storage server。客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载。
Tracker Server作用是负载均衡和调度,通过Trackerserver在文件上传时可以根据一些策略找到Storageserver提供文件上传服务。可以将tracker称为追踪服务器或调度服务器。
Storage Server作用是文件存储,客户端上传的文件最终存储在Storage服务器上,Storage server没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将storage称为存储服务器。
下面来看一下应该如何安装以及配置吧
( 参考博客:https://blog.csdn.net/qq_34301871/article/details/80060235)
1、下载运行环境需要的安装包(这个是我个人使用的环境包)
下载地址:
**
https://github.com/lxg19970202/FastDFS-/tree/lxg19970202-fastdfs
**
2、首先下载 所需全部工具运行命令
yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget
下载完成,安装 rz 命令-------->进行上传文件
yum install lrzsz -y
/home目录下新建一个目录将下载的安装包通过rz命令上传到自己新建的目录
cd /home
mkdir lxg
ls
cd lxg
rz
3.安装libfastcommon
解压刚才上传的libfastcommon
cd libfastcommon-master
unzip libfastcommon-master.zip
然后进入解压完成的文件目录进行编译安装
./make.sh
./make.sh install
4.安装Fast DFS
返回上一级去解压fastdfs
cd ..
unzip fastdfs-5.11.zip
解压完成进入fastdfs5.11目录并进行编译安装
cd fastdfs-5.11
./make.sh
./make.sh install
安装成功之后切换到 /etc/fdfs下
cd /etc/fdfs/
ll
使用命令将这三个实例文件复制一份,且去掉sample
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
5、安装Tracker Server
创建tracker工作目录以用来存储tracker的data和log
使用 cd
命令切换目录
使用mkdir
命令创建文件夹
文件夹的最终目录是:/usr/lxg_workspace/dev/fastdfs/fasstdfs_tracker
创建完毕之后进入 /etc/fdfs/配置tracker的conf文件
vi /etc/fdfs/tracker.conf
insert
键进行插入
以下是暂时需要配置的内容
1.disabled=false #默认开启
2.port=22122 #默认端口号
3.base_path=/usr/lxg_workspace/dev/fastdfs/fastdfs_tracker #刚刚创建的目录
4.http.server_port=6666 #默认端口是8080
再次点击insert切换模式
Esc退出
wq保存
测试启动tracker
service fdfs_trackerd start
如果不能成功启动,可以通systemctl命令
systemctl start fdfs_trackerd
设置服务开机启动
加执行权限
chmod +x /etc/rc.d/rc.local
开始修改rc.local
vi /etc/rc.d/rc.local
添加开启命令
service fdfs_trackerd start
启动成功之后的界面:
启动之后可以查看一下服务端口:
同时进入咱们创建的fastdfs_tracker目录后也会看到自动生成data和log两个目录
6、安装Storage Server
咱们前面创建 fastdfs_tracker 目录的同时已经创建了工作目录 fastdfs_storage 以及存储数据的目录 fastdfs_storage_data,直接去配置就可以了
vi /etc/fdfs/storage.conf
设置以下内容:
1.disabled=false
2.group_name=group1 #组名,根据实际情况修改
3.port=23000 #设置storage的端口号,默认是23000,同一组的storage端口号必须一致
4.base_path=/usr/lxg/dev/fastdfs/fastdfs_storage #设置storage数据文件和日志目录
5.store_path_count=1 #存储路径个数,需要和store_path个数匹配
6.base_path0=/usr/lxg_workspace/dev/fastdfs/fastdfs_storage_data #实际文件存储路径
7.tracker_server=192.168.150.132:22122 #虚拟机的ip地址
8.http.server_port=8888 #设置 http 端口号
保存之后 创建软引用
ln -s /usr/bin/fdfs_storaged /usr/local/bin
启动storage
service fdfs_storaged start
设置开机自动启动
加执行权限
chmod +x /etc/rc.d/rc.local
开始修改rc.local
vi /etc/rc.d/rc.local
添加开启命令
service fdfs_storaged start
查看服务端口:
netstat -unltp | grep fdfs
最后我们再确认一下,storage是否注册到了tracker中去。
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
接下来去修改配置文件
vi /etc/fdfs/client.conf
修改以下配置:
base_path=/usr/lxg_workspace/dev/fastdfs/fastdfs_tracker #tracker服务器文件路径
tracker_server=192.168.150.167:22122 #tracker服务器IP地址和端口号
http.tracker_server_port=6666 # tracker 服务器的 http端口号,必须和tracker对应
修改完之后,咱们可以上传图片测试一下啦
使用命令:rz 上传图片 (我的是上传到了root下面)
rz
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/1.png #你上传的图片路径(linux上的)
去刚才上传的路径查看是否上传成功~~~
cd /usr/lxg_workspace/dev/fastdfs/fastdfs_storage_data/data
ls
cd 00
ls
cd 00
ls
data下有256个1级目录,每级目录下又有256个2级子目录,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。
然后我们HTTP访问文件
输入192.168.150.167:8888/group1/M00/00/00/wKiW10ptyyAbBTGAADALhN48uw668.png
现在无法访问,早在4.05的时候,就remove embed HTTP support了
Version 4.05 2012-12-30
- client/fdfs_upload_file.c can specify storage ip port and store path index
- add connection pool
- client load storage ids config
- common/ini_file_reader.c does NOT call chdir
- keep the mtime of file same
- use g_current_time instead of call time function
- remove embed HTTP support
7、Nginx的安装及配置
我们可以了解到Nginx是一个http服务器。是一个使用c语言开发的高性能的http服务器及反向代理服务器。Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。
应用场景
1、 http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
2、 虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
基于端口的,不同的端口
基于域名的,不同域名
3、 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
(1)配置storage nginx
切换到上传的压缩包的文件夹
cd /home/lxg
解压nginx,和fastdfs-nginx-module:
tar -zxvf nginx-1.12.0.tar.gz
unzip fastdfs-nginx-module-master.zip
然后进入nginx安装目录,添加fastdfs-nginx-module:
./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --add-module=/usr/local/src/fastdfs/fastdfs-nginx-module-master/src --with-stream
我这里安装的时候报了一个错:
解决方案:
检查文件夹路径是否和安装以及获取的一致,如果一致的话,重启电脑,然后删除已经解压的文件,重新解压缩,重新添加。一般两方的文件夹的路径不一致,前面的是nginx的安装目录。后面的是fastdfs-nginx-module-master目录
make
:执行
make遇到的错误
编辑
vi fastdfs-nginx-module-1.20/src/config
打开之后:
改变的文件内容
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
"
解决完这个问题继续安装又会报错
解决方案:
切换到上传环境包的那个路径: cd /home/lxg/
在这个里面运行:
./configure --prefix=/usr/bin/nginx-1.12.0 --conf-path=/usr/bin/nginx-1.12.0/conf/nginx.conf --add- module=/usr/local/src/fastdfs/fastdfs-nginx-module-master/src --with-stream
例如:在解压的nginx目录下运行:
./configure --prefix=/usr/bin/nginx-1.12.0 --conf-path=/usr/bin/nginx-1.12.0/conf/nginx.conf --add-module=/usr/local/src/fastdfs/fastdfs-nginx-module-master/src --with-stream
然后
make
make install
成功后界面:
现在开始配置nginx.conf
cd /usr/local/nginx
—nginx默认的安装目录
ll
cd conf
vi nginx.conf
--编辑
修改端口号,
修改连接的服务器名称,我这里是虚拟机本机的ip
添加一个 :
location /group1/M00 {
root /usr/lxg/dev/fastdfs/fastdfs_storage_data/data;
ngx_fastdfs_module;
}
然后进入FastDFS安装时的解压过的目录,将http.conf和mime.types拷贝到/etc/fdfs目录下:
先创建好存放的文件夹: cd /usr/lxg_workspace/
mkdir ftp
cd ftp
mkdir /fastdfs-5.11
将之前上传解压的包复制到此目录下
cp -r /home/lxg/fastdfs-5.11 /usr/lxg_workspace/ftp/fastdfs-5.11
进到刚刚复制过去的目录,将http.conf和mime.types拷贝到/etc/fdfs目录下:
cd /usr/lxg_workspace/ftp/fastdfs-5.11/
ll
cd conf
cp http.conf /etc/fdfs/
cp mime.types /etc/fdfs/
另外还需要把fastdfs-nginx-module安装目录中src目录下的mod_fastdfs.conf也拷贝到/etc/fdfs目录下:
cp /usr/lxg_workspace/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/
刚刚拷贝过去的mod_fastdfs.conf文件进行修改:
vi /etc/fdfs/mod_fastdfs.conf
base_path=/usr/lxg_workspace/dev/fastdfs/fastdfs_storage #保存日志目录
tracker_server=192.168.150.132:22122 #tracker服务器的IP地址以及端口号
storage_server_port=23000 #storage服务器的端口号
url_have_group_name = true #文件 url 中是否有 group 名
store_path0=/usr/lxg_workspace/dev/fastdfs/fastdfs_storage_data #存储路径
group_count = 3 #设置组的个数,事实上这次只使用了group1
往下同时设置组名等信息:需要几个组就设置几个
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/usr/muyou/dev/fastdfs/fastdfs_storage_data
store_path1=/usr/muyou/dev/fastdfs/fastdfs_storage_data
创建M00至storage存储目录的符号连接:
ln -s /usr/lxg_workspace/dev/fastdfs/fastdfs_storage_data/data/ /usr/lxg_workspace/dev/fastdfs/fastdfs_storage_data/data/M00
接下来尝试启动nginx:
/usr/local/nginx_storage/sbin/nginx
成功启动:
。。重新进入浏览器尝试下:
http://192.168.218.25:8888/
成功界面如下:
(2)配置tracker nginx
还是进入刚刚解压的nginx解压包,然后重新运行此命令,将nginx再次编译安装到另一个文件夹nginx2
./configure --prefix=/usr/local/nginx2 --conf-path=/usr/local/nginx2/conf/nginx.conf --add-module=/usr/lxg_workspace/fastdfs-nginx-module-master/src
make
make install
接下来还是修改nginx.conf,端口号可以不改,用80的。需将upstream指向tracker的nginx地址
vi /usr/local/nginx_tracker/conf/nginx.conf
upstream fdfs_group1 {
server 127.0.0.1:8888;
}
server {
listen 8889;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location /group1/M00 {
proxy_pass http://fdfs_group1;
}
启动nginx:
/usr/local/nginx_tracker/sbin/nginx
成功界面如下:
注意这两个界面的端口号是不一致的!!!
再次使用浏览器登陆尝试
http://192.168.218.25:8888/group1/M00/00/00/wKjaGV0q03KAWMw6AADALhN48uw532.png
效果如下:
咱们的单机Fast DFS配置就算基本搭建成功啦!!!