内容简介:FastDFS有两个重要的角色:跟踪服务器(tracker)和存储服务器(storage)。FastDFS中的storage是采用分组(group)的方式来存储文件。一个group中可以由一个或多个storage server组成,同一个group中的storage server是互备关系,即同一个group中的每个storage server相互进行文件同步(由专门的线程来完成),最终达到每个storage server中存储的文件是完全一致的。
FastDFS有两个重要的角色:跟踪服务器(tracker)和存储服务器(storage)。
1. 存储服务器(storage server)
FastDFS中的storage是采用分组(group)的方式来存储文件。
一个group中可以由一个或多个storage server组成,同一个group中的storage server是互备关系,即同一个group中的每个storage server相互进行文件同步(由专门的线程来完成),最终达到每个storage server中存储的文件是完全一致的。
一个storage集群是由一个或多个group组成。storage集群的存储总容量是集群中所有的group的存储总容量之和。由于同一个group中的storage server是互备关系,因此每个group的存储总容量是该group中存储容量最小的storage server的存储容量。因此,同一个group中的storage server的硬件配置应尽量保持一致,以免造成浪费。
storage server提供了文件上传、文件删除、文件访问(下载)等基础的功能。文件访问(下载)可以通过使用nginx扩展模块来完成(即每个storage server中都需要安装一个nginx应用)。
2. 跟踪服务器(tracker server)
FastDFS中的tracker主要的作用是负载均衡和调度。tracker server可以有多个,tracker server之间是对等的关系,没有主从之分。当客户端连接tracker server时,如果tracker server有多个,客户端会任意选择其中的一个来连接。storage server会周期性定时的向集群中的所有tracker server报告其分组和状态等信息(storage server会通过启动一个单独的线程来完成)。
3. 客户端(client)
以文件上传为例,client、tracker server、storage server的时序图如下(图片摘自网络):
4. 部署概况
角色 | IP | 端口 |
---|---|---|
tracker | 10.10.10.121 | 22122 |
tracker | 10.10.10.122 | 22122 |
tracker | 10.10.10.123 | 22122 |
storage | 10.10.10.121 | 22122 |
storage | 10.10.10.122 | 22122 |
storage | 10.10.10.123 | 22122 |
5. 安装清单
- FastDFS
- Nginx
注:FastDFS的基础详细安装可参考「 FastDFS分布式文件系统搭建 」。 |
注:本文示例每台虚拟机都分别安装一个 |
5.1 libfastcommon 安装
解压缩并进入解压缩后的文件夹的根目录:
# tar zxvf libfastcommon-1.0.36.tar.gz && cd libfastcommon-1.0.36
执行编译安装:
# ./make.sh && ./make.sh install
5.2 fastdfs 安装
解压缩并进入解压缩后的文件夹的根目录:
# tar zxvf fastdfs-5.10.tar.gz && cd fastdfs-5.10
执行编译安装:
# ./make.sh && ./make.sh install
安装完成之后,在系统的 |
将当前路径下 conf 目录里面的 anti-steal.jpg,http.conf,mime.types 复制到 /etc/fdfs 目录中:
# cp conf/anti-steal.jpg conf/http.conf conf/mime.types /etc/fdfs/
5.2.1 tracker 配置
将 /etc/fdfs/tracker.conf.sample
重命名为 /etc/fdfs/tracker.conf
:
# mv /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
编辑 tracker 配置文件:
# vi /etc/fdfs/tracker.conf
主要配置及说明:
# 端口 port=22122 # # 连接超时时间,单位秒,默认是30 connect_timeout=30 # # 网络超时时间,单位秒,默认是60 network_timeout=60 # # 数据文件和日志文件存储的基路径 base_path=/home/fanlychie/fastdfs # # 最大并发连接数 max_connections=256 # # 上传文件时,选group的策略 # 0:轮询group # 1:使用特定的group # 2:选择可用空间最大的group store_lookup=2 # # 指定文件上传到哪个group。当store_lookup设置为1时,必须指定这个group的名称。当store_lookup是其它值时该属性可以不设值 store_group=group1 # # 上传文件时,选storage server的策略 # 0:轮询 # 1:根据配置的IP的顺序 # 2:根据配置的优先级 store_server=0 # # 上传文件时,选存储介质(磁盘或挂载点)的策略 # 0:轮询 # 1:优先使用最大可用空间的路径 store_path=0 # # 下载文件时,选storage server的策略 # 0:轮询 # 1:当前文件上传的源storage server download_server=0 # # 系统保留的存储空间 reserved_storage_space = 1% # # HTTP端口 http.server_port=8080
5.2.2 storage 配置
将 /etc/fdfs/storage.conf.sample
重命名为 /etc/fdfs/storage.conf
:
# mv /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
编辑 storage 配置文件:
# vi /etc/fdfs/storage.conf
主要配置及说明:
# 所属group的名称 group_name=group1 # # 端口 port=23000 # # 连接超时时间,单位秒,默认是30 connect_timeout=30 # # 网络超时时间,单位秒,默认是60 network_timeout=60 # # 数据文件和日志文件存储的基路径 base_path=/home/fanlychie/fastdfs/storage # # 最大并发连接数 max_connections=256 # # 文件存储的路径。可以配置多个 store_path0=/home/fanlychie/fastdfs/storage #store_path1=/home/fanlychie/fastdfs/storage1 # # tracker server的IP和端口。如果有多个则配置多行 tracker_server=10.10.10.121:22122 tracker_server=10.10.10.122:22122 tracker_server=10.10.10.123:22122
5.2.3 client 配置
将 /etc/fdfs/client.conf.sample
重命名为 /etc/fdfs/client.conf
:
# mv /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
编辑 client 配置文件:
# vi /etc/fdfs/client.conf
主要配置及说明:
# 数据文件和日志文件存储的基路径 base_path=/home/fanlychie/fastdfs # # tracker server的IP和端口。如果有多个则配置多行 tracker_server=10.10.10.121:22122 tracker_server=10.10.10.122:22122 tracker_server=10.10.10.123:22122
5.3 fastdfs-nginx-module 安装
解压缩并进入解压缩后的文件夹的根目录:
# tar zxvf fastdfs-nginx-module_v1.16.tar.gz && cd fastdfs-nginx-module
编辑 src/mod_fastdfs.conf
:
# vi src/mod_fastdfs.conf
主要配置及说明:
# tracker server的IP和端口。如果有多个则配置多行 tracker_server=10.10.10.121:22122 tracker_server=10.10.10.122:22122 tracker_server=10.10.10.123:22122 # # 如果请求的url地址中包含了group_name(如“group1/M00/00/00/xxx”)则应设为true。 # 如果请求的url地址中不包含group_name(如“/M00/00/00/xxx”)则应设为false。 url_have_group_name = true # # 文件存储的路径。可以配置多个 # 必须配置与本机storage.conf中配置的store_path0路径相同 store_path0=/home/fanlychie/fastdfs/storage #store_path1=/home/fanlychie/fastdfs/storage1
复制文件 src/mod_fastdfs.conf
到 /etc/fdfs/
目录下:
#cp src/mod_fastdfs.conf /etc/fdfs/
编辑 src/config
:
#vi src/config
找到 CORE_INCS
的配置行,去掉路径中的 /local
,改为如下并保存退出:
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
5.4 nginx 安装
由于 FastDFS
提供的HTTP服务较为简单,它无法提供负载均衡等高性能的服务。因此, FastDFS
通常会结合 Nginx
来使用。安装 Nginx
所需的依赖有:
- nginx 的 gzip 模块(压缩)需要依赖 zlib 库
- nginx 的 ssl 模块(支持 HTTPS)需要依赖 openssl 库
- nginx 的 rewrite 模块(支持 URL 重写)需要依赖 pcre 库
5.4.1 pcre 安装
解压缩并进入解压缩后的文件夹的根目录:
#tar zxvf pcre-8.36.tar.gz &&cdpcre-8.36
执行编译安装:
#./configure && make && make install
创建软连接(64位系统):
#ln -s /usr/local/lib/libpcre.so.1 /lib64
创建软连接(32位系统):
#ln -s /usr/local/lib/libpcre.so.1 /lib
5.4.2 zlib 安装
解压缩并进入解压缩后的文件夹的根目录:
#tar zxvf zlib-1.2.11.tar.gz &&cdzlib-1.2.11
执行编译安装:
#./configure && make && make install
5.4.3 openssl 安装
解压缩并进入解压缩后的文件夹的根目录:
#tar zxvf openssl-1.0.2l.tar.gz &&cdopenssl-1.0.2l
执行编译安装:
#./config && make && make install
5.4.4 nginx 安装
解压缩并进入解压缩后的文件夹的根目录:
#tar zxvf nginx-1.12.1.tar.gz &&cdnginx-1.12.1
编译安装( 注意修改 --add-module
的路径 ):
#./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src/ && make && make install
|
编辑 nginx 配置文件:
#vi /usr/local/nginx/conf/nginx.conf
添加如下配置:
location /group1/M00 { root /home/fanlychie/fastdfs/storage/data/; ngx_fastdfs_module; }
|
|
5.5 启动服务
5.5.1 tracker
启动命令:
# fdfs_trackerd /etc/fdfs/tracker.conf start
停止命令:
# fdfs_trackerd /etc/fdfs/tracker.conf stop
重启命令:
# fdfs_trackerd /etc/fdfs/tracker.conf restart
5.5.2 storage
启动命令:
# fdfs_storaged /etc/fdfs/storage.conf start
停止命令:
# fdfs_storaged /etc/fdfs/storage.conf stop
重启命令:
# fdfs_storaged /etc/fdfs/storage.conf restart
5.5.3 nginx
启动命令:
#/usr/local/nginx/sbin/nginx
停止命令:
#/usr/local/nginx/sbin/nginx -s stop
重新加载命令:
#/usr/local/nginx/sbin/nginx -s reload
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Elasticsearch 集群搭建和集群原理
- Zookeeper学习系列【二】Zookeeper 集群章节之集群搭建
- Spark集群环境搭建
- Zookeeper搭建集群
- Zookeeper集群环境搭建
- 搭建Selenium 集群
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深入理解OpenCV
[巴西]Daniel Lelis Baggio / 刘波 / 机械工业出版社 / 2014-9 / 59
opencv是最常见的计算机视觉库之一,它提供了许多经过优化的复杂算法。本书对已掌握基本opencv技术同时想提高计算机视觉的实践经验的开发者来讲是一本非常好的书。每章都有一个单独的项目,其背景也在这些章节中进行了介绍。因此,读者可以依次学习这些项目,也可以直接跳到感兴趣的项目进行学习。 《深入理解opencv:实用计算机视觉项目解析》详细讲解9个实用的计算机视觉项目,通过本书的学习,读者可......一起来看看 《深入理解OpenCV》 这本书的介绍吧!