mogilefs-企业级分布式存储应用与实战

mogilefs-企业级分布式存储应用与实战

项目场景:

公司已经有了大量沉淀用户,为了让这些沉淀用户长期使用公司平台,公司决定增加用户粘性,逐步发展基于社交属性的多样化业务模式,决定开展用户讨论区、卖家秀、买家秀、用户试穿短视频等业务,因此,公司新的业务的业务特征将需要海量数据存储,要求基于开源技术,实现对公司海量存储业务的技术研究和实现。

项目分析:

Web 2.0 时代的到来,使得单个计算机节点远远无法满足用户对海量数据和应用程序运行空间的需求。个人和企业都有安全而持久的存储信息的需求,备份成为最通俗的手段。个人用户通过保存多个拷贝的形式实现信息存储的安全,但如果多个拷贝都失去,那么就崩溃了。存储需要保持实时读写,提供复杂的查询功能,缺乏容灾和备份能力,大量无结构的数据的存储和处理,对传统的存储方式提出挑战。

分布式存储,就是将数据信息分散存储,在网络发达的现代,这种存储利用多台存储服务器,部署简单化,操作智能化,稳定、可靠、易扩展。然而虽然缓解了问题,但依然存在的难点与挑战。例如:节点间通信、数据存储、数据空间平衡、容错、文件系统支持等一系列问题仍处在不断摸索和完善中。

MogileFS是一个开源的分布式文件存储系统, 目前使用MogileFS 的公司非常多。Mogilefs具有以下特性:

1、支持多节点冗余

2、可实现自动的文件复制

3、使用名称空间(命名空间),每个文件通过key来确定

比如:123.jpg /000/000/00/01/md5hash.fid  前者是key,后者是真实的存储文件名

4、不需要RAID,应用层可以直接实现RAID

5、工作于应用层,没有特殊的组件要求

6、不共享任何数据,通过“集群”接口提供服务。MogileFS不需要依靠昂贵的SAN来共享磁盘,每个机器只用维护好自己的磁盘。

Mogilefs架构:

mogileFS主要由三部分构成:tracker节点,database节点,storage节点。

每次文件的上传和读取,都经过前端TrackerServer服务器,trackerServer服务器收到client端的请求,查询数据库,返回一个上传或者是读取的可用的后端StorageServer的地址,然后由client端直接操作后端StorageServer服务器。


项目环境:

mysql+tracker服务器:ip 172.17.13.136

storage node1主机:        ip 172.17.13.134

storage node2主机:        ip 172.17.13.135

项目实现:


一、所有节点都安装perl相关包:

yum install perl-Net-Netmask perl-IO-String perl-Sys-Syslog perl-IO-AIO

mkdir ~/mogilefs 创建一个目录用来存放下面需要安装的rpm包

cd ~/mogilefs

lftp 172.17.0.1  连接服务器下载rpm包

>cd /pub/Sources/7.x86_64/mogilefs/

>mget *

>exit

