Chinaunix首页 | 论坛 | 博客
  • 博客访问: 91966
  • 博文数量: 34
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 350
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-04 22:47
文章分类

全部博文(34)

文章存档

2017年(34)

我的朋友

分类: 服务器与存储

2017-04-22 11:10:17

1、多线程与进程的执行模式:
           互不通信的多线模式
           基于共享容器协同的多线程模式
           通过事件协同的多线程模型
           A:1-->2-->3
           B: 1-->2-->3

            输入设备的变化
            控制器的变化:
                    透明代理
                    旁路模式
                    名称服务
                    规则服务器
            运算器的变化:
                    
           存储器的变化:
                     代理的模型
                     名称服务
                     规则服务器
                     Master
                    
            分布式系统的难点:
                     缺乏全局时钟
                     面对故障的独立性
                     处理单点故障
                            冗余
                            降低单点故障的影响范围
                     事务的挑战
                            ACID
                            2PC(两段式提交)、最终一致、BASE、CAP、Paxos
                            
          分布式事务的模型及规范
                    X/Open: XA
                    DTP:Distributed Transaction Processing Reference Model
                            定义了三个组件:
                                    AP:Application Program, 应用程序
                                    RM:Resource Manager, 资源管理器
                                    TM:Transaction Manager,事务管理器
                    
两段式提交
CAP
BASE
       BA:Basically Available,基本可用
       S:Soft state,软状态,接受一段时间内的状态不同步
       E:Eventually consistent:最终一致性

Paxos:
        比2PC提交更轻量级的分布式事务的协调方式
      
集群内数据一致性算法实施过程案例:
       Quorum,Vector Clock

       Quorum:
                 N: 数据复制的节点量
                 R: 成功读操作所依赖的最少节点数
                 w: 成功写操作所依赖的最少节点数

                 W+R>N: 强一致性:
                 假设,W=N, R=1,       
                 W+R<=N:可以保证最终一致性
                 
分布式应用:
            分布式计算
                   MapReduce:分布式运算框架
                             MapReduce
            分布式存储
                  GFS, Google File System                
                         HDFS:  
            BigTable:列式数据库
                  HBase        
                         
                   NoSQL:
                    
                  HADOOP:
                           
分布式存储
             不能mount,基于API进行存取
分布式文件系统      
             mount, VFS
             
             GFS
             HDFS:适合存储少量大文件:
              TFS:在名称节点上将元数据存储与关系数据库中,文件数量不再受限于名称节点的内存空间;可以存储海量小文件:
              Lustre:企业级应用,重量级:
              GlusterFS:
              MooseFS:FUSE
              Mogilefs:使用Perl语言,FastDFS

              Perlbal:
             
MogileFS的特性:
             应用层:
             无单点:(tracker,mogstore,database(MySQL))
             自动文件复制:    复制的最下单位不是文件,而是class:
             传输中立,无特殊协议:可以通过NFS或HTTP进行通信:
              简单的命名空间:
             不共享任何数据:
                
Tracker:
              MogileFS的核心,是一个调度器:服务进程为mogilefsd;职责,删除、复制、监控、查询等:

Database:
             
mogstored:数据存储的位置,通常是一个HTTP(WebDAV)服务器,用来数据的创建、删除、获取;

Perl
  
安装MogileFS的模块

cpan

App::cpanminus
MogileFS::Server
MogileFS::Utils
IO::AIO
IO::WrapTie
Danga::Socket

所有的perl程序可以编译运行:
# perl Makefile.PL
# make
# make test
# make install

一、安装MogileFS

Master:192.168.0.113

node1:192.168.0.110 (node1.shamereedwine.com)

node2:192.168.0.111(node2.shamereedwine.com)

node3:192.168.0.112(node3.shamereedwine.com)
 
需要先安装mysql

1、这里安装的是2.46的版本

需要安装下面所示的几个包:
MogileFS-Server-2.46-2.el6.noarch.rpm
MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm
MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm
MogileFS-Utils-2.19-1.el6.noarch.rpm

