阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MogileFS分布式文件系统搭建详解

142次阅读
没有评论

共计 10484 个字符,预计需要花费 27 分钟才能阅读完成。

MogileFS 是一套开源的分布式存储软件,适用于存储海量小文件。由 tracker,mogstore,database 三个部分组成。
Tracker:它通过数据库来保存元数据信息,包括站点 domain、class、host 等;主要功能包括监控后端 Storage 节点,及指示 Storage 节点完成数据的添加、删除、查询,及节点之间数据的复制等。
mogstored 实际存储数据的位置,默认监听在 7500 端口,接受客户端的文件存储请求。
database:用来做数据 key  value 映射,可用 mysql,还保存节点设置的全局信息

MogileFS 工作流程图:

MogileFS 分布式文件系统搭建详解

实验环境 tracker 节点 martin
storage 节点 martin lucia

部署 Tracker Nodes
[root@martin ~]# yum -y install make gcc unzip perl-DBD-MySQL perl perl-CPAN perl-YAML perl-Time-HiRes
 
cpan 
          install MogileFS::Server
          install MogileFS::Utils
 
———————————————————————-
—- Unsatisfied dependencies detected during —-
—-  DORMANDO/MogileFS-Server-2.72.tar.gz  —-
    MogileFS::Client [requires]
    Sys::Syscall [requires]
    Perlbal [requires]
    Test::More [requires]
    Net::Netmask [requires]
    Danga::Socket [requires]
    IO::AIO [requires]
 
—- Unsatisfied dependencies detected during —-
—-  DORMANDO/MogileFS-Client-1.17.tar.gz  —-
    IO::WrapTie [requires]
    Test::More [requires]
—- Unsatisfied dependencies detected during —-
—-      DORMANDO/Perlbal-1.80.tar.gz      —-
    Danga::Socket [requires]
    BSD::Resource [requires]
—- Unsatisfied dependencies detected during —-
—-        MLEHMANN/IO-AIO-4.34.tar.gz      —-
    Canary::Stability [build_requires]
  DORMANDO/MogileFS-Server-2.72.tar.gz
  /usr/bin/make install  — OK

#Sys::Syscall 的 0.25 版本 数据副本只能保存一份  需要降级到 0.23
 
[root@martin ~]# wget http://mirrors.ustc.edu.cn/CPAN/authors/id/B/BR/BRADFITZ/Sys-Syscall-0.23.tar.gz
[root@martin ~]# tar xf Sys-Syscall-0.23.tar.gz 
[root@martin ~]# cd Sys-Syscall-0.23
[root@martin Sys-Syscall-0.23]# perl Makefile.PL 
[root@martin Sys-Syscall-0.23]# make && make install

 初始化数据库:
12345678 mysql> create database mogilefs;
Query OK, 1 row affected (0.02 sec)
 
mysql> grant all on mogilefs.* to ‘mogilefs’@’192.168.*.*’ identified by ‘222222’;
Query OK, 0 rows affected (0.01 sec)
 
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

1 [root@martin ~]# mogdbsetup –dbhost=192.168.1.222 –dbname=mogilefs –dbuser=mogilefs –dbpass=222222  –dbrootpass=123321

12345678910111213141516171819202122 mysql> show tables;
+———————-+
| Tables_in_mogilefs  |
+———————-+
| checksum            |
| class                |
| device              |
| domain              |
| file                |
| file_on              |
| file_on_corrupt      |
| file_to_delete      |
| file_to_delete2      |
| file_to_delete_later |
| file_to_queue        |
| file_to_replicate    |
| fsck_log            |
| host                |
| server_settings      |
| tempfile            |
| unreachable_fids    |
+———————-+

添加启动用户:(只能以普通用户)

[root@martin ~]# useradd -r mogilefs

配置文件:
[root@martin Sys-Syscall-0.23]# mkdir /etc/mogilefs
[root@martin Sys-Syscall-0.23]# cd /etc/mogilefs

[root@martin mogilefs]# vim mogilefsd.conf
daemonize = 1              #是否在后台以守护进程运行
pidfile = /var/run/mogilefsd/mogilefsd.pid
db_dsn = DBI:mysql:mogilefs:host=localhost;port=3306;mysql_connect_timeout=5  #连接数据库的信息
db_user = mogilefs          #数据库上的用户名
db_pass = mogilefs          #用户名对应的密码
listen = 0.0.0.0:7001      #监听的地址和端口
conf_port = 7001            #配置接口
query_jobs = 10            #用于查询的进程数 可调大  看需求
delete_jobs = 1            #用于删除操作的进程数 可调大  看需求
replicate_jobs = 5          #用于复制的进程数 可调大  看需求
reaper_jobs = 1            #用于回收资源的进程数 可调大  看需求

运行时目录:
[root@martin mogilefs]# mkdir /var/run/mogilefsd
[root@martin mogilefs]# chown -R mogilefs /var/run/mogilefsd

