Linux之使用MogileFS分布式文件系统并使用nginx实现反向代理

2 篇文章 0 订阅
1 篇文章 0 订阅

MogileFS是一套高效的文件自动备份组件,由Six Apart开发,广泛应用在包括LiveJournal等web2.0站点上。
MogileFS的特性:
工作在应用层,无单点,自动文件复制(复制的最小单位是class,而不是文件),传输中立且使用nfs或者http协议进行传输。
MogileFS的结构组成:
这里写图片描述
tracker:是mogilefs的核心,是一个调度器,通过数据库来保存元信息,包括daemon,class,host等信息,主要职责:监控后端mogstore节点,并指示store节点完成数据的添加,删除,查询,及节点之间的复制.
mogstore:实际数据的存储位置,通常伪一个http服务器.
database:用来保存节点的全局信息.

1.安装MogileFS
a.下载MogileFS
MogileFS-Server:https://github.com/mogilefs/MogileFS-Server
MogileFS-Utils:https://github.com/mogilefs/MogileFS-Utils
perl-MogileFS-Client:https://github.com/mogilefs/perl-MogileFS-Client
b.安装:
将文件解压并进入文件内

    >make Makefile.PL
    >make && make install
    >yum install perl-IO-AIO

2.配置文件讲解

*为trakcer配置数据库,并在数据库中创建表,事先在数据库中创建好trakcer访问数据库的用户和密码并给权限。
mysql> grant all on mogilefs.* to "moguser"@"172.16.113.*" IDENTIFIED by "mogpasswd";
Query OK, 0 rows affected (0.01 sec)
mysql> FLUSH   PRIVILEGES; 
Query OK, 0 rows affected (0.00 sec)
[root@Master mogilefs]mogdbsetup --dbhost=172.16.113.157 --dbport=3306  --dbname=mogilefs  --dbrootuser=root  --dbrootpass=kairui00544ok --dbuser=moguser --dbpass=mogpasswd --yes --type=mysql
参数解答:
    dbhost:指定mysql服务器的地址
    dbport:指定端口默认为mysql
    dbrootuser:指定root
    dbuser:tracker使用mysql的普通用户,事先要创建好此用户并授权
    dbpass:普通用户的密码
    type:指定数据库的类型,默认问mysql

[root@Master mogilefs]# ll /etc/mogilefs/
总用量 8
-rw-r--r--. 1 root root 1463 5月   9 21:35 mogilefsd.conf
-rw-r--r--. 1 root root   92 8月  19 2013 mogstored.conf
*mogilefsd.conf为tracker进程的配置文件
    daemonize = 1    **后台运行**
    pidfile = /var/run/mogilefsd/mogilefsd.pid **mogfiled进程运行时使用的pid文件**
    db_dsn = DBI:mysql:mogilefs:host=172.16.113.157  **使用的数据**
    db_user = moguser     **访问数据库的普通用户**
    db_pass = mogpasswd
    listen = *:7001     **mogilefsd进程监听的端口**
    conf_port = 7001      **配置端口**
    query_jobs = 10       **工作线程的个数,指查询数据库的线程个数**
    delete_jobs = 1       **用于删除的线程个数**
    replicate_jobs = 5    **复制的线程个数**

*mogstore.conf为mogstore节点进程的配置文件
    maxconns = 10000      **最大并发连接数**
    httplisten = 0.0.0.0:7500
    mgmtlisten = 0.0.0.0:7501
    docroot = /mog/mogdata    **数据的存放位置**

3.启动并测试

1.创建/var/run/mogilefsd目录并修改属组属主
[root@Master mogilefs]# mkdir -p  /var/run/mogilefsd
[root@Master mogilefs]# chown -R mogilefs.mogilefs /var/run/mogilefsd/
2.创建/mog/mogdata目录并修改属组属主
[root@Master mogilefs]# mkdir -p /mog/mogdata
[root@Master mogilefs]# chown -R mogilefs.mogilefs /mog/mogdata/
3.启动mogilefsd进程和mogstored进程
[root@Master mogilefs]# service mogilefsd start
Starting mogilefsd                                         [确定]
[root@Master mogilefs]# service mogstored start
Starting mogstored                                         [确定]
**此处的启动脚本是使用rpm包安装,并且自带的,一般使用make安装的没有服务脚本**

4.使用管理工具配置mogstord节点主机