下面的几个包时非必须的,当然能装上更好
Perlbal-1.78-1.el6.noarch.rpm
Perlbal-doc-1.78-1.el6.noarch.rpm
perl-MogileFS-Client-1.14-1.el6.noarch.rpm
perl-Net-Netmask-1.9015-8.el6.noarch.rpm
perl-Perlbal-1.78-1.el6.noarch.rpm

2、yum install *.rpm

=================================================================================================================================================================================
 Package                                      Arch                      Version                            Repository                                                       Size
=================================================================================================================================================================================
Installing:
 MogileFS-Server                              noarch                    2.46-2.el6                         /MogileFS-Server-2.46-2.el6.noarch                              0.0  
 MogileFS-Server-mogilefsd                    noarch                    2.46-2.el6                         /MogileFS-Server-mogilefsd-2.46-2.el6.noarch                    523 k
 MogileFS-Server-mogstored                    noarch                    2.46-2.el6                         /MogileFS-Server-mogstored-2.46-2.el6.noarch                     53 k
 MogileFS-Utils                               noarch                    2.19-1.el6                         /MogileFS-Utils-2.19-1.el6.noarch                               170 k
 Perlbal                                      noarch                    1.78-1.el6                         /Perlbal-1.78-1.el6.noarch                                      4.4 k
 Perlbal-doc                                  noarch                    1.78-1.el6                         /Perlbal-doc-1.78-1.el6.noarch                                  0.0  
 perl-MogileFS-Client                         noarch                    1.14-1.el6                         /perl-MogileFS-Client-1.14-1.el6.noarch                          79 k
 perl-Net-Netmask                             noarch                    1.9015-8.el6                       /perl-Net-Netmask-1.9015-8.el6.noarch                            55 k
 perl-Perlbal                                 noarch                    1.78-1.el6                         /perl-Perlbal-1.78-1.el6.noarch                                 666 k
Installing for dependencies:
 perl-BSD-Resource                            x86_64                    1.29.03-3.el6                      base                                                             35 k
 perl-DBD-MySQL                               x86_64                    4.013-3.el6                        base                                                            134 k
 perl-Danga-Socket                            noarch                    1.61-5.el6                         epel                                                             28 k
 perl-IO-stringy                              noarch                    2.110-10.1.el6                     base                                                             68 k
 perl-Sys-Syscall                             noarch                    0.23-1.el6                         epel                                                             14 k

3、安装好之后,修改主配置文件
[root@localhost ~]# vim /etc/mogilefs/mogilefsd.conf
daemonize = 1
pidfile = /var/run/mogilefsd/mogilefsd.pid
db_dsn = DBI:mysql:mogilefs:host=192.168.0.113 # mogilefs指定的数据库名,host数据库的IP地址
db_user = moguser # 指定登录mogilefs所使用的用户名
db_pass = mogpass # 指定mogilefs所使用的密码
listen = 0.0.0.0:7001 # 0.0.0.0表示监听所有地址
conf_port = 7001
query_jobs = 10
delete_jobs = 1
replicate_jobs = 5
reaper_jobs = 1

[root@localhost mogilefs]# vim mogstored.conf
maxconns = 10000
httplisten = 0.0.0.0:7500
mgmtlisten = 0.0.0.0:7501
docroot = /data/mogdata # 把该项指定为一个特定的目录,以存储数据,最好是一个独立分区

[root@localhost mogilefs]# mkdir -pv /data/mogdata # 创建修改的docroot目录

[root@localhost mogilefs]# chown -R mogilefs.mogilefs /data/mogdata/ # 修改属主和属组

记得修改进程文件目录的权限

  [root@localhost mogilefsd]# chown -R     mogilefs:mogilefs  /var/run/mogilefsd
            
4、设置数据库连接mogfile
mysql> GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'huaxia';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL ON mogilefs.* TO 'moguser'@'192.168.%.%' IDENTIFIED BY 'mogpass';
Query OK, 0 rows affected (0.01 sec)

