nginx反代mogilefs实现海量小文件存储
一、简介
1、介绍
MogileFS 是一个开源的分布式文件系统,用于组建分布式文件集群,由 LiveJournal 旗下 Danga Interactive 公司开发,Danga 团队开发了包括 Memcached、MogileFS、Perlbal 等不错的开源项目:(注:Perlbal 是一个强大的 Perl 写的反向代理服务器)
2、MogileFS的特性
(1)工作在应用层提供服务
(2)无单点(至少存在两份副本在不同的节点上)
(3)自动文件复制
mogilefs将多个文件组织成一个单位进行复制,复制的最小单元是class
(4)传输中立,无特殊协议,可通过NFS或HTTP进行通信
(5)简单的命名空间
mogilefs是基于域(domain)来访问的,没有目录,所有的数据都直接存储在各存储空间中
3、MogileFS的几个部分
(1)database 使用mogdbsetup程序来初始化数据库。数据库保存了Mogilefs的所有元数据,因此数据库部分非常重要,如果这儿挂了,那么整个Mogilefs将处于不可用状态。所以最好是HA结构。
(2)mogstored(存储节点) mogstored是数据存储的位置,用来数据的创建、删除、获取等,每一个节点必须向tracker注册,然后才能使用device id,可以通过mogadm增加这台机器到cluster中。
(3)tracker(跟踪器) MogileFS的核心,是一个高度器,服务进程为mogilefsd。mogadm,mogtool的所有操作都要跟trackers打交道,Client的一些操作也需要定义好tracker,因此最好同时运行多个tracker来做负载均衡。
(4)工具 主要就是mogadm这个工具,用来在命令行下控制整个mogilefs系统以及查看状态等。
(5)Client Client实际上是一个Perl的pm,可以写程序调用该pm来使用mogilefs系统,对整个系统进行读写操作。
二、拓扑流程图
QTkc=" />
三、说明
1、规划说明
实验共有5台主机,nginx做为前端反向代理接收用户请求;mariadb作为存储mogilefs元数据的数据库;剩下的三台主机分别安装tracker+mogstore。
2、nginx反代流程
为了能够基于URL进行(而非fid),nginx需要安装一个第三方的mogilefs模块(nginx-mogilfes就是利用mogilefs的API开发的一个应用程序)来自动转换fid到URL的映射;当用户请求来的时候,nginx通过location的判定明确知道这是一个存储在后端mogilefs应用的话,将会启用反向代理机制,nginx把自己扮演为mogilefs的客户端,此时把URL当作键直接向后端发起文件查询请求,tracker就会返回一个地址;nginx再次扮演成客户端到对应的mogstored进程上取,当nginx拿到后就去响应前端的http请求
3、实验拓扑:
QTZJQUVNUEFjODM4LnBuZw==" src="http://www.it165.net/uploadfile/files/2014/0512/201405120826134.png" title="实验拓扑.PNG" />
四、分布式文件系统的实现
1、配置数据库(172.16.7.10)
1.
MariaDB [mogilefs]&
gt
; grant all on *.* to "root"@"172.16.7.10";
#授权root用户所有权限
- 上一篇: 用Python读取大文件(上)
- 下一篇: 【MogileFS-2.44】 安装与配置