管理工具mogadm命令产用参数详解
>mogadm   parameter 
parameter:
    check:检测tracker主机
    host list:显示mogstore主机
    host add <hostname> [option]:将mogstore加入tracker
        --altip:备用节点
        --ip:
        --port:
        --status:加进来的主机状态,{alive,down},默认为down
    device list:显示主机的设备情况,如一共多少,使用了多少
    device add <hostname> <devid> [option]:添加设别到主机
        --devid=设别号,不要重复
        --status:默认伪alive
    domain list:显示主机的域
    domain add <domain_name>:添加一个域
    class list:显示类
    class add <domain> <class_name> [option]
        --hashtype:指定hash的方式,默认伪MD5
        --mindevconut:副本保持最小数
        --replpolicy:复制策略
配置mogstroke:
1.添加主机
[root@Master mogilefs]#mogadm host add  mog1 --ip=172.16.113.157 --port=7500 --status=alive
2.为主机添加设备,同时mogstored主机上要实现创建好设备,并且从启动节点
[root@Master mogilefs]# mogadm device add mog1 001
[root@Master mogdata]# mogadm device list
mog1 [1]: alive  used(G)    free(G)   total(G)  weight(%)
   dev1: alive      0.557      8.441      8.998      100
3.添加域
[root@Master mogdata]# mogadm domain add file
[root@Master mogdata]# mogadm domain list
 domain   class        mindevcount   replpolicy   hashtype
-------------------- -------------------- ------------- 
 file    default          2        MultipleHosts() NONE   
4.添加类
[root@Master mogdata]# mogadm class add file class1
[root@Master mogdata]# mogadm class list
 domain      class     mindevcount   replpolicy   hashtype
-------------------- -------------------- ------------- 
 file      class1          2        MultipleHosts() NONE   
 file     default          2        MultipleHosts() NONE

5.上传文件:mogupload
格式:mogupload --trackers=host --domain= --key=‘’ --file=‘上传文件’
[root@Master dev1]# mogupload --trackers=172.16.113.157 --domain=file --key='fstab.html' --file='/etc/fstab'

6.查看节点上的文件:moglistkeys
格式:moglistkeys  --trackers=host  --domain= 
[root@Master dev1]# moglistkeys --trackers=172.16.113.157 --domain=file
fstab.html

7.获取文件的保存路径:mogfileinfo
格式:mogfileinfo  --trackers=host  --domain --key
[root@Master dev1]# mogfileinfo --trackers=172.16.113.157 --domain=file --key='fstab.html'
- file: fstab.html
     class:              default
  devcount:                    1
    domain:                 file
       fid:                    3
       key:           fstab.html
    length:                  993
 - http://172.16.113.157:7500/dev1/0/000/000/0000000003.fid    **文件实际访问位置**

8.下载文件:mogfetch
格式:mogfetch  --trackers=host  --key --file=‘下载之后放在哪里’
9.删除文件:mogdelet
格式:mogdelet  --trackers=host  --domain --key

5.使用浏览器访问
这里写图片描述
这样一个mogilefs分布式存储就设置好了,只是mogilefsd进程和mogstored进程在统一主机上。
6.负载均衡设计结构
这里写图片描述
7.使用nginx实,现反向代理
使用nginx反向代理mogilefs时,要用到第三方模块在能使实现代理,nginx身不支持mogilefs的代理,下载模块快为nginx_mogilefs_module,下载地址:http://www.grid.net.ru/nginx/download/nginx_mogilefs_module-1.0.4.tar.gz

1.安装nginx,一定要编译安装,同时编译进第三方模块
[root@clone3 nginx-1.11.12]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --conf-path=/etc/nginx.d --sbin-path=/usr/local/bin --with-http_ssl_module  --with-http_stub_status_module --add-module=/home/lirui/nginx_mogilefs_module-1.0.4
[root@clone3 nginx-1.11.12]# make && make install
2.配置nginx配置文件
vim /etc/nginx.d/nginx.conf
upstream online_tracker{
    server 171.16.113.1577001;
    server 171.16.113.160:7001;
}
server{
location ~ /file {
    mogilefs_tracker online_tracker;
    mogilefs_domain file;
    mogilefs_methods GET PUT DELETE;
    mogilefs_noverify on;
    mogilefs_class calss1;
    mogilefs_pass { 
        proxy_pass $mogilefs_path;
        proxy_hide_header Content-Type;
        proxy_buffering off;
    }
}
}
    **详细参数请参考官方文档:http://www.grid.net.ru/nginx/mogilefs.en.html**

8.配置两台mogilefs主机
在配置两台主机是,mogilefsd进程会在数据库中读取mogstord节点的信息,在配置时按照上述阐述仅可以配置,建议在一个mogilefsd节点上配置,另一个节点可以在数据库中读到。
9.测试结果
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值