mogilefs详解

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介:

分布式:

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

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

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

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

分布式存储:只能通过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下线了,该节点上的副本会由其他节点重新提供,保证副本的个数不少于指定的值



安装配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
环境准备:
     [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
1
2
3
4
5
6
安装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  - / usr / src /
     cd  / usr / src / MogileFS - Server - 2.44
     perl Makefile.PL       #检查环境  
     make && make install      #编译  安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
配置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 =        #初始用户的密码,默认为空


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
配置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  - "mogilefsd -c /etc/mogilefs/mogilefsd.conf --daemon"   
         #启动服务
     ss  - tnl    | grep  7001            #查看服务是否启动  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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  - "mogstored -c /etc/mogilefs/mogstored.conf --daemon"
             #启动服务
     ss  - ntl | grep  7500 
     ss  - ntl | grep  7501
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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


配置实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
实验环境: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  - - g nginx nginx
     yum  - y install pcre - devel
     tar zxvf nginx - 1.8 . 1.tar .gz  - / usr / src /       
     tar zxvf nginx_mogilefs_module - 1.0 . 4.tar .gz  - / 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 继续访问,查看访问是否正常      


本文转自  红尘世间  51CTO博客,原文链接:http://blog.51cto.com/hongchen99/1923213


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
11月前
|
人工智能 API 开发者
通过宏实现Word接入DeepSeek
本文介绍如何在Microsoft Word中通过宏接入DeepSeek,实现自动化文本处理。首先确保具备Word 2016及以上版本、DeepSeek API密钥和VBA基础。接着,从豆包平台获取API密钥及模型ID,并在Word中启用开发者选项和宏功能。最后,编写VBA宏代码调用DeepSeek API,完成文本分析与处理。
799 0
|
8月前
|
数据采集 Web App开发 JavaScript
基于Selenium的Python爬虫抓取动态App图片
基于Selenium的Python爬虫抓取动态App图片
610 68
|
机器学习/深度学习 编解码 缓存
阿里云服务器计算型c5/c6/c7/c8y和通用型g5/g6/g7/g8y四代实例对比与选择参考
阿里云服务器的所有实例规格中,计算型和通用型是用户选择最多的,计算型实例主要适用于网站应用、批量计算、视频编码等各种类型和规模的企业级应用。通用型实例则主要适用于中小型数据库系统、缓存、搜索集群等各种类型的企业级应用等场景。阿里云服务器的计算型和通用型实例也经过了多代升级,阿里云不断推出新一代的云服务器产品以满足不同用户的需求。本文将详细对比阿里云计算型c5、c6、c7、c8y以及通用型g5、g6、g7、g8y四代云服务器实例,帮助用户更好地了解这些产品的特性和适用场景,以供选择和参考。
阿里云服务器计算型c5/c6/c7/c8y和通用型g5/g6/g7/g8y四代实例对比与选择参考
|
传感器 数据采集 机器学习/深度学习
利用Auto-Encoder技术去除传感器噪声,提高预测准确性
利用Auto-Encoder技术去除传感器噪声,提高预测准确性
|
存储 应用服务中间件 调度
国产操作系统---麒麟安装FastDFS
国产操作系统---麒麟安装FastDFS
508 0
|
关系型数据库 MySQL Linux
centos7 安装与卸载 Mysql 5.7.27(详细完整教程)
centos7 安装与卸载 Mysql 5.7.27(详细完整教程)
centos7 安装与卸载 Mysql 5.7.27(详细完整教程)
GitHub标星10k!基于Alibaba规范的vue+分布式高耦合后台管理系统
一个基于vue3-element-admin开源项目重写Vue3 + TS + ElementPlus,采用插件化 + 扩展包形式 结构解耦 易于扩展的后台管理系统 本框架与RuoYi的功能差异
|
前端开发 黑灰产治理 索引
selenium-元素定位+下拉框代码实战
selenium-元素定位+下拉框代码实战
368 0
|
Web App开发 自然语言处理 IDE
自动化测试之 selenium 的安装以及 selenium IDE 录制自动化脚本的用法
1. 什么是自动化测试 1)单元测试 2)接口自动化 3)UI 自动化 2. Selenium 介绍 1)Selenium IDE 2)Webdriver 3)Selenium Grid 3. 如何使用 Selenium IDE 录制脚本 4. 在 python 环境中安装 Selenium 框架
1431 0

热门文章

最新文章