MogileFS基于Nginx反向代理实现分布式存储与访问

前言

随着信息社会的发展,越来越多的信息被数据化,尤其是伴随着大数据时代的来临,数据呈爆炸式增长。传统存储在面对海量数据存储表现出的力不从心已经是不争的事实,例如:纵向扩展受阵列空间限制,横向扩展受交换设备限制,节点受文件系统限制等。而分布式存储的出现在一定程度上有效的缓解了这一问题,目前比较流行的分布式文件系统有:GFS、HDFS、GlusterFS、MooseFS、Lustre、TFS、MogileFS和FastDFS等,本文带来的是MogileFS基于Nginx反向代理实现分布式存储与访问

相关介绍

分布式文件系统

分布式文件系统,顾名思义,就是分布式+文件系统。它包含这两个方面的内涵,从文件系统的客户使用的角度来看,它就是一个标准的文件系统,提供了一系列API,由此进行文件或目录的创建、移动、删除,以及对文件的读写等操作。从内部实现来看,分布式的系统则不再和普通文件系统一样负责管理本地磁盘,它的文件内容和目录结构都不是存储在本地磁盘上,而是通过网络传输到远端系统上。并且,同一个文件存储不只是在一台机器上,而是在一簇机器上分布式存储,协同提供服务。

MogileFS

MogileFS是一个开源的分布式文件系统,用于组建分布式文件集群,目前使用MogileFS的公司非常多,就国内而言如yupoo,digg,土豆,豆瓣,1号店, 大众点评,搜狗,安居客等。

MogileFS组成部分

server端:包括mogilefsd和mogstored两个程序。mogilefsd即tracker,它将一些全局信息保存在数据库里,例如:站点domain,class,host等。mogstored即存储节点,默认侦听在7500端口,接受客户端的文件备份请求。在安装完后,要运行mogadm工具将所有的存储节点注册到mogilefsd的数据库里,mogilefsd会对这些节点进行管理和监控。

utils(工具集):主要是MogileFS的一些管理工具,例如mogadm等。

客户端API:目前只有Perl API(MogileFS.pm)、PHP,用这个模块可以编写客户端程序,实现文件的备份管理功能,提供MogileFS.pm。

实现过程

理想架构

MogileFS分布式文件系统架构设计.jpg

说明:因资源有限,本文主要讲解单点nginx和mariadb实现

实验拓扑

MogileFS分布式文件系统构建.jpg

工作流程

①客户端向服务器端发送请求

②nginx通过调度将请求转达给其中一个mogilefs的tracker

③tracker接收到请求向后端数据库获取存储位置并返回给nginx

④nginx接到存储位置再到mogilefs的存储上获取实际存储数据并返回给客户端

mariadb配置

数据库安装不再赘述

授权准备

mogilefs配置

安装所需软件包

tracker配置

mogstored配置

将配置文件同步至另一节点

创建设备挂载点

初始化数据库

查看是否执行成功

1.jpg

启动服务

查看监听端口

2.jpg

添加节点

添加设备

进行状态检查

3.jpg

创建domain

查看domain信息

4.jpg

上传测试

查看是否上传成功

获取数据

5.jpg

客户端通过fid查看数据

6.jpg

7.jpg

mogilefs集群配置完成,接下来需要配置nginx反向代理

nginx配置

编译安装nginx及mogilefs拓展模块

提供脚本

为脚本赋予执行权限

添加至服务管理列表,并让其开机自动启动

配置nginx

测试语法,启动服务

访问测试

8.jpg

9.jpg

由于版本bug上传功能并不能实现,但是删除功能是可以实现的,这里就不再演示,实际生产环境中应用程序都是通过调用API直接联系mogilefs上传的,故此处不必过于纠结

将其中一个mogilefs节点模拟故障

再次访问测试

10.jpg

可见还是可以访问的,至此,基于nginx反向代理实现mogilefs分布式文件系统访问已实现

The end

好了,MogileFS基于Nginx反向代理实现小文件海量存储实验就先说到这里了,有余力的朋友可以实现nginx节点和mariadb节点的高可用,部署过程中遇到问题可随时留言交流。以上仅为个人学习整理,如有错漏,大神勿喷~~~

原创文章,作者:书生,如若转载,请注明出处:http://www.178linux.com/6124

评论列表(1条)

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班