5、使用mogdbsetup向导创建数据库
[root@localhost ~]# mogdbsetup --dbhost=192.168.0.113 --dbport=3306 --dbname=mogilefs --dbrootuser=root --dbrootpass=huaxia --dbuser=moguser --dbpass=mogpass --yes

6、启动mogilefsd服务
[root@localhost mogilefsd]# service mogilefsd start
Starting mogilefsd                                         [确定]

7、查看mogilefsd的监听状态,可以看到7001端口已经处于监听状态
[root@localhost mogilefsd]# ss -tnlp|grep mogilefsd
LISTEN     0      128                       *:7001                     *:*      users:(("mogilefsd",19001,6))

8、把Mogilefs的几个安装包都传到node1、noed2、node3上,并配置使用Mogilefs

(1)、接着安装Mogilefs, 创建数据存放目录,然后修改各自节点上的配置文件mogstored.conf
  
注意:需要安装 perl-IO-AIO 这个包

(2)、创建/data/mogdata这个数据目录
[root@localhost ~]# mkdir -pv /data/mogdata
mkdir: 已创建目录 "/data"
mkdir: 已创建目录 "/data/mogdata"

(3)、修改mogstored的配置文件
[root@localhost ~]# cat /etc/mogilefs/mogstored.conf
maxconns = 10000
httplisten = 0.0.0.0:7500
mgmtlisten = 0.0.0.0:7501
docroot = /data/mogdata

(4)、修改数据目录/data/mogdata/的属主和属组
[root@localhost ~]# chown -R mogilefs.mogilefs /data/mogdata/

(5)、三个node节点上启动mogstored服务
[root@localhost init.d]# service mogstored start
Starting mogstored                                         [确定]

(6)、查看服务的监听情况
[root@localhost init.d]# ss -tnlp|grep mogstored
LISTEN     0      128                       *:7500                     *:*      users:(("mogstored",23710,4))
LISTEN     0      128                       *:7501                     *:*      users:(("mogstored",23710,9))

(7)、添加主机
[root@localhost ~]# mogadm --trackers=192.168.0.113:7001 host add node1.shamereedwine.com --ip=192.168.0.110 --status=alive
             
(8)、添加设备
[root@localhost ~]# mogadm --trackers=192.168.0.113:7001 device add node1.shamereedwine.com 002

(9)、查看主机节点
[root@localhost ~]# mogadm --trackers=192.168.0.113:7001 host list
node1.shamereedwine.com [1]: alive
IP:       192.168.0.110:7500

(10)、查看设备节点
[root@localhost ~]# mogadm --trackers=192.168.0.113:7001 device list
node1.shamereedwine.com [1]: alive
                    used(G)    free(G)   total(G)  weight(%)
dev2:   alive      0.000      0.000      0.000        100

(11)、进入到node1的目录下,创建dev2目录文件,并赋予权限
[root@localhost mogdata]# mkdir dev2

[root@localhost mogdata]# chown -R mogilefs.mogilefs dev2/

(12)、再查看设备节点的磁盘容量的信息
[root@localhost ~]# mogadm --trackers=192.168.0.113:7001 device list
node1.shamereedwine.com [1]: alive
                    used(G)    free(G)   total(G)  weight(%)
dev2:   alive      6.619      1.592      8.211        100

(13)、添加node2节点
[root@localhost ~]# mogadm --trackers=192.168.0.113:7001 host add node2.shamereedwine.com --ip=192.168.0.111 --status=alive

(14)、添加设备node2
[root@localhost ~]# mogadm --trackers=192.168.0.113:7001 device add node2.shamereedwine.com 001

(15)、创建一个名为files的domain
[root@localhost ~]# mogadm --trackers=192.168.0.113:7001 domain add files
[root@localhost ~]# mogadm --trackers=192.168.0.113:7001 domain list
 domain               class                mindevcount   replpolicy   hashtype
-------------------- -------------------- ------------- ------------ -------
 files                default                   2        MultipleHosts() NONE

(16)、上传一个fstab.html的文件
[root@localhost ~]# mogupload --trackers=192.168.0.113:7001 --domain=files --key='/fstab.html' --file='/etc/fstab'

(17)、查看fstab.html文件的访问路径
[root@localhost ~]# mogfileinfo --trackers=192.168.0.113:7001 --domain=files --key='/fstab.html'
- file: /fstab.html
     class:              default
  devcount:                    2
    domain:                files
       fid:                    2
       key:          /fstab.html
    length:                  805
 - http://192.168.0.111:7500/dev1/0/000/000/0000000002.fid
 - http://192.168.0.112:7500/dev3/0/000/000/0000000002.fid



(18)、创建一个Domain专用于存放文件
[root@localhost ~]# mogadm --trackers=192.168.0.113:7001 domain add images
[root@localhost ~]# mogadm --trackers=192.168.0.113:7001 domain list
 domain               class                mindevcount   replpolicy   hashtype
-------------------- -------------------- ------------- ------------ -------
 files                default                   2        MultipleHosts() NONE   

 images               default                   2        MultipleHosts() NONE

(19)、上传图片并查看图片信息
[root@localhost backgrounds]# mogfileinfo --trackers=192.168.0.113:7001 --domain=images --key='/logo.png'
- file: /logo.png
     class:              default
  devcount:                    2
    domain:               images
       fid:                    3
       key:            /logo.png
    length:              1470177
 - http://192.168.0.110:7500/dev2/0/000/000/0000000003.fid
 - http://192.168.0.112:7500/dev3/0/000/000/0000000003.fid

(20)、使用mogdelete 删除文件
[root@localhost ~]# mogdelete --trackers=192.168.0.113 --domain=images --key='/logo.png'


二、设置Mogilefs集群

localhost                             192.168.0.113
node1.shamereedwine.com  192.168.0.110
node2.shamereedwine.com  192.168.0.111
node3.shamereedwine.com  192.168.0.112

1、node2修改配置文件mogilefsd.conf

[root@localhost mogilefs]# grep -v '^#' mogilefsd.conf
daemonize = 1
pidfile = /var/run/mogilefsd/mogilefsd.pid
db_dsn = DBI:mysql:mogdb:host=192.168.0.113
db_user = moguser
db_pass = mogpass
listen = 0.0.0.0:7001
conf_port = 7001
query_jobs = 10
delete_jobs = 1
replicate_jobs = 5
reaper_jobs = 1

2、在localhost机器上做数据库访问授权

mysql> GRANT ALL ON mogdb.* TO 'moguser'@'%' IDENTIFIED BY 'mogpass';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

3、创建授权访问的数据库

[root@localhost ~]# mogdbsetup --dbhost=192.168.0.113 --dbport=3306 --dbname=mogdb --dbrootuser=root --dbrootpass=huaxia --dbuser=moguser --dbpass=mogpass --yes

4、node2启动mogilefsd服务

[root@localhost ~]# service mogilefsd start
Starting mogilefsd                                         [确定]

5、查看mogilefsd监听的端口

[root@localhost ~]# ss -tnlp|grep mogstored
LISTEN     0      128                       *:7500                     *:*      users:(("mogstored",23710,4))
LISTEN     0      128                       *:7501                     *:*      users:(("mogstored",23710,9))

6、node2创建数据存储目录

[root@localhost dev1]# mkdir /data/mogdata/dev1
[root@localhost dev1]# chown -R mogilefs.mogilefs /data/mogdata/dev1

7、修改主存储的配置文件

[root@localhost mogdata]# vim /etc/mogilefs/mogstored.conf
docroot = /data/mogdata

8、查看mogfile监听的端口

[root@localhost mogdata]# ss -tnlp|grep mogstored
LISTEN     0      128                       *:7500                     *:*      users:(("mogstored",23710,4))
LISTEN     0      128                       *:7501                     *:*      users:(("mogstored",23710,9))

9、加入本地主机






















 
阅读(1774) | 评论(0) | 转发(0) |
0

上一篇:kvm安装及使用

下一篇:nfs

给主人留下些什么吧!~~