启动脚本:
[root@martin mogilefs]# su – mogilefs -c “mogilefsd -c /etc/mogilefs/mogilefsd.conf –daemon”

[root@martin mogilefs]# ss -lntup|grep 7001
tcp    LISTEN    0      128                    *:7001                  *:*      users:((“mogilefsd”,41047,6))

部署 Storage Nodes

yum -y install make gcc unzip perl perl-CPAN perl-YAML perl-Time-HiRes  perl-DBD-MySQL 
 
cpan         
              install MogileFS::Server    #其中依赖自动解决
              install MogileFS::Utils

#Sys::Syscall 的 0.25 版本 数据副本只能保存一份  需要降级到 0.23
 
[root@martin ~]# wget http://mirrors.ustc.edu.cn/CPAN/authors/id/B/BR/BRADFITZ/Sys-Syscall-0.23.tar.gz
[root@martin ~]# tar xf Sys-Syscall-0.23.tar.gz 
[root@martin ~]# cd Sys-Syscall-0.23
[root@martin Sys-Syscall-0.23]# perl Makefile.PL 
[root@martin Sys-Syscall-0.23]# make && make install

if /etc/mogilefs/ not exist
1 [root@lucia ~]# mkdir /etc/mogilefs/

if user mogilefs not exist
1 [root@lucia ~]# useradd -r  mogilefs

[root@martin mogilefs]# vim /etc/mogilefs/mogstored.conf

maxconns = 10000  #最大并发连接数
httplisten = 0.0.0.0:7500  #http 监听的地址
mgmtlisten = 0.0.0.0:7501  #管理接口监听地址
docroot =/mydata/mogilefs/data    #用于存储的目录

[root@martin mogilefs]# mkdir /mydata/mogilefs/data -p
[root@martin mogilefs]# chown -R mogilefs.mogilefs /mydata/mogilefs/

启动脚本:
[root@martin mogilefs]# su – mogilefs -c “mogstored -c /etc/mogilefs/mogstored.conf –daemon”
 
[root@martin mogilefs]# ss -lntup |grep 7500
tcp    LISTEN    0      128                    *:7500                  *:*      users:((“mogstored”,41190,4))
 
[root@martin mogilefs]# ss -lntup |grep 7501
tcp    LISTEN    0      128                    *:7501                  *:*      users:((“mogstored”,41190,9))

 

Tracker Nodes
[root@martin mogilefs]# mogadm  –trackers=192.168.1.222:7001 check
 
Checking trackers…
  192.168.1.222:7001 … OK
Checking hosts…
No devices found on tracker(s).

123456 [root@martin mogilefs]# mogadm check
Checking trackers…
  127.0.0.1:7001 … OK
 
Checking hosts…
No devices found on tracker(s).

12345678 [root@martin ~]# mogstats -h
Usage:
    mogstats –db_dsn=”DBI:mysql:mfs:host=mfshost” –db_user=”mfs”
            –db_pass=”mfs” –verbose –stats=”devices,files”
    mogstats –stats=”all”
    mogstats [all options in ~/.mogilefs.conf]
 
valid stats: all, delete-queue, devices, domains, fids, files, general-queues, replication, replication-queue

为 trackers 添加 mysql 信息
[root@martin ~]# vim .mogilefs.conf  #家目录下
 
–db_dsn=”DBI:mysql:mogilefs:host=192.168.1.222″
–db_user=”mogilefs”
–db_pass=”222222″
–verbose 
–stats=”devices,files”

添加主机 node1 node2:

[root@martin ~]# mogadm  –trackers=192.168.1.222:7001 host add node1 –ip=192.168.1.222 –status=alive
[root@martin ~]# mogadm  –trackers=192.168.1.222:7001 host add node2 –ip=192.168.1.223 –status=alive

查看添加主机:
[root@martin ~]# mogadm  –trackers=192.168.1.222:7001 host list
node1 [1]: alive
  IP:      192.168.1.222:7500
node2 [2]: alive
  IP:      192.168.1.223:7500

为节点添加设备 列出设备:

[root@martin ~]# mogadm  –trackers=192.168.1.222:7001  device add node1 001  #001 设备 id  不可重用
[root@martin ~]# mogadm  –trackers=192.168.1.222:7001  device add node2 002
 
[root@martin ~]# mogadm  –trackers=192.168.1.222:7001  device list
node1 [1]: alive
                    used(G)    free(G)  total(G)  weight(%)
  dev1:  alive      0.000      0.000      0.000        100
node2 [2]: alive
                    used(G)    free(G)  total(G)  weight(%)
  dev2:  alive      0.000      0.000      0.000        100

创建对应设备 dev
[root@martin ~]# cd /mydata/mogilefs/data
[root@martin data]# mkdir dev1
[root@martin data]# chown -R mogilefs.mogilefs dev1/
 
[root@lucia ~]# cd /mydata/mogilefs/data/
[root@lucia data]# mkdir dev2
[root@lucia data]# chown -R mogilefs.mogilefs dev2/

