mogilefs详解

分布式:

分布式存储或分布式文件系统的概念:

多台计算机每一台提供一定的存储空间存储数据,通过元数据服务器将数据均匀的存储在各个节点上

元数据:描述数据的数据,主要是描述数据属性,用来支持如指示存储位置、资源查找、文件记录等功能

分布式文件系统:可以直接挂载在系统上进行访问

分布式存储:只能通过API进行访问

有元数据节点服务器:元数据节点存储元数据,数据节点存储数据

无元数据节点服务器:每个数据节点保存完整的元数据和部分数据

常见软件:

GFS:google file system

HDFS:Hadoop file system

TFS:taobao(淘宝) file system

ceph:linux内核中实现的分布式文件系统

MooseFS:轻量级分布式文件系统

MogileFS:轻量级分布式文件系统,比moosefs的性能高

MogileFS

MogileFS有3个组件:

Tracker:是文件系统集群的核心节点,基于数据库保存元数据,主要用于监控、指示storage节点完成数据的添加、删除、查询,及节点之间数据的复制等,Tracker节点通常有多个,以实现负载均衡和高可用

storage:实际存储数据的位置,能完成文件创建、删除、重命名等操作

database:存储Tracker节点的元数据及全局信息

实现原理: 在MogileFS中,每一个数据块都会有多个副本,存放于多个storage上(一般是3份),在Tracker上会分别每一个数 据块的存储位置。若某个storage节点不在线了,客户端向Tracker节点请求获取数据时,Tracker节点会返回副本的存储位置给客户端。这样就保证了整个集群高可用性。当有数据存储至某一storage节点后,各storage节点会根据Tracker的指示通过节点间通信将副本发送至其他节点上。若某一storage下线了,该节点上的副本会由其他节点重新提供,保证副本的个数不少于指定的值

安装配置:

环境准备:
	[epel]
	nama=epel package
	baseurl=http://mirrors.aliyun.com/epel/6/x86_64/	#阿里yum源
	gpgcheck=1
	enabled=1
	gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-6

	yum -y install Perlbal				#安装perl包管理工具
	yum -y install perl-DBI				#安装其他依赖包
	yum -y install perl-DBD-MySQL			#连接数据库模块
	yum -y install perl-Danga-Socket
	yum -y install perl-IO-AIO
	yum -y install perl-Net-Netmask
	yum -y install cpan				#perl模块管理工具
	yum -y install mysql mysql-server		#安装数据库

	cpan		#第一次使用perl包管理工具需要输入yes进行环境配置
		cpan[1]> install MogileFS::Client   #使用cpan安装MogileFS::Client
		cpan[1]> install MogileFS::Utils
安装mogilefs:
   wget http://search.cpan.org/CPAN/authors/id/D/DO/DORMANDO/MogileFS-Server-2.44.tar.gz    
	tar zxvf MogileFS-Server-2.44.tar.gz -C /usr/src/
	cd /usr/src/MogileFS-Server-2.44
	perl Makefile.PL 		#检查环境
	make && make install		#编译  安装
配置mysql数据库:
	chkconfig --add mysqld
	chkconfig mysqld on
	service mysqld start			#启动mysql
	mysqladmin -uroot password 123.com	#设置root密码
	mysql -uroot -p			        #连接数据库
	   create database mogilefs;	       	#创建数据库
	   grant all on mogilefs.* to ‘mogilefs‘@‘192.168.%.%‘ identified by ‘456.com‘;
	       #授权用户
	   flush privileges;
         mogdbsetup --dbhost=192.168.0.10 --dbrootpass=‘123.com‘ --dbuser=mogilefs --dbpass=‘456.com‘
		 --dbhost=	     	#数据库地址,默认为localhost
		 --dbport=	       	#端口,默认3306
		 --dbname=		#连接的库名,默认mogilefs
		 --dbrootuser=		#初始化库的用户,默认root
		 --dbrootpass=	        #root的密码,默认为空
		 --dbuser=	        #连接初始化库的用户,默认mogilefs
		 --dbpass=      	#初始用户的密码,默认为空