yum localinstall ./* 安装

本地安装的rpm包有:ls ~/mogilefs

MogileFS-Server-2.46-2.el6.noarch.rpm        #核心服务

perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm     #socket

MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm  # tracker节点

perl-MogileFS-Client-1.14-1.el6.noarch.rpm    #客户端

MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm  #Storage存储节点

MogileFS-Utils-2.19-1.el6.noarch.rpm   #主要是MogileFS的一些管理工具,例如mogadm等。

perl-Perlbal-1.78-1.el6.noarch.rpm

二、在mysql+tracker服务器操作:

1、安装数据库并启动服务

yum install mariadb-server

systemctl start mariadb

2、创建数据库并授权用户

【mysql -uroot -p   也可以不用授权,下面的命令会自动创建数据库和授权用户

>GRANT ALL PRIVILEGES ON modilefs.* TO 'mogile' @'127.0.0.1' IDENTIFIED BY 'mogile' WITH GRANT OPTION;

>flush priveleges;】此步骤可省略

mogdbsetup --dbpass=123456  设置mogile用户密码,此命令会创建数据库mogilefs和授权用户mogile

3、修改mogilefs配置文件并启动服务

①vim /etc/mogilefs/mogilefsd.conf

改用户名密码:

db_user = mogile

db_pass = 123456

监听端口为本机网卡的ip

listen = 172.17.13.136:7001

②vim /etc/mogilefs/mogilefs.conf

trackers = 172.17.13.136:7001 避免每次在命令行执行命令都需要指定--tracker,即以下命令中的--tracker可以省略

③启动服务

/etc/init.d/mogilefsd start   [如果是perl安装,那么启动时需切换到普通用户mogilfs]

4、检查

mogadm --tracker=172.17.13.136:7001 check

三、在storage1和storage2主机上操作:

1、创建工作目录并修改权限

mkdir -p /data/mogdata

chown -R mogilefs.mogilefs /data/mogdata

2、修改配置文件并启动服务

vim /etc/mogilefs/mogstored.conf

工作目录:docroot = /data/mogdata

/etc/init.d/mogstored start 启动服务

四、在mysql+tracker服务器操作:

1、将上面准备的两个节点加入:

mogadm --tracker=172.17.13.136:7001 host add nod1 --ip=172.17.13.134 --port=7500 --status=alive

mogadm --tracker=172.17.13.136:7001 host add nod2 --ip=172.17.13.135 --port=7500 --status=alive

如果不小心写错ip或者状态了,可以使用下面的命令进行修改:

mogadm --tracker=172.17.13.136:7001 host modify nod1 --ip=xxx.xxx.xxx.xxx --status=xxx

2、检查

mogadm --tracker=172.17.13.136:7001 check 或者

mogadm --tracker=172.17.13.136:7001 host list

五、在storeage1及storeage2主机操作:

创建块设备目录并且修改权限

storeage1:

mkdir /data/mogdata/dev1;chown mogilefs.mogilefs -R /data/mogdata/dev1

storeage2:

mkdir /data/mogdata/dev2;chown mogilefs.mogilefs -R /data/mogdata/dev2

六、在mysql+tracker服务器操作:

1、将上面的两个块设备加入:

mogadm --tracker=172.17.13.136:7001 device add nod1 1

mogadm --tracker=172.17.13.136:7001 device add nod2 2

2、查看加入的设备信息

mogadm device list

也可以在数据库中查看信息:

mysql mysql -uroot -p

>use mogilfs;

>select * from device;

>select * from host;

3、添加域:mogadm domain add img  这里添加的是img域

列出域:mogadm domain list

4、在"域"中建"类",并设置最小保存份数,即副本数

mogadm class add img c29 --mindevcount=3 表示在img域中创建c29类,最小副本数为3

七、所有机器上操作:

1、安装perl相关包

yum -y install make gcc unzip perl-DBD-MySQL perl perl-CPAN perl-YAML perl-Time-HiRes

2、下载Sys-Syscall-0.23.tar.gz包,并且实现自动复制

①cd /tmp;wget http://search.cpan.org/CPAN/authors/id/B/BR/BRADFITZ/Sys-Syscall-0.23.tar.gz

②解包:tar xvf Sys-Syscall-0.23.tar.gz

③编译安装:cd Sys-Syscall-0.23/;perl Makefile.PL&&make install

④重启mogilefs服务(stop、start报错无所谓,查看端口已经开启即可):

tracker+mysql服务器操作:

/etc/init.d/mogilefsd stop

/etc/init.d/mogilefsd start

所有机器操作:

/etc/init.d/mogstored stop

/etc/init.d/mogstored start

项目最终实现效果:

在Tracker+mysql服务器操作:上传文件,不指定类就上传至default类

mogupload --domain=img --key=photo [--class=c29] --file=2345_image_file_copy_2.jpg

mogfileinfo --domain=img --key=photo 查询文件

访问以下url都可显示出图片:

http://172.17.13.135:7500/dev2/0/000/000/0000000005.fid

http://172.17.13.134:7500/dev1/0/000/000/0000000005.fid

时间: 2024-08-30 17:02:20

mogilefs-企业级分布式存储应用与实战的相关文章

项目实战9—企业级分布式存储应用与实战MogileFS、FastDFS

企业级分布式存储应用与实战-mogilefs 环境:公司已经有了大量沉淀用户,为了让这些沉淀用户长期使用公司平台,公司决定增加用户粘性,逐步发展基于社交属性的多样化业务模式,决定开展用户讨论区.卖家秀.买家秀.用户试穿短视频等业务,因此,公司新的业务的业务特征将需要海量数据存储,你的领导要求基于开源技术,实现对公司海量存储业务的技术研究和实现,你可以完成任务吗? 总项目流程图,详见 http://www.cnblogs.com/along21/p/7435612.html 实验前准备:配置好yu

Glusterfs构建企业级分布式存储(三)

构建企业级分布式存储 硬件要求 一般选择2U的机型,磁盘STAT盘4T,如果I/O 要求比较高,可以采购SSD固态硬盘. 为了充分保证系统的稳定性和性能,要求所有glusterfs服务器硬件配置尽量一致,尤其是硬盘数量和大小.机器的RAID卡需要带电池,缓存越大,性能越好. 一般情况下,建议做RAID10,如果出于空间要求的考虑,需要做RAID5,建议最好能有1-2块硬盘的热备盘. 系统要求和分区划分 系统要求使用centos 6.x,安装完成后升级到最新版本,安装的时候,不要使用LV,建议/b

企业级业务系统开发实战

通过一个系列讲述一个真实企业的ERP系统开发全过程.其中包括需求分析.设计建模.开发.测试全生命周期过程,其中会详细讲方法论与技术实践.涉及到的方法包括敏捷软件开发.四色原型.领域驱动设计.业务架构.技术架构与具体的EF.WF.EasyUI等技术在项目中的使用. 领域驱动设计案例之领域层框架搭建 摘要: 根据前面对领域驱动设计概念以及一些最佳实践的理解,领域模型是系统最核心的部分,我们还是采用前面销售订单的例子,这个案例系统的核心构建就从领域层开始.领域层框架搭建主要完成两个任务:1.领域模型的

Openvpn技术企业级中级运维实战视频教程

课程目录: openvpn技术企业级中级运维实战(上) 1.01-课前思想必看2.02-VPN概述介绍与图解3.03-VPN的作用介绍与图解4.04-VPN的企业应用分类介绍与图解15.05-VPN的企业应用分类介绍与图解26.06-常见隧道协议介绍-PPTP7.07-常见隧道协议介绍-L2TP8.08-常见隧道协议介绍-IPSEC-SSLVPN9.09-实现vpn功能常见开源产品及实际应用特点介绍10.10-根据企业生产场景需求选择vpn产品及方案建议11.11-openvpn开源vpn产品介

企业级监控软件nagios实战[老男孩教育精品]-限时免费

企业级监控软件nagios实战[老男孩linux精品课程]-限时免费注意:限时全免费,截止7月25日.http://edu.51cto.com/course/course_id-1740.html兼容Centos5.8和6.4,同时也适合red hat linux系列! 北京老男孩培训,全国最负责.最高端.最专业的linux运维实战教育机构!打造中国IT实效教育第一品牌! 交流群 246054962 208160987 145178854(标明51CTO) ├─1老男孩linux培训VIP视频-

项目实战7—Mysql实现企业级数据库主从复制架构实战

Mysql实现企业级数据库主从复制架构实战 环境背景:公司规模已经形成,用户数据已成为公司的核心命脉,一次老王一不小心把数据库文件删除,通过mysqldump备份策略恢复用了两个小时,在这两小时中,公司业务中断,损失100万,老王做出深刻反省,公司也因此对于数据库的性能和可靠性提出更高要求. 要求对数据库进行改造,使其承载力进行提升,故障修复时间减少,有没有能实现的方案呢? Mysql实现数据库主从复制实战架构及其原理 1.实验架构及其原理 数据库高可用架构分为 主从:一主一从,一主多从,一主从

Mysql实现企业级数据库主从复制架构实战

Mysql实现企业级数据库主从复制架构实战

Java从零到企业级电商项目实战

Java从零到企业级电商项目实战网盘地址:https://pan.baidu.com/s/1Ms8tin2fhe9TH_6VOmP-7g 密码:xhaz备用地址(腾讯微云):https://share.weiyun.com/5bpQSby 密码:38pnwv 六大课程亮点 让你拥有自己的在线电商项目学习成本低前后端彻底分离,按需学习前端和后端,让你更专注自己需要的技术 上手速度快手把手,由浅入深,步步为营,新手上手速度快 经验技巧多各种踩坑分享,各种贴心插件,各种开发技巧,倍增开发效率与准确性

Spark 2.x企业级大数据项目实战(实时统计、离线分析和实时ETL)

Spark 2.x企业级大数据项目实战(实时统计.离线分析和实时ETL)全套课程下载:https://pan.baidu.com/s/1mje6bAoLLPrxUIrM-C2VMg 提取码: 9n1x 本门课程来源于一线生产项目, 所有代码都是在现网大数据集群上稳定运行, 拒绝Demo.课程涵盖了离线分析.实时分析绝大部分的场景,通过三个实际生产项目教授如何优雅地集成Hadoop.Spark.HBase.Kafka.Redis.MySQL等相关大数据技术,并实际落地 . 本门课程全程实操,不用担