创建 domain:
[root@martin ~]# mogadm –trackers=martin:7001 domain add files
 
[root@martin ~]# mogadm –trackers=martin:7001 domain list
domain              class                mindevcount  replpolicy  hashtype  #默认最小副本个数 2
——————– ——————– ————- ———— ——-
 files                default                  2        MultipleHosts() NONE

上传文件

[root@martin ~]# mogupload  –trackers=martin:7001 –domain=files –key=’/install.log’ –file=’install.log’
[root@martin ~]# moglistkeys –trackers=martin:7001 –domain=files
/install.log

[root@martin Sys-Syscall-0.23]# mogfileinfo –trackers=martin:7001 –domain=files –key=’/install.log’
– file: /install.log
    class:              default
  devcount:                    2
    domain:                files
      fid:                    4
      key:        /install.log
    length:                21712
 – http://192.168.1.223:7500/dev2/0/000/000/0000000004.fid
 – http://192.168.1.222:7500/dev1/0/000/000/0000000004.fid

MogileFS 分布式文件系统搭建详解

存储节点下线设置

[root@martin Sys-Syscall-0.23]# mogadm –trackers=192.168.1.222:7001 host mark node2 down
 
[root@martin Sys-Syscall-0.23]# mogadm –trackers=192.168.1.222:7001 host mark node2 down
[root@martin Sys-Syscall-0.23]# mogadm –trackers=192.168.1.222:7001 host list
node1 [1]: alive
  IP:      192.168.1.222:7500
node2 [2]: down
  IP:      192.168.1.223:7500
 
[root@martin Sys-Syscall-0.23]# mogadm –trackers=192.168.1.222:7001 device list
node1 [1]: alive
                    used(G)    free(G)  total(G)  weight(%)
  dev1:  alive      0.375      2.428      2.803        100
 
node2 [2]: down
                    used(G)    free(G)  total(G)  weight(%)
  dev2:  alive      0.239      2.563      2.803        100

上线:
[root@martin Sys-Syscall-0.23]# mogadm –trackers=192.168.1.222:7001 host mark node2 alive

class 设置:
123456 [root@martin mogilefs]# mogadm –trackers=martin:7001 class add files class0 –mindevcount=2
[root@martin mogilefs]# mogadm –trackers=martin:7001 class list               
 domain              class                mindevcount  replpolicy  hashtype
——————– ——————– ————- ———— ——-
 files                class0                    2        MultipleHosts() NONE   
 files                default                  2        MultipleHosts() NONE

结合 nginx 实现反向代理:

nginx_mogilefs_module-1.0.4 下载地址

Linux 公社资源站下载:

—————————————— 分割线 ——————————————

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是 www.linuxidc.com

具体下载目录在 /2016 年资料 / 6 月 /10 日 /MogileFS 分布式文件系统搭建详解 /

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

—————————————— 分割线 ——————————————

FileMD5SHA1
nginx_mogilefs_module-1.0.4.tar.gz2466aa02b225ad2aa1af22e6e50a9d2f4f6b774096a77aa8c550d8fd6a3f5d39a661d8ed
nginx_mogilefs_module-1.0.4.zip4667d8b805aa4ecc94c7353d79a1020a8d86fa4f0fcb60cdd73195f77fbadf45ac51a875

[root@marvin nginx-1.6.3]# ./configure  –prefix=/usr/local/nginx1.6.3    \
–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  \
–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 \
–user=nginx  \
–group=nginx \
–add-module=/tools/nginx_mogilefs_module-1.0.4 |tee /tmp/nginx.out

[root@marvin extra]# vim /usr/local/nginx/conf/nginx.conf
# 添加
 upstream trackers {
    server martin:7001 weight=1;
    server lucia:7001  weight=1;
    }
 
 
[root@marvin extra]# vim /usr/local/nginx/conf/extra/demo.conf 
# 添加
        location /file {
                mogilefs_tracker trackers;
#              mogilefs_tracker 192.168.1.222:7001;
                mogilefs_domain files;
                mogilefs_pass {
                        proxy_pass $mogilefs_path;
                        proxy_hide_header Content-Type;
                        proxy_buffering off;
                }
        }

上传图片:

[root@martin ~]# mogupload  –trackers=martin:7001 –domain=files –key=’/kuli.png’ –file=’kuli.png’

MogileFS 分布式文件系统搭建详解

over

MogileFS 设置 Memcached http://www.linuxidc.com/Linux/2012-03/56905.htm

在 MogileFS 中使用 Nginx http://www.linuxidc.com/Linux/2012-03/56904.htm

在开源分布式文件系统 MogileFS 中使用 Nginx http://www.linuxidc.com/Linux/2012-03/56573.htm

分布式文件系统 MogileFS 的使用 http://www.linuxidc.com/Linux/2015-09/122947.htm

自定义 Nagios 监控 MogileFS 存储节点脚本 http://www.linuxidc.com/Linux/2011-12/49394.htm

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-06/132160.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计10484字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中