mogilefs详解

  1. 云栖社区>
  2. 博客>
  3. 正文

mogilefs详解

技术小牛人 2017-11-22 20:02:00 浏览520
展开阅读全文

分布式:

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

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

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

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

分布式存储:只能通过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


网友评论

登录后评论
0/500
评论
技术小牛人
+ 关注