mogilefs 分布式文件存储

本实验环境均为centos6.8

1,拓扑图如下

blob.png

  

computer_name ip
nginx 192.168.153.128/24
tracker01 192.168.153.129/24
tracker02 192.168.153.130/24
mogstored01 192.168.153.131/24
mogstored02 192.168.153.132/24
mogstored03 192.168.153.133/24

1,先安装并配置tracker

tracker是需要数据库来进行存储文件的元数据及其位置信息,两个tracker公用一个数据库,本来是通过MHA来实现高可用数据存储的,但是为了简洁,就把数据库放到tracker01上了,在生产环境中千万不要这么做

1,安装tracker相关的程序(192.168.153.129,192.168.153.130)除了mysql之外,其他的两台tracker配置都一样

yum install -y /share/mogilefs/MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm 
yum install /share/mogilefs/perl-Perlbal-1.78-1.el6.noarch.rpm -y
yum install /share/mogilefs/MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm -y
yum install /share/mogilefs/MogileFS-Server-2.46-2.el6.noarch.rpm -y
yum install /share/mogilefs/perl-Net-Netmask-1.9015-8.el6.noarch.rpm -y
yum install /share/mogilefs/perl-MogileFS-Client-1.14-1.el6.noarch.rpm -y
yum install /share/mogilefs/MogileFS-Utils-2.19-1.el6.noarch.rpm -y
yum install mysql-server -y

2,配置tracker01

a,先修改数据库配置信息并启动数据库

vim /etc/my.cnf
#在[mysqld]下面添加如下两行代码
skip_name_resolve
innodb_file_per_table=ON
service mysqld start

b,初始化数据库,并进行授权

mysql>grant all on mogdb.* to "moguser"@"192.168.153.%" identified by "mogpass";
mysql>flush privileges;

blob.png

c,通过命令生产表

mogdbsetup --dbname=mogdb --dbuser=moguser --dbpass=mogpass

blob.png

d,修改配置文件

vim /etc/mogilefs/mogilefsd.conf
# Database connection information
db_dsn = DBI:mysql:mogdb:host=192.168.153.129
db_user = moguser
db_pass = mogpass
# IP:PORT to listen on for mogilefs client requests
listen = 192.168.153.129:7001

blob.png

e,启动mogilefs

service mogilefsd start

blob.png

配置tracker01

a,先安装程序包,和tracker01一样(mysql 包不要安装了)

b,将tracker01的配置文件直接复制一份到本机就可以了

scp /etc/mogilefs/mogilefsd.conf 192.168.153.130:/etc/mogilefs/

blob.png

c,修改tracker监听ip

blob.png

d,保存并启动服务

blob.png

2,安装并配置mogstored

1,先配置mogstored01

00先安装程序包

yum install -y /share/mogilefs/MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm 
yum install /share/mogilefs/perl-Perlbal-1.78-1.el6.noarch.rpm perl-IO-AIO -y
yum install /share/mogilefs/MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm -y
yum install /share/mogilefs/MogileFS-Server-2.46-2.el6.noarch.rpm -y

a, 创建存储所需的目录(这些目录是要挂载不同的磁盘的,现在用目录来进行模拟)

mkdir /data/mogstored/dev{1,2,3} -pv    #在stored01执行该命令
mkdir /data/mogstored/dev{4,5,6} -pv    #在stored02执行该命令
mkdir /data/mogstored/dev{7,8,9} -pv    #在stored03执行该命令

b,在所有存储节点授权目录权限

chown -R mogilefs:mogilefs /data/mogstored/

blob.png

c,编辑mogstored的配置文件

vim /etc/mogilefs/mogstored.conf
maxconns = 10000
httplisten = 0.0.0.0:7500
mgmtlisten = 0.0.0.0:7501
docroot = /data/mogstored        #三个存储节点都一样,存储的目录

d,保存配置并启动服务

service mogstored start

blob.png

在tracker01上配置存储信息

1,先自定义一个配置文件,方便mogadm命令调用

cd && vim .mogilefs.conf
db_dsn=DBI:mysql:mogdb:host=192.168.153.129
db_user=moguser
db_pass=mogpass
trackers = 192.168.153.129:7001, 192.168.153.130:7001

2,添加节点

mogadm host add storage01 --ip=192.168.153.131 --port=7500 --status=alive
mogadm host add storage02 --ip=192.168.153.132 --port=7500 --status=alive
mogadm host add storage03 --ip=192.168.153.133 --port=7500 --status=alive

blob.png

3,添加设备(总共新建了九个目录,都要添加进来)

mogadm device add storage01 1
mogadm device add storage01 2
mogadm device add storage01 3
mogadm device add storage02 4
mogadm device add storage02 5
mogadm device add storage02 6
mogadm device add storage03 7
mogadm device add storage03 8
mogadm device add storage03 9

blob.png

4,新建一个域,用来存放文件

mogadm domain add files

blob.png

5,先上传一个文件测试一下

mogupload --domain=files --key='fstab.txt' --file='/etc/fstab'

6,查看该文件的信息

mogfileinfo --domain=files --key='fstab.txt'

blob.png

7,在浏览器中输入其中一个地址访问

blob.png

8,下载到本地

mogfetch --domain=files --key='fstab.txt' --file='/root/fstab'

3,通过nginx 反向代理mogilefs

nginx默认没有mogilefs的支持模块,需要自行编译安装

模块的网页http://www.grid.net.ru/nginx/mogilefs.en.html

1,先安装编译环境

yum install gcc gcc-c++ openssl-devel pcre-devel -y

2,准备nginx和nginx_mogilefs_module的源码包

3,解压并编译

tar -xvf /share/mogilefs/nginx_mogilefs_module-1.0.4.tar.gz -C /root/
tar -xvf /share/mogilefs/nginx-1.8.0.tar.gz -C /root/
cd /root/nginx-1.8.0/

4,开始编译nginx

./configure --prefix=/usr/local/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_stub_status_module --with-pcre \
--add-module=/root/nginx_mogilefs_module-1.0.4 --with-http_dav_module
make && make install

5,配置nginx的环境变量

vim /etc/profile.d/nginx.sh
export PATH=/usr/local/nginx/sbin:$PATH

6,重读环境变量

. /etc/profile.d/nginx.sh

7,编辑nginx的配置文件

[root@localhost nginx-1.8.0]# cd /etc/nginx/
[root@localhost nginx]# cp nginx.conf{,.bak}
[root@localhost nginx]# vim nginx.conf

在http内容下面添加

upstream mogtrackers {
        server 192.168.153.129:7001;
        server 192.168.153.130:7001;
}

在server中添加如下

        location /files/ {
                mogilefs_tracker mogtrackers;
                mogilefs_domain files;
                mogilefs_pass {
                     proxy_pass $mogilefs_path;
                     proxy_hide_header Content-Type;
                     proxy_buffering off;
            }
        }

保存退出

8,检查配置文件

blob.png

9,启动nginx服务

blob.png

10,在web端访问测试输入key值进行访问

blob.png

11,上传一张图片测试一下

mogupload --domain=files --key='a.jpg' --file='/usr/share/backgrounds/centos_1920x1200_logoonly.jpg'

blob.png

blob.png

  • mogilefs 分布式文件存储已关闭评论
  • 2,069 views
    A+
发布日期:2016年12月08日  所属分类:Linux实验
标签: