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
下一篇 2015-08-11

相关推荐

  • RAID特性和常见级别

    简介:    RAID全称为独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、 容量巨大的硬盘。RAID通常被用在服务器电脑上,使用完全相同的硬盘组成一个逻辑扇区,因此操作系统只会把它当做一个硬盘。 R…

    Linux干货 2016-02-14
  • 马哥教育网络20期+第五周课程练习

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@localhost ~]# grep "^[[:space:]]\+" /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又…

    Linux干货 2016-07-07
  • sed和awk的用例及pam安全措施-第十五周

    总结sed和awk的详细用法; sed用法 sed(Stream EDitor)是一款流编辑器,用来对文本进行过滤与替换操作。其原理是:通过文件或管道读取文件内容,但是sed默认并不直接修改源文件,而是一次仅读取文件的一行至模式空间(pattern space)根据sed指令进行编辑并输出结果后清除模式空间,即所有的操作都是在模式空间中进行的。 语法格式 s…

    2017-06-05
  • 学习一个星期的沿途体会

    人生处处都是坑,只看跳的深不深。下面就来介绍介绍我跳的坑吧!当然我可没打算在此长眠 既然选择了Liunx,那对它的历史就得了解清楚。就如同我们结婚,既然选择了对方,那就要了解他的过去,包容他的未来。           Linux操作系统是一个叫Linus Torvalds的大学生在1991年开发而来。当然,…

    2017-07-16
  • Linux文本处理工具

    知识框架图 学习笔记 查看文本 查看文本内容 cat -A:显示控制符 -E:显示行结束符$ -n:打印行号,显示空行 -b:打印行号,空行不编号 -s:压缩连续空白行 tac:反向查看文件内容 rev:文本每行倒序显示 分页查看 more less 查看文件头尾内容 head -c:前n个字节 -n:前n行 tail -c -n -f:跟踪显示文件变化,常…

    2018-03-17
  • 【超全整理】《Linux云计算从入门到精通》系列实战笔记全放送

          为了方便Linux云计算爱好者的学习查看,马哥Linx云计算团队特别整理了《Linux云计算从入门到精通》年度重磅大放送,囊括了整个学习过程的学习精华,内容全部由马哥Linux云计算学员撰写,欢迎大家支持!!!       详情请看:  一、Linux运维基础实战入门 从Linux0基础入门开始,全面讲解作为新手如何学习Linux,以及学习方法和…

    2017-09-14