Mogilefs使用Nginx实现代理访问

MogileFS介绍:

 MogileFS是一个开源的分布式文件存储系统,由LiveJournal旗下的DangaInteracitve公司研发。可支持文件自动备非的功能,提供高可用性和高可扩展性。

MogileFS组件:

 trackers:

  MoglieFS的调度器,是mogileFS的核心,访问入口。

 功能:1、replication:节点之间文件复制

     2、deletion:空间数据删除

     3、queryworker:响应客户端请求

     4、reaper:在存储失败后将文件复制请求重新放到队列中

     5、monitor:检测主机和设备dev的健康和状态

 database: 

  功能:1、保存mogilefs的元数据,一般使用mysql,建议使用冗余方案以保证其可用性

      2、mogilefs有专门组件mogdbsetup,可用于实现初始化数据库

 storage:

  功能:1、mogstored(进程名),一个准备好的mogstored节点,可通过mogadm加入到现有的集群中;

      2、存储节点需要定义"设备"(dev),每个dev都有其唯一的ID号;

 客户端:client

  功能:客户端用于mogilefs建立通信的接口

MogileFS的特点:

  1、工作于应用层

  2、无单点

  3、自动文件复制

  4、传输中立,无线特殊协议(http和nfs)

  5、名称空间

  6、无须RAID,具有比RAID更好的可靠性

  7、不共享任何数据

实验环境:

2.png

 node1: 172.16.2.12 

 node2: 172.16.2.13

 node3:172.16.2.14

 node4:172.16.2.15

所需软件:

3.png

一、安装mogilefs-server

1、安装trakcers

[root@node1 mogilefs]# yum -y install MogileFS-* 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  Perlbal-1.78-1.el6.noarch.rpm

2、数据库用户授权

MariaDB [(none)]> GRANT ALL  ON *.* TO  'root'@'172.16.2.1%' IDENTIFIED BY '123456' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;

3、初始化数据库

[root@node1 ~]# mogdbsetup  --dbhost=172.16.2.12 --dbport=3306 --dbname=mogilefs --dbrootuser=root --dbrootpass=123456 --dbuser=mogile --dbpass=mogpass --type=MySQL --yes
相关选择解释:
 --dbhost: mysql服务器地址
 --dbport:mysql服务器的监听端口
 --dbname: 创建用于mogilefs的数据的名称
 --dbrootuser:root用户
 --dbrootpass:root用户的密码
 --dbuser:新创建的mogilefs数据库的管理用户
 --dbpass:新创建的mogilefs的数据的管理用户密码
 --type:指明数据库类型为mysql
 --yes:自动回答yes

4、修改mogilefs的配置文件

[root@node1 mogilefs]# vim  /etc/mogilefs/mogilefsd.conf 
# Enable daemon mode to work in background and use syslog
daemonize = 1  \\以独立守护进行运行
# Where to store the pid of the daemon (must be the same in the init script)
pidfile = /var/run/mogilefsd/mogilefsd.pid  \\pid文件存放路径
# Database connection information
db_dsn = DBI:mysql:mogilefs:host=172.16.2.12  \\数据库地址
db_user = mogile   \\mogilefs所授权的用户
db_pass = mogpass   \\mogilfs所授权的用户密码
# IP:PORT to listen on for mogilefs client requests
listen = 0.0.0.0:7001   \\修改为监听在所有地址
# Optional, if you don't define the port above.
conf_port = 7001    \\定义监听端口,默认为7001
# Number of query workers to start by default.
query_jobs = 10   \\默认启动10个查询线程
# Number of delete workers to start by default.
delete_jobs = 1   \\默认求启动1个删除线程
# Number of replicate workers to start by default.
replicate_jobs = 5  \\默认启动5个复制线程
# Number of reaper workers to start by default.
# (you don't usually need to increase this)
reaper_jobs = 1  \\响应客户端请求,在磁盘失败后将文件复制请求重新放到队列中
# Number of fsck workers to start by default.
# (these can cause a lot of load when fsck'ing)
#fsck_jobs = 1  \\检查磁盘设备是否损坏,默认没有启用
# Minimum amount of space to reserve in megabytes
# default: 100  \\默认保留100M空间
# Consider setting this to be larger than the largest file you
# would normally be uploading.
#min_free_space = 200      \\最小空闲空间200M
# Number of seconds to wait for a storage node to respond.
# default: 2 \\等待存储节点响应的时间,默认为2s
# Keep this low, so busy storage nodes are quickly ignored.
#node_timeout = 2 \\等待节点超时时长
# Number of seconds to wait to connect to a storage node.
# default: 2 \\连接存储节点的超时时长
# Keep this low so overloaded nodes get skipped.
#conn_timeout = 2  
# Allow replication to use the secondary node get port,
# if you have apache or similar configured for GET's
#repl_use_get_port = 1

5、启动mogilefs

[root@node1 ~]# /etc/init.d/mogilefsd start

6、查看监听端口:默认为7001

[root@node1 ~]# netstat -tpln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      977/sshd            
tcp        0      0 0.0.0.0:7001                0.0.0.0:*                   LISTEN      4773/mogilefsd

