基于【 centos7】三 || 分布式文件系统FastDFS+Nginx环境搭建
1. FastDFS介绍
1.1 FastDFS定义
FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
1.2 FastDFS架构
FastDFS架构包括 Tracker server和Storage server。客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载。
Tracker server作用是负载均衡和调度,通过Tracker server在文件上传时可以根据一些策略找到Storage server提供文件上传服务。可以将tracker称为追踪服务器或调度服务器。
Storage server作用是文件存储,客户端上传的文件最终存储在Storage服务器上,Storage server没有实现自己的文件系统而是利用操作系统的文件系统来管理文件。可以将storage称为存储服务器。
2. FastDFS安装
2.1. 环境安装
2.1.1. 安装gcc
FastDFS是C语言开发,安装FastDFS需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:
yum install gcc-c++
2.1.2. 安装libevent
FastDFS依赖libevent库,需要安装libevent:
yum -y install libevent
2.2. 安装libfastcommon
libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS运行所需要的一些基础库。tracker服务器和storage服务器都需要进行安装。
2.2.1 准备工作
新建文件夹:
mkdir -p /usr/local/fastdfs
mkdir -p /home/fastdfs/tracker
mkdir -p /home/fastdfs/storage
2.2.2 下载libfastcommon并上传
wget https://github.com/happyfish100/libfastcommon/archive/mast.zip
2.2.3 解压至/usr/local/fastdfs
tar -zxvf fileName.tar.gz
unzip fileName.zip
2.2.4 编译安装
进入目录:cd libfastcommon
编译:./make.sh
安装:./make.sh install
2.2.5 拷贝库文件
libfastcommon安装好后默认将库文件存至/usr/lib64下,由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/lib下。
cp /usr/lib64/libfastcommon.so /usr/lib
注意:5.0.5版本以后不需要此步操作。
2.2.6 创建软连接
fastDFS主程序设置的目录为/usr/local/lib(自行设定),所以需要创建/usr/lib64下的一些核心执行程序的软连接文件
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
2.3. 安装FastDFS
2.3.1. 下载FastDFS并上传
wget https://github.com/happyfish100/fastdfs/archive/mast.zip
2.3.2. 解压至/usr/local/fastdfs
tar -zxvf fileName.tar.gz
unzip fileName.zip
2.3.3. 编译安装
进入目录:cd FastDFS
编译:./make.sh
安装:./make.sh install
2.3.4. 查看服务脚本文件
/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_trackerd
过滤查看 cd /etc/init.d/ && ls | grep fdfs
2.3.5. 查看命令行工具
cd /usr/bin
Fdfs_*执行脚本
2.3.6. 修改服务脚本配置文件
因为fastDFS服务脚本设置的bin目录为/usr/local/bin下,但实际我们安装在了/usr/bin/下,所以我们要修改fastdfs配置文件中的路径,也就是需要修改两个配置文件。
命令: vi /etc/init.d/fdfs_storaged
进行全局替换命令: %s+/usr/local/bin+/usr/bin
命令: vi /etc/init.d/fdfs_trackerd
进行全局替换命令: %s+/usr/local/bin+/usr/bin
注意:如果配置文件中的目录为.../usr/local/bin...才需要替换
2.4. 配置跟踪器(192.168.22.1)
2.4.1. 配置tracker.conf
进入目录: cd /etc/fdfs/
复制配置文件:cp tracker.conf.sample tracker.conf
修改:vi tracker.conf
base_path=/home/fastdfs/tracker #设置tracker的数据文件和日记目录(预先创建)
disabled=false #启用配置文件
port=22122 #设置tracker的端口号,一般使用默认的
注意:更多配置查看《附录一》
2.4.2. 启动跟踪器
启动tracker命令: /etc/init.d/fdfs_trackerd start
查看进程命令: ps -el | grep fdfs
停止tracker命令: /etc/init.d/fdfs_trackerd stop
2.4.3. 设置开机启动
编辑命令: vi /etc/rc.d/rc.local
加入配置: /etc/init.d/fdfs_trackerd start
2.5. 配置存储器(192.168.22.2)
2.5.1. 配置storage.conf
进入目录: cd /etc/fdfs/
复制配置文件:cp storage.conf.sample storage.conf
修改:vi storage.conf
base_path=/home/fastdfs/storage#设置storage的数据文件和日记目录(预先创建):
disabled=false #启用配置文件
port=23000 #设置端口号,默认值23000,同一组的的storage端口号必须相同
group_name=group2 #组名,根据实际情况修改
base_path=/home/fastdfs/storage #设置tracker的数据文件和日记目录(预先创建)
store_path0=/home/fastdfs/storage #存储路径
store_path_count=1 #存储路径个数,需要和store_path个数匹配
tracker_server=192.168.22.1:22122 #tracker服务器的ip地址和端口号
注意:更多配置查看《附录二》
2.5.2. 启动存储器
启动tracker命令: /etc/init.d/fdfs_storaged start
查看进程命令: ps -el | grep fdfs
停止tracker命令: /etc/init.d/fdfs_storaged stop
2.5.3. 设置开机启动
编辑命令: vi /etc/rc.d/rc.local
加入配置: /etc/init.d/fdfs_storaged start
2.6. 测试
2.6.1. 修改clien.conf
进入tracker服务器中:cd /etc/fdfs/
复制配置文件:cp clien.conf.sample clien.conf
base_path=/fastdfs/tracker #存放路径
tracker_server=192.16822.1:22122 #tracker服务器ip地址和端口
2.6.2. 上传文件
命令:/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/1.img
2.6.3. 查看上传文件
在storage服务器中,配置的/home/fastdfs/storage/data中根据返回值查看
3. Nginx安装(storage)
3.1. 安装fastdfs-nginx-module包进行整合
3.1.1. 下载fastdfs-nginx-module并上传
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/mast.zip
3.1.2. 解压至/usr/local/fastdfs
tar -zxvf fileName.tar.gz
unzip fileName.zip
3.1.3. 修改配置文件
进入目录:cd /fastdfs-nginx-module/src/config
编辑:vi config
将路径中的local全部去掉
改为:ОCORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
3.2. Fastdfs与Nginx进行集成
3.2.1. 删除之前的nginx
进入目录:cd /usr/local/
删除文件:rm -rf nginx
3.2.2. 安装依赖库文件:
yum install pcre
yum install pcre-devel
yum install zlib
yum install zlib-devel
3.2.3. 下载nginx并上传
wget -c https://nginx.org/download/nginx-1.17.1.tar.gz
3.2.4. 解压至/usr/local/fastdfs
tar -zxvf fileName.tar.gz
unzip fileName.zip
3.2.5. 编译安装
进入nginx目录: cd nginx1.17.1/
加入模块命令:
./configure --add-module=/usr/local/fastdfs/fastdfs-nginx-module/src
重新编译命令: make && make install
3.2.6. 修改nginx-module配置文件
复制fastdfs-nginx-module中的配置文件,到/etc/fdfs目录:
cp /usr/local/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
修改文件:vi mod_fastdfs.conf
connect_timeout=10 #连接超时时间
tracker_server=192.168.22.1:22122 #跟踪器ip
url_have_group_name=true #启用url访问
store_path0=/fastdfs/storage #与之前一致
3.2.7. 复制nginx配置文件
复制fastdfs里面的2个文件,到/etc/fdfs目录中:
进入目录:cd/usr/local/fastdfs/Fastdfs/conf/
复制: cp http.conf mime.types /etc/fdfs/
3.2.8. 创建软连接
在/fastdfs/storage文件存储目录下创建软连接,将其链接到实际存放数据的目录:
ln -s /home/fastdfs/storage/data/ /home/fastdfs/storage/data/M00
3.2.9. 修改nginx配置文件
进入目录:cd/usr/local/nginx
编辑:Vi nginx.conf
Server {
listen: 8888; #由80改为8888
server_name localhost;
location ~/group([0-9])/M00{
ngx_fastdfs_module;
}
}
注意: ~表示正则表达式, 匹配group下的0-9任意一位
nginx里的端口要和配置fastdfs存储中的storage.conf文件配置一致,也就是 http-server-port=8888
3.2.10. 启动nginx
命令: /usr/local/nginx/sbin/nginx
附录一:FastDFS配置手册tracker.conf
tracker.conf 配置文件分析:
#配置tracker.conf这个配置文件是否生效,因为在启动fastdfs服务端进程时需要指定配置文件,所以需要使次配置文件生效。false是生效,true是屏蔽。
disabled=false
#程序的监听地址,如果不设定则监听所有地址
bind_addr=
#tracker监听的端口
port=22122
#链接超时设定
connect_timeout=30
#tracker在通过网络发送接收数据的超时时间
network_timeout=60
#数据和日志的存放地点
base_path=/opt/fdfs
#服务所支持的最大链接数
max_connections=256
#工作线程数一般为cpu个数
work_threads=4
#在存储文件时选择group的策略,0:轮训策略 1:指定某一个组 2:负载均衡,选择空闲空间最大的group
store_lookup=2
#如果上面的store_lookup选择了1,则这里需要指定一个group
#store_group=group2
#在group中的哪台storage做主storage,当一个文件上传到主storage后,就由这台机器同步文件到group内的其他storage上,0:轮训策略 1:根据ip地址排序,第一个 2:根据优先级排序,第一个
store_server=0
#选择那个storage作为主下载服务器,0:轮训策略 1:主上传storage作为主下载服务器
download_server=0
#选择文件上传到storage中的哪个(目录/挂载点),storage可以有多个存放文件的base path 0:轮训策略 2:负载均衡,选择空闲空间最大的
store_path=0
#系统预留空间,当一个group中的任何storage的剩余空间小于定义的值,整个group就不能上传文件了
reserved_storage_space = 4GB
#日志信息级别
log_level=info
#进程以那个用户/用户组运行,不指定默认是当前用户
run_by_group=
run_by_user=
#允许那些机器连接tracker默认是所有机器
allow_hosts=*
#设置日志信息刷新到disk的频率,默认10s
sync_log_buff_interval = 10
#检测storage服务器的间隔时间,storage定期主动向tracker发送心跳,如果在指定的时间没收到信号,tracker人为storage故障,默认120s
check_active_interval = 120
#线程栈的大小,最小64K
thread_stack_size = 64KB
#storage的ip改变后服务端是否自动调整,storage进程重启时才自动调整
storage_ip_changed_auto_adjust = true
#storage之间同步文件的最大延迟,默认1天
storage_sync_file_max_delay = 86400
#同步一个文件所花费的最大时间
storage_sync_file_max_time = 300
#是否用一个trunk文件存储多个小文件
use_trunk_file = false
#最小的solt大小,应该小于4KB,默认256bytes
slot_min_size = 256
#最大的solt大小,如果上传的文件小于默认值,则上传文件被放入trunk文件中
slot_max_size = 16MB
#trunk文件的默认大小,应该大于4M
trunk_file_size = 64MB
#http服务是否生效,默认不生效
http.disabled=false
#http服务端口
http.server_port=8080
#检测storage上http服务的时间间隔,<=0表示不检测
http.check_alive_interval=30
#检测storage上http服务时所用请求的类型,tcp只检测是否可以连接,http必须返回200
http.check_alive_type=tcp
#通过url检测storage http服务状态
http.check_alive_uri=/status.html
#if need find content type from file extension name
http.need_find_content_type=true
#用include包含进http的其他设置
##include http.conf
附录二:FastDFS配置手册storage.conf
storage.conf配置文件分析:
#同tracker.conf
disabled=false
#这个storage服务器属于那个group
group_name=group1
#同tracker.conf
bind_addr=
#连接其他服务器时是否绑定地址,bind_addr配置时本参数才有效
client_bind=true
#同tracker.conf
port=23000
connect_timeout=30
network_timeout=60
#主动向tracker发送心跳检测的时间间隔
heart_beat_interval=30
#主动向tracker发送磁盘使用率的时间间隔
stat_report_interval=60
#同tracker.conf
base_path=/opt/fdfs
max_connections=256
#接收/发送数据的buff大小,必须大于8KB
buff_size = 256KB
#同tracker.conf
work_threads=4
#磁盘IO是否读写分离
disk_rw_separated = true
#是否直接读写文件,默认关闭
disk_rw_direct = false
#混合读写时的读写线程数
disk_reader_threads = 1
disk_writer_threads = 1
#同步文件时如果binlog没有要同步的文件,则延迟多少毫秒后重新读取,0表示不延迟
sync_wait_msec=50
#同步完一个文件后间隔多少毫秒同步下一个文件,0表示不休息直接同步
sync_interval=0
#表示这段时间内同步文件
sync_start_time=00:00
sync_end_time=23:59
#同步完多少文件后写mark标记
write_mark_file_freq=500
#storage在存储文件时支持多路径,默认只设置一个
store_path_count=1
#配置多个store_path路径,从0开始,如果store_path0不存在,则base_path必须存在
store_path0=/opt/fdfs
#store_path1=/opt/fastdfs2
#subdir_count * subdir_count个目录会在store_path下创建,采用两级存储
subdir_count_per_path=256
#设置tracker_server
tracker_server=x.x.x.x:22122
#同tracker.conf
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
#文件在数据目录下的存放策略,0:轮训 1:随机
file_distribute_path_mode=0
#当问及是轮训存放时,一个目录下可存放的文件数目
file_distribute_rotate_count=100
#写入多少字节后就开始同步,0表示不同步
fsync_after_written_bytes=0
#刷新日志信息到disk的间隔
sync_log_buff_interval=10
#同步storage的状态信息到disk的间隔
sync_stat_file_interval=300
#线程栈大小
thread_stack_size=512KB
#设置文件上传服务器的优先级,值越小越高
upload_priority=10
#是否检测文件重复存在,1:检测 0:不检测
check_file_duplicate=0
#当check_file_duplicate设置为1时,次值必须设置
key_namespace=FastDFS
#与FastDHT建立连接的方式 0:短连接 1:长连接
keep_alive=0
#同tracker.conf
http.disabled=false
http.domain_name=
http.server_port=8888
http.trunk_size=256KB
http.need_find_content_type=true
##include http.conf
附录三:FastDFS常用命令
启动命令:
启动tracker命令:/etc/init.d/fdfs_trackerd start
查看进程命令:ps -el | grep fdfs
启动storage命令:/etc/init.d/fdfs_storaged start
查看进程命令:ps -el | grep fdfs
启动nginx命令:/usr/local/nginx/sbin/nginx
停止命令:
停止tracker命令:/etc/init.d/fdfs_trackerd stop
关闭storage命令:/etc/init.d/fdfs_storaged stop
关闭nginx命令:/usr/local/nginx/sbin/nginx -s stop
基于【 centos7】三 || 分布式文件系统FastDFS+Nginx环境搭建的更多相关文章
- 分布式文件系统FastDFS简介、搭建、与SpringBoot整合实现图片上传
之前大学时搭建过一个FastDFS的图片服务器,当时只是抱着好奇的态度搭着玩一下,当时搭建采用了一台虚拟机,tracker和storage服务在一台机器上放着,最近翻之前的博客突然想着在两台机器上搭建 ...
- CentOS7.5 GlusterFS 分布式文件系统集群环境搭建
环境准备: 系统版本:CentOS Linux release 7.5.1804 (Core) glusterfs:3.6.9 userspace-rcu-master: 硬件资源: 10.200.2 ...
- 分布式文件系统 - FastDFS 配置 Nginx 模块及上传测试
也不说废话,直接干 上一篇 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署 中安装了 FastDFS 后,并配置启动了 Tracker 和 Storage 服务,已经可以上传文件 ...
- 高可用高性能分布式文件系统FastDFS进阶keepalived+nginx对多tracker进行高可用热备
在上一篇 分布式文件系统FastDFS如何做到高可用 中已经介绍了FastDFS的原理和怎么搭建一个简单的高可用的分布式文件系统及怎么访问. 高可用是实现了,但由于我们只设置了一个group,如果现在 ...
- 分布式文件系统FastDFS在CentOS7上的安装及与Springboot的整合
1. 概述 FastDFS 是目前比较流行的分布式文件系统,可以很容易的实现横向扩展.动态扩容.灾备.高可用和负载均衡. FastDFS 的服务分为 tracker 服务 和 storage 服务, ...
- 【架构设计】分布式文件系统 FastDFS的原理和安装使用
本文地址 分享提纲: 1.概述 2. 原理 3. 安装 4. 使用 5. 参考文档 1. 概述 1.1)[常见文件系统] Google了一下,流行的开源分布式文件系统有很多,介绍如下: -- mo ...
- 网站文件系统发展&&分布式文件系统fastDFS
网站文件系统发展 1.单机时代的图片服务器架构 初创时期由于时间紧迫,开发人员水平也很有限等原因.所以通常就直接在website文件所在的目录下,建立1个upload子目录,用于保存用户上传的图片文件 ...
- 分布式文件系统 - FastDFS 简单了解一下
别问我在哪里 也许我早已不是我自己,别问我在哪里,我一直在这里. 突然不知道说些什么了... 初识 FastDFS 记得那是我刚毕业后进入的第一家公司,一个技术小白进入到当时的项目组后,在开发中上传用 ...
- [转]分布式文件系统FastDFS架构剖析
[转]分布式文件系统FastDFS架构剖析 http://www.programmer.com.cn/4380/ 文/余庆 FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实 ...
随机推荐
- kafka shell file
1. start kafka and schema_registry #!/bin/sh export KAFKA_HOME=/home/lenmom/workspace/software/confl ...
- 如何让在panel里的子窗体随panel的大小改变而变化?(转)
private void Form1_Load(object sender, EventArgs e) { frm=new Form2(); ...
- 前端表格插件datatables
下载datatables datatables官网:https://www.datatables.net/ datatables下载地址:https://www.datatables.net/down ...
- jQuery动态创建html元素的常用方法汇总
在使用jQuery进行WEB程序设计的时候非常有用.分享给大家供大家参考.具体方法如下: 一般来说,可以通过以下几种方式动态创建html元素: 1.使用jQuery创建元素的语法 2.把动态内容存放到 ...
- 云计算和 AWS 概述(一)
目录 云计算基础 概念 优势 云计算分类 AWS简介 服务概述 AWS 核心服务 AWS 平台服务 AWS开发和操作服务 AWS 数据中心和可用区(AZ) 区域 可用区 区域名 AWS 云适应框架 ( ...
- Python 动态规划算法
背包问题 假设你是一个小偷,背一个可装4磅东西的背包.可盗窃的商品有如下3件: 音响,4磅,价值3000美元 笔记本电脑,3磅,价值2000美元 吉他,1磅,价值1500美元 为了让盗窃的商品价值最高 ...
- 李宗盛spss罚写2019-12-8
以上过程即整个假设检验的思想:反证法及小概率原理. 因而假设检验有可能犯两类错误. 第一类错误:原假设正确,而错误地拒绝了它,即“拒真”的错误,其发生的概率为第一类错误的概率. 第二类错误:原假设不正 ...
- java的简单工厂模式
目录 代码讲解 UML图解简单工厂 优点 缺点: 改进: 代码讲解 产品功能接口: /** * 定义接口,抽象出产品都具有的功能 */ interface Produce { void method( ...
- P3205 [HNOI2010]合唱队
题目点这里 题面: 为了在即将到来的晚会上有更好的演出效果,作为AAA合唱队负责人的小A需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共N个人,第i个人的身高为Hi米(1000<=Hi ...
- 基于聚类K-Means方法实现图像分割
”“”K-Means to realize Image segmentation “”“ import numpy as np import PIL.Image as image from sklea ...