配置mogilefs:
	useradd -r mogilefs			#创建运行用户,mogilefs不能以root用户运行
	mkdir /etc/mogilefs
	mkdir /var/run/mogilefsd		#pid文件存放位置
	vim /etc/mogilefs/mogilefsd.conf 	#创建配置文件
		pidfile = /var/run/mogilefsd/mogilefsd.pid	#pid文件位置
		db_dsn = DBI:mysql:mogilefs:host=192.168.0.10;port=3306;mysql_connect_timeout=5   
		     #连接数据库的信息
		daemonize = 1		    #运行为守护进程
		db_user = mogilefs          #数据库上的用户名
		db_pass = 456.com 	    #用户名对应的密码
		listen = 0.0.0.0:7001       #监听的地址和端口
		conf_port = 7001 
		query_jobs = 10             #用于查询的进程数
		delete_jobs = 1             #用于删除操作的进程数
		replicate_jobs = 5          #用于复制的进程数
		reaper_jobs = 1             #用于回收资源的进程数

	chown -R mogilefs:mogilefs /etc/mogilefs	    #修改属主属组
	chown -R mogilefs:mogilefs /var/run/mogilefsd
	su - mogilefs -c "mogilefsd -c /etc/mogilefs/mogilefsd.conf --daemon"
	    #启动服务
	ss -tnl	| grep 7001			#查看服务是否启动	
storage配置:安装和Tracker一样的包,如果不作为Tracker则不需要配置安装数据库
	useradd -r mogilefs		#创建运行用户
	mkdir -pv /mogilefs/data/dev1  #创建数据存储目录,dev1必须有代表第一个storage的设备
	mkdir /etc/mogilefs
	vim /etc/mogilefs/mogstored.conf 
		maxconns = 1000               #最大并发连接数
		httplisten = 0.0.0.0:7500     #http监听的地址
		mgmtlisten = 0.0.0.0:7501     #管理接口监听地址
		docroot = /mogilefs/data      #用于存储的目录

	chown -R mogilefs:mogilefs /etc/mogilefs    #修改属主属组
	chown -R mogilefs:mogilefs /mogilefs/
	su - mogilefs -c "mogstored -c /etc/mogilefs/mogstored.conf --daemon"
	        #启动服务
	ss -ntl | grep 7500 
	ss -ntl | grep 7501
mogilefs管理:
	mogadm check			#检查状态
	mogadm device list		#查看各节点设备情况
	mogadm host list		#查看各节点情况
	mogadm host add 192.168.0.10 --ip=192.168.0.10 --status=alive
	        #添加节点,192.168.0.10标示名称
	mogadm host add 192.168.0.50 --ip=192.168.0.50 --status=alive
	        #添加节点,192.168.0.50标示名称
	mogadm device add 192.168.0.10 1		#添加第一个节点
	mogadm device add 192.168.0.50 2		#添加第二个节点
	mogadm domain list			#查看域
	mogadm domain add www			#添加www域
	mogadm --trackers=192.168.0.10:7001 class add www user --mindevcount=2
	#在www域内添加user类,mindevcount:最小复制文件的份数  replpolicy :复制份数

	mogupload --trackers=192.168.0.10:7001 --domain=www --key=‘pwd‘ --file=‘/etc/passwd‘
		#上传文件  key:上传保存位置,以dev为根   file:本地文件
	mogfileinfo --trackers=192.168.0.10:7001 --domain=www --key=‘pwd‘  #查看文件
	moglistkeys --trackers=192.168.0.10 --domain=www		#列出所有key

配置实例:

实验环境:centos6.5
    192.168.0.10  Nginx  	 192.168.0.20  mysql
    192.168.0.30  mogilefs   192.168.0.40  mogilefs  192.168.0.50  mogilefs

  1、配置mogilefs:
    mogadm --trackers=192.168.0.30 host add 192.168.0.30 --ip=192.168.0.30 --status=alive
    mogadm --trackers=192.168.0.30 host add 192.168.0.40 --ip=192.168.0.40 --status=alive
    mogadm --trackers=192.168.0.30 host add 192.168.0.50 --ip=192.168.0.50 --status=alive
    mogadm domain add www
    mogupload --trackers=192.168.0.10:7001 --domain=www --key=‘pwd‘ --file=‘/etc/passwd‘

    2、编译安装nginx:
	groupadd -r nginx
	useradd -r -g nginx nginx
	yum -y install pcre-devel
	tar zxvf nginx-1.8.1.tar.gz -C /usr/src/
	tar zxvf nginx_mogilefs_module-1.0.4.tar.gz -C /usr/src/   #支持mogilefs的第三方模块
	 ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --add-module=/usr/src/nginx_mogilefs_module-1.0.4/
	--add-module:指定第三方模块位置
	make && make install

    3、配置nginx:
	http {
	    include       mime.types;
	    default_type  application/octet-stream;

	    upstream mogfs{			#tracker地址
	        server 192.168.0.30:7001;
		server 192.168.0.40:7001;
		server 192.168.0.50:7001;
		} 

	    sendfile        on;
	    keepalive_timeout  65;

	    server {
		    listen       80;
		    server_name  localhost;

		    location /img/ {    	#启用mogilefs集群
		        mogilefs_tracker mogfs;    #tracker地址
			    mogilefs_domain www;	#指定域
			    mogilefs_noverify on;	#不做校验
			    mogilefs_methods GET;	#请求方法

			    mogilefs_pass {
			        proxy_pass $mogilefs_path;
			            #必须这样写,$mogilefs_path模块内置变量
				proxy_hide_header Content-Type;
			            #隐藏Content-Type
				proxy_buffering off;		#关闭缓存
				}
			}   
		}
	}

		4、验证
			1、访问http://192.168.0.10/img/pwd
			2、关闭192.168.0.30继续访问,查看访问是否正常		
