上犹电脑信息网我们一直在努力
您的位置:上犹电脑信息网 > 文件问题 > 分布式文件管理系统 FastDFS集群-文件管理系统

分布式文件管理系统 FastDFS集群-文件管理系统

作者:上犹日期:

返回目录:文件问题

简单介绍

1,client storage tracker的关系

先用一幅图来解释用户如何访问一个通过DFS管理的文件

分布式文件管理系统 FastDFS集群

一般来说,一台服务器只有一个storage server,多个storage server可以组成一个group,同一group间storage server的数据自动同步(备份与恢复)。

不同group数据互相隔离,一个tracker可以管理多个group,也可以多对多。

client用于管理 tracker server 和storage server。

FAST_DFS安装

下载并解压DFS压缩包,可以看到附带的 INSTALL 文本文件,以下安装步骤基于此。

分布式文件管理系统 FastDFS集群

#step 1. 从下面的链接下载libfastcommon压缩包,并按默认配置安装

分布式文件管理系统 FastDFS集群

集成Nginx以支持外部网络访问

Nginx的安装不在此赘述。

安装好Nginx后修改配置文件部分内容:

分布式文件管理系统 FastDFS集群

server {

分布式文件管理系统 FastDFS集群

root路径为storage.conf中指定的base_path

成功启动Nginx后,尝试使用 URL:YOUR_IP/M00/00/00/rBFUJljRLMmAI7ZOAAAFtJDWG_U_big.sample 从外网访问已经成功上传的测试文本,发现RESPONSE 404,无法访问。

查看Nginx日志error.log

2017/03/21 21:41:49 [error] 20562#0: *1 open() "/home/yuqing/fastdfs/data/M00/00/00/rBFUJljRLMmAI7ZOAAAFtJDWG_U_big.sample" failed (2: No such file or directory), client: ......

分析原因:

通过URL打开的文件目录是/home/yuqing/fastdfs/data/M00/00/00,而实际的存放目录是/home/yuqing/fastdfs/data/00/00。

发现多了一层不存在的目录M00:FastDFS支持多个磁盘(base path),所以要通过Mxx来区分,其中xx为磁盘的序号,基于0。

解决办法为/home/yuqing/fastdfs/data/M00/00/00创建软连接

ln -s /home/yuqing/fastdfs/data /home/yuqing/fastdfs/data/M00

storage节点增加硬盘

目的有两个扩容和提升部分性能。

分布式文件管理系统 FastDFS集群

修改storage.conf部分属性

分布式文件管理系统 FastDFS集群

重启两个服务

./fdfs_trackerd /etc/fdfs/tracker.conf restart

略微延迟后,可以在store_path1目录下看到有生成文件的存放目录。

再次使用相同的测试方法上传文件,会生成以M01开头的文件路径。

/M01/00/04/rBFUJljR4zOAaxHOAAAAVJyyfIA543.txt

验证发现这是保存在store_path1路径下的,正好和前面解释M00的含义呼应。

为支持新磁盘外网访问

方式一

分布式文件管理系统 FastDFS集群

修改nginx.conf 部分属性。
location /M01 {
#设置主机头和客户端真实地址,以便服务器获取客户端真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#禁用缓存
proxy_buffering off;
root store_path1/data;
}

添加软连接

ln -s /usr/local/dfsdata/data /usr/local/dfsdata/data/M01

重启Nginx服务

分布式文件管理系统 FastDFS集群

推荐-方式二

给Nginx安装fastdfs-nginx-module插件

解压后按附带的INTALL文件安装。

注意:需要把FastDFS安装包内的配置文件http.conf mime.types和fastdfs-nginx-module压缩包内的mod_fastdfs.conf复制一份到/etc/fdfs/目录下。

分布式文件管理系统 FastDFS集群

修改nginx.conf 部分属性:

分布式文件管理系统 FastDFS集群

以上值必须和storage.conf配置对应值保持一致。

重启Nginx服务

同一个group之间storage server数据同步

当 storage server 定义有相同的group_name时,认为它们是同一group,同一个group之间文件相互更新同步。所以常用做备份数据,提高系统的可靠性。

(测试时注意,在同一台服务器上通过修改端口的方式运行多个storage server是不可行的,会导致其中一个server无法正常使用。)

为group增加storage节点不用修改tracker server配置,是独立进行的。

增加节点时,系统会立即进行数据同步,所以会增加系统负荷,推荐在系统运行空闲时再操作。

增加节点时修改group_name为storage server指定group。

增加的节点配置储存路径数量需要和同一个group的其它节点数量保持一致。即store_path_count参数值相等。具体的路径可以不同。

否则tracker server有如下报错信息:

[2017-03-22 15:56:14] ERROR - file: tracker_mem.c, line: 4592, client ip: 172.17.84.39, store_path_count 1 less than that of the group "group1", the group store_path_count is 2

启动storage server 2

查看日志(省略部分信息)

分布式文件管理系统 FastDFS集群

data path: /home/yuqing/fastdfs2/data, mkdir sub dir done.

分布式文件管理系统 FastDFS集群

可以读出,当组内增加新节点时,它们的工作流程大致是:

INIT

!--1 在指定的store_path生成存放目录

!--2 开启tracker_client_thread通知tracker server :有新的节点加入。

!--3 成功与tracker server连接

SYCNING

!-------1 开启sync thread,准备数据同步

!-------2 进行数据同步(耗时)

!-------3 所有数据同步成功

ACTIVE

!----------1 成为组内一员

测试可靠性

!--s 1

组内其中一台storage server被执行rm命令或者磁盘坏道导致数据丢失时,组内其它storage server不会执行同步命令。

storage server重启后,会从组内选择一个数据完整的storage server进行增量更新。

!--s 2

组内其中一台storage server down掉,系统仍然正常运行。(每一台storage server都需要安装fastdfs-nginx-module插件并正确配置)

查看Nginx日志:

172.17.84.38 - - [22/Mar/2017:16:46:15 +0800] "GET /M01/00/00/rBFUJ1jSOaCAMPUNAAAAVJyyfIA114.txt?redirect=1 HTTP/1.0" 200 84 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2372.400 QQBrowser/9.5.10548.400"

通过控制台查看集群运行情况

分布式文件管理系统 FastDFS集群

#运行命令

分布式文件管理系统 FastDFS集群

更多JAVA开发/Nginx/dubbo/SQL/ActiveMQ/高并发/架构/分布式/性能优化JAVA交流免费视频群:578455330

相关阅读

  • 说说JavaScript的cookie与存储-cookies设置

  • 上犹设置问题
  • cookies设置,比如会员登录,下次回访网站时无须登录了;或者购物车,过几天发现购物车里还有之前的商品列表。一旦窗口或标签页被永久关闭了,那么所有通过sessionStorage存储的数据也
  • Java 变量-java变量设置

  • 上犹设置问题
  • java变量设置,Java变量类型在Java中,必须先声明所有变量,然后才能使用它们。变量声明的基本形式如下所示:typeidentifier[=value][,identifier[=value]…
  • Java环境配置-java变量设置

  • 上犹设置问题
  • java变量设置,Java在学习一门语言之前,首先需要把相应的开发环境搭建好,要编译和执行Java程序,Java开发包(Java SE Devolopment Kit, JDK)是必备的。一.
关键词不能为空
极力推荐

电脑蓝屏_电脑怎么了_win7问题_win10问题_设置问题_文件问题_上犹电脑信息网

关于我们