二、安装配置mogilefs-client

1、安装mogilefs-client

[root@node2 mogilefs]# yum -y install MogileFS-* Perlbal-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  perl-IO-AIO

2、各存储节点准备好存储块设备,然后分区格式化

[root@node2 ~]# fdisk  -l | grep "/dev/sdb1"
/dev/sdb1               1        1306    10490413+  83  Linux
[root@node3 ~]#  fdisk  -l | grep "/dev/sdb1"
/dev/sdb1               1        1306    10490413+  83  Linux

3、创建挂载点

[root@node2 mogilefs]# mkdir /mogilefs;chown -R mogilefs.mogilefs /mogilefs

4、设置自动挂载设备

[root@node2 mogilefs]# cat /etc/fstab  | grep "^/dev/sdb1"
/dev/sdb1              /mogilefs                ext4    defaults        0 0
[root@node2 mogilefs]# mount -a

5、修改mogstored的配置文件

[root@node2 mogilefs]# cat  /etc/mogilefs/mogstored.conf 
maxconns = 10000   \\定义最大连接数
httplisten = 0.0.0.0:7500 \\定义httpd监听端口
mgmtlisten = 0.0.0.0:7501  \\定义mgm的监听端口
docroot = /mogilefs  \\修改为存储设备的挂载点

6、启动mogstorage服务

[root@node2 mogilefs]# netstat -tpln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name          
tcp        0      0 0.0.0.0:7500                0.0.0.0:*                   LISTEN      1512/mogstored      
tcp        0      0 0.0.0.0:7501                0.0.0.0:*                   LISTEN      1512/mogstored

7、配置node3节点

mode3与node2节点的配置一样,这里就不在描述了

三、在trackers节点添加存储节点

1、在存储节点创建共享块设备

[root@node2 ~]# mkdir /mogilefs/dev1;chown -R  mogilefs.mogilefs /mogilefs/
[root@node3 ~]#  mkdir /mogilefs/dev2;chown -R  mogilefs.mogilefs /mogilefs/

2、将存储节点添加到trackers

[root@node1 ~]# mogadm --trackers=172.16.2.12:7001 host add node2.linux.com --ip=172.16.2.13 --status=alive
[root@node1 ~]# mogadm --trackers=172.16.2.12:7001 host add node3.linux.com --ip=172.16.2.14 --status=alive

3、查看添加的主机状态

[root@node1 ~]# mogadm --trackers=172.16.2.12:7001  host list
node2.linux.com [1]: alive
  IP:       172.16.2.13:7500

node3.linux.com [2]: alive
  IP:       172.16.2.14:7500

4、添加块设备到trackers

[root@node1 ~]# mogadm --trackers=172.16.2.12:7001  device  add node2.linux.com 1
[root@node1 ~]# mogadm --trackers=172.16.2.12:7001  device  add node3.linux.com 2 
注意:1或者2要与存储节点创建的dev#(dev1,dev2)一致

5、查看添加的块设备信息

[root@node1 ~]# mogadm --trackers=172.16.2.12:7001  device  list
node2.linux.com [1]: alive
                    used(G)    free(G)   total(G)  weight(%)
   dev1:   alive      0.021      9.200      9.222        100

node3.linux.com [2]: alive
                    used(G)    free(G)   total(G)  weight(%)
   dev2:   alive      2.162     32.931     35.093        100

6、创建domain

[root@node1 ~]# mogadm --trackers=172.16.2.12:7001  domain add mylinux  \\新添加mylinxu域
[root@node1 ~]# mogadm --trackers=172.16.2.12:7001  domain list  \\查看域信息
 domain               class                mindevcount   replpolicy   hashtype
-------------------- -------------------- ------------- ------------ -------
 mylinux              default                   2        MultipleHosts() NONE

7、添加class

[root@node1 ~]# mogadm --trackers=172.16.2.12:7001   class add  mylinux  linux  \\在mylinux中添加linux 类
[root@node1 ~]# mogadm --trackers=172.16.2.12:7001   class list \\查看类信息
 domain               class                mindevcount   replpolicy   hashtype
-------------------- -------------------- ------------- ------------ -------
 mylinux              default                   2        MultipleHosts() NONE   
 mylinux              linux                     2        MultipleHosts() NONE

8、上传图片到存储节点

[root@node1 ~]# mogupload --trackers=172.16.2.12:7001  --domain=mylinux --key='/1.jpg' --file='./1.jpg'

9、查看图片上传之后的信息

[root@node1 ~]# mogfileinfo --trackers=172.16.2.12:7001  --domain=mylinux --key='/1.jpg' 
- file: /1.jpg
     class:              default
  devcount:                    2
    domain:              mylinux
       fid:                    2
       key:               /1.jpg
    length:                13224
 - http://172.16.2.13:7500/dev1/0/000/000/0000000002.fid  
 - http://172.16.2.13:7500/dev1/0/000/000/0000000002.fid
 \\在浏览器中访问上面路径可以浏览到上传的图

访问测试:

21.png

四、编译配置Nginx

1、编译安装Nginx

[root@node4 mogile]# tar xf nginx-1.8.0.tar.gz -C /usr/src
[root@node4 mogile]# tar xf nginx_mogilefs_module-1.0.4.tar.gz  -C /usr/src
[root@node4 src]# cd nginx-1.8.0/
[root@node4 nginx-1.8.0]# useradd  nginx
[root@node4 nginx-1.8.0]#./configure \
  --prefix=/usr \
  --sbin-path=/usr/sbin/nginx \
  --conf-path=/etc/nginx/nginx.conf \
  --error-log-path=/var/log/nginx/error.log \
  --http-log-path=/var/log/nginx/access.log \
  --pid-path=/var/run/nginx/nginx.pid  \
  --lock-path=/var/lock/nginx.lock \
  --user=nginx \
  --group=nginx \
  --with-http_ssl_module \
  --with-http_flv_module \
  --with-http_stub_status_module \
  --with-http_gzip_static_module \
  --http-client-body-temp-path=/var/tmp/nginx/client/ \
  --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
  --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
  --http-scgi-temp-path=/var/tmp/nginx/scgi \
  --with-pcre \
  --with-debug \
  --add-module=..//nginx_mogilefs_module-1.0.4/
  [root@node4 nginx-1.8.0]# make;make install

2、nginx启动脚本:

Mogilefs使用Nginx实现代理访问nginx.zip

3、编辑nginx配置文件,使其支持mogilefs

[root@node4 ~]# vim /etc/nginx/nginx.conf
   location /image {
          mogilefs_tracker 172.16.2.12:7001;
          mogilefs_domain  mylinux;
          mogilefs_pass {
            proxy_pass $mogilefs_path;
            proxy_hide_header Content-Type;
            proxy_buffering off;
          }
         }

4、测试nginx配置语法,并启动nginx

[root@node4 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@node4 ~]# /etc/init.d/nginx start

5、打开浏览器访问测试:

22.png

知识扩展:

MogileFS-Utils相关命令介绍:
mogupload:用于上传文件的命令
mogfileinfo:用于查看上传文件的信息
mogadm管理命令:
    check:检查主机信息
    stats:查看主机信息
    host:添加、修改trackers中的主机
    device:添加、修改存储节点
    domain:添加、修改域信息
    class:填写、修改类等信息
    slave:从节点的信息
    fsck:检查修复提供的存储节点
    rebalance:调整节点之间存储不平衡等信息
    setting:mogilefs的设置信息

nginx的mogilefs的第三方模块使用地址:

http://www.grid.net.ru/nginx/mogilefs.en.html

原创文章,作者:马行空,如若转载,请注明出处:http://www.178linux.com/6812

(0)
马行空马行空
上一篇 2015-08-06 21:59
下一篇 2015-08-11 14:50

相关推荐

  • 11.网络解析和网络加密

    1、详细描述一次加密通讯的过程,结合图示最佳。 加密过程 1.使用单向加密算法,提取A的文件的特征码。 2.使用A的私钥对提取出来的特征码进行加密,把加密后的特征码附加在A的文件的后面。 3.使用对称加密对刚刚的A的文件和加密后的特征码进行加密,生成对称加密密钥 4.使用B的公钥对第3步骤的对称加密的密钥进行加密,加密后附加在文件的后面。 解密过程 1.使用…

    2017-09-20
  • 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)

    设计模式 ( 十八 ) 策略模式Strategy(对象行为型) 1.概述         在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算…

    Linux干货 2015-07-28
  • 更改CentOS7 默认网卡eno16777736为eth0

        安装完CentOS7,它的默认网卡名为eno16777736 看着不爽!习惯了eth0的命名方式。 编辑 /etc/sysconfig/grub 在“GRUB_CMDLINE_LINUX”里添加net.ifnames=0 biosdevname=0 保存退出 如图: 然后执行 grub2-mkconfig -o…

    系统运维 2015-12-19
  • Unix发展与现状

    Unix 简史 1965年时,贝尔实验室(Bell Labs)加入一项由奇异电子(General Electric)和麻省理工学院(MIT)合作的计划;该计划要建立一套多使用者、多任务、多层次(multi-user、multi- processor、multi-level)的MULTICS操作系统。直到1969年,因MULTICS计划的工作进度太慢,该计划就…

    Linux干货 2015-09-22
  • 虚拟机配置网卡别名及centos 6 之bonding

    1、虚拟网卡实现一个网卡多个地址(测试环境为虚拟机),此处使用eth1网卡,并且将eth1的IP设置成固定的,其实还可以设置成DHCP自动获取,这就是Linux强大之处。但是由eth1虚拟出来的两张网卡不能使用DHCP自动获取。具体步骤如下(设置的IP看个人喜欢) [root@localhost network-scripts]# cat…

    Linux干货 2016-09-05
  • grep与正则表达式

    一、grep        grep常用于文本搜索。通过自定义的模式(pattern),筛选出使用者需要的文本内容。除了有grep,还有egrep和fgrep。其中egrep = grep  –E,而fgrep则是不支持正则表达式。     &nbs…

    2017-07-29