时间: 2024-10-08 05:51:26

mogilefs详解的相关文章

Spring事务管理(详解+实例)

写这篇博客之前我首先读了<Spring in action>,之后在网上看了一些关于Spring事务管理的文章,感觉都没有讲全,这里就将书上的和网上关于事务的知识总结一下,参考的文章如下: Spring事务机制详解 Spring事务配置的五种方式 Spring中的事务管理实例详解 1 初步理解 理解事务之前,先讲一个你日常生活中最常干的事:取钱. 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱.这两个步骤必须是要么都执行要么都

转载:DenseNet算法详解

原文连接:http://blog.csdn.net/u014380165/article/details/75142664 参考连接:http://blog.csdn.net/u012938704/article/details/53468483 本文这里仅当学习笔记使用,具体细节建议前往原文细度. 论文:Densely Connected Convolutional Networks 论文链接:https://arxiv.org/pdf/1608.06993.pdf 代码的github链接:h

MariaDB(MySQL)创建、删除、选择及数据类型使用详解

一.MariaDB简介(MySQL简介略过) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品.在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB. MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL A

HttpServletResponse和HttpServletRequest详解

HttpServletResponse,HttpServletRequest详解 1.相关的接口 HttpServletRequest HttpServletRequest接口最常用的方法就是获得请求中的参数,这些参数一般是客户端表单中的数据.同时,HttpServletRequest接口可以获取由客户端传送的名称,也可以获取产生请求并且接收请求的服务器端主机名及IP地址,还可以获取客户端正在使用的通信协议等信息.下表是接口HttpServletRequest的常用方法. 说明:HttpServ

POSIX 线程详解(经典必看)

总共三部分: 第一部分:POSIX 线程详解                                   Daniel Robbins ([email protected]), 总裁/CEO, Gentoo Technologies, Inc.  2000 年 7 月 01 日 第二部分:通用线程:POSIX 线程详解,第 2部分       Daniel Robbins ([email protected]), 总裁/CEO, Gentoo Technologies, Inc.  20

.NET深入解析LINQ框架(五:IQueryable、IQueryProvider接口详解)

阅读目录: 1.环路执行对象模型.碎片化执行模型(假递归式调用) 2.N层对象执行模型(纵横向对比链式扩展方法) 3.LINQ查询表达式和链式查询方法其实都是空壳子 4.详细的对象结构图(对象的执行原理) 5.IQueryable<T>与IQueryProvider一对一的关系能否改成一对多的关系 6.完整的自定义查询 1]. 环路执行对象模型.碎片化执行模型(假递归式调用) 这个主题扯的可能有点远,但是它关系着整个LINQ框架的设计结构,至少在我还没有搞懂LINQ的本意之前,在我脑海里一直频

netstat状态详解

一.生产服务器netstat tcp连接状态................................................................................ 2 1.1生产服务器某个业务LVS负载均衡上连接状态数量............................................... 2 1.2生产服务器某个业务web上连接状态数量...............................................

详解go语言的array和slice 【二】

上一篇  详解go语言的array和slice [一]已经讲解过,array和slice的一些基本用法,使用array和slice时需要注意的地方,特别是slice需要注意的地方比较多.上一篇的最后讲解到创建新的slice时使用第三个索引来限制slice的容量,在操作新slice时,如果新slice的容量大于长度时,添加新元素依然后使源的相应元素改变.这一篇里我会讲解到如何避免这些问题,以及迭代.和做为方法参数方面的知识点. slice的长度和容量设置为同一个值 如果在创建新的slice时我们把

13.Linux键盘按键驱动 (详解)

版权声明:本文为博主原创文章,未经博主允许不得转载. 在上一节分析输入子系统内的intput_handler软件处理部分后,接下来我们开始写input_dev驱动 本节目标: 实现键盘驱动,让开发板的4个按键代表键盘中的L.S.空格键.回车键 1.先来介绍以下几个结构体使用和函数,下面代码中会用到 1)input_dev驱动设备结构体中常用成员如下: struct input_dev { void *private; const char *name; //设备名字 const char *ph