Nginx+MogileFS分布式文件系统部署实验



实验要求

1、  部署mogilefs分布式文件系统

2、  nginx代理

实验环境

1、拓扑

2、网络地址规划

node1:172.16.76.10 nginx (centos6.8)

node2:172.16.76.20 Trackers 、storage Node   (centos7.2)

node3:172.16.76.30 storage Node                   (centos7.2)

node4:172.16.76.40 storage Node  (Mariadb) (centos7.2)

实验准备

同步时间、关闭iptables、selinux等。同时自己配置/etc/hots

基本配置

node1

1、nginx配置

a、解决依赖关系

# yum groupinstall "DevelopmentTools" "Server Platform Deveopment"

# yum install openssl-devel pcre-devel

 b、安装

首先添加用户nginx,实现以之运行nginx服务进程:

# groupadd -r nginx

# useradd -r -g nginx nginx

c、开始编译和安装:

[[email protected] ~]# tar -xvfnginx-1.10.3.tar.gz
[[email protected] ~]# tar -xvfnginx_mogilefs_module-1.0.4.tar.gz
[[email protected] ~]# cd nginx-1.10.3/
[[email protected] nginx-1.10.3]#  ./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=/root/nginx_mogilefs_module-1.0.4/
[[email protected] nginx-1.10.3]# make &&make install
[[email protected] ~]#vim /etc/rc.d/init.d/nginx
         #脚本内容见文章后附件。
[[email protected] ~]#chmod +x /etc/rc.d/init.d/nginx
[[email protected] ~]#chkconfig –add nginx
[[email protected]ode1 ~]#service nginx start

node1为centos6

node2

[[email protected] ~]# ls mogilefs/

MogileFS-Server-2.46-2.el6.noarch.rpm           MogileFS-Utils-2.19-1.el6.noarch.rpm perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm

MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm  Perlbal-1.78-1.el6.noarch.rpm        perl-MogileFS-Client-1.14-1.el6.noarch.rpm

MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm  Perlbal-doc-1.78-1.el6.noarch.rpm     perl-Perlbal-1.78-1.el6.noarch.rpm

[[email protected] ~]# for i in {2,3,4} ;do scp -r  mogilefs node$i:/root/;done

#将mogilefs拷贝至其余各节点

[[email protected] ~]# for i in {2,3,4};do sshnode$i ‘yum install perl-Net-Netmask perl-IO-stringy perl-Sys-Syslogperl-IO-AIO -y‘;done   #各节点安装

[[email protected] ~]# for i in {2,3,4};do sshnode$i ‘yum install ./mogilefs/*.rpm -y‘;done #各节点安装

node4:

[[email protected] ~]# yum install mariadb-server –y

2、初始化数据

a、数据库授权

[[email protected] ~]#vim /etc/my.cnf

skip_name_resolve=ON

innodb_file_per_table=ON

[[email protected] ~]# systemctl start mariadb

[[email protected] ~]# mysql

MariaDB [mogilefs]> grant all ON *.* [email protected]‘172.16.%.%‘ identified by ‘mogilepass‘

MariaDB [mogilefs]> GRANT ALL PRIVILEGES ON mogilefs.*TO [email protected]‘172.16.%.%‘ IDENTIFIED BY ‘mogile’ WITH GRANT OPTION;

MariaDB [mogilefs]> flush privileges;

 b、初始化数据

[[email protected] ~]# mogdbsetup --dbhost=172.16.76.40 --dbname=mogilefs--dbrootuser=mogilefs --   dbrootpass=mogilefs --dbuser=mogile --dbpass=mogile  --yes

3、设定连接数据库

[[email protected] ~]# vim /etc/mogilefs/mogilefsd.conf

db_dsn =DBI:mysql:mogilefs:host=172.16.76.40

db_user = mogile

db_pass =mogile

# IP:PORT tolisten on for mogilefs client requests

listen = 0.0.0.0:7001

[[email protected]~]# service mogilefsd start

 存储节点配置

node2

[[email protected] ~]# vim/etc/mogilefs/mogstored.conf

maxconns = 10000

httplisten = 0.0.0.0:7500

mgmtlisten = 0.0.0.0:7501

docroot = /apps/data/mogilefs

[[email protected] ~]#mkdir -pv/apps/data/mogilefs

[[email protected] ~]# chown -R  mogilefs.mogilefs /apps/data/mogilefs/

启动服务报错

#此处是因为启动脚本问题

[[email protected] ~]# vim /etc/init.d/mogstored

图中红线标记处为添加内容,修改保存后再次启动服务正常

[[email protected] ~]# systemctl daemon-reload

文章后 会将修改后脚本上传为附件。

[[email protected] ~]# for i in {3,4}; do scp/etc/mogilefs/mogstored.conf node$i:/etc/mogilefs/;done

#将此文件传递到node3、node4节点(配置相同)

[[email protected] ~]#for i in {3,4}; do scp/etc/init.d/mogstored node$i:/etc/init.d/ ;done

#修改后的启动脚本

[[email protected] ~]# for i in {3.4}; do sshnode$i ‘mkdir -pv /apps/data/mogilefs‘ ;done

#node3、node4节点创建存储目录

[[email protected]~]# for i in {3,4}; do ssh node$i ‘chown -R mogilefs.mogilefs /apps/data/mogilefs/‘ ;done#权限

[[email protected]~]# for i in {3,4}; do ssh node$i ‘systemctl daemon-reload‘ ;done

[[email protected]~]# for i in {3,4}; do ssh node$i ‘ service mogstored start‘ ;done

#启动各节点 mostored服务。

 添加存储节点主机

[[email protected] ~]# mogadm host add172.16.76.20 --ip=172.16.76.20 --port=7500 --status=alive

[[email protected] ~]# mogadm host add172.16.76.30 --ip=172.16.76.30 --port=7500 --status=alive

[[email protected] ~]# mogadm host add172.16.76.40 --ip=172.16.76.40 --port=7500 --status=alive

添加存储设备

node2:

[[email protected] ~]# cd /apps/data/mogilefs/

[[email protected] mogilefs]# mkdir dev1

[[email protected] mogilefs]# chown -R  mogilefs.mogilefs /apps/data/mogilefs/

node3

[[email protected] ~]# cd /apps/data/mogilefs/

[[email protected] mogilefs]# mkdir dev2

[[email protected] mogilefs]# chown -R  mogilefs.mogilefs /apps/data/mogilefs/

node4

[[email protected] ~]# cd /apps/data/mogilefs/

[[email protected] mogilefs]# mkdir dev3

[[email protected] mogilefs]# chown -R  mogilefs.mogilefs /apps/data/mogilefs/

node2:

[[email protected] ~]# mogadm device add172.16.76.20 1

[[email protected] ~]# mogadm device add172.16.76.30 2

[[email protected] ~]# mogadm device add172.16.76.40 3

域(名称空间)、类添加

添加域

node2

[[email protected]~]# mogadm domain add file #添加域 file

[[email protected] ~]#mogadm domain add imgs  #添加域imgs

[[email protected] ~]#mogadm domain list  #域列表

添加类

node2

[[email protected]~]# mogadm class add imgs jpg --hashtype=MD5 --mindevcount=2

#添加类jpg ,MD5算法最小文件分数为2

[[email protected] ~]#mogadm class add imgs png --hashtype=MD5 --mindevcount=2

[[email protected] ~]#mogadm class list  #类列表

测试存储

上传文件

[[email protected]~]# mogupload --trackers=172.16.76.20:7001 --domain=imgs--class=jpg --key=‘/default.jpg‘ --file=‘/root/test.jpg‘

[[email protected]~]# mogupload  --trackers=172.16.76.20  --domain=file --key=‘t1.html‘--file=‘/root/anaconda-ks.cfg‘

查询文件

[[email protected] ~]# mogfileinfo--trackers=172.16.76.20:7001 --domain=imgs --key=‘default.jpg‘

#注意此处显示devcount这是有问题,文章最后有说明

查看详细信息

[[email protected]~]# mogfiledebug --trackers=172.16.76.20:7001 --domain=imgs  --key=‘default.jpg‘

浏览器测试查看

http://172.16.76.20:7500/dev1/0/000/000/0000000041.fid

此时说明mogilefs已经可以正常使用。

配置Nginx代理

[[email protected] ~]vim /etc/nginx/nginx.conf

#user nobody;
worker_processes  1;
 
#error_log logs/error.log;
#error_log logs/error.log  notice;
#error_log logs/error.log  info;
#pid       logs/nginx.pid;
events {
   worker_connections  1024;
}
http {
   include       mime.types;
   default_type application/octet-stream;
 
   #log_format  main  ‘$remote_addr - $remote_user [$time_local]"$request" ‘
   #                  ‘$status$body_bytes_sent "$http_referer" ‘
   #                 ‘"$http_user_agent" "$http_x_forwarded_for"‘;
 
   #access_log  logs/access.log  main;
 
   sendfile        on;
   #tcp_nopush     on;
 
   #keepalive_timeout  0;
   keepalive_timeout  65;
 
   #gzip  on;
 
         server{
             listen       80; 
             server_name yourdomain.com default;
 
             location /imgs  { 
             mogilefs_tracker 172.16.76.20:7001;  #代理trackers
             mogilefs_domain imgs;  #imgs域
             mogilefs_methods get;  #请求方法
 
             mogilefs_pass {
                  proxy_pass $mogilefs_path;  #mogilefs模块内置变量
                  proxy_hide_headerContent-Type;
                  proxy_buffering off;
             }   
             expires 1h; 
             }   
     location /file/ { 
             mogilefs_tracker 172.16.76.20:7001;  
             mogilefs_domain file;  #file域
             mogilefs_methods get; 
 
             mogilefs_pass {
                       proxy_pass $mogilefs_path;  
                      proxy_hide_headerContent-Type;
                       proxy_buffering off;
             }   
             expires 1h; 
             }
             error_page  500 502 503 504  /50x.html;
             location = /50x.html {
                root   html;
             }  
         }
}

[[email protected] ~] nginx -t

nginx: the configuration file/etc/nginx/nginx.conf syntax is ok

nginx: configuration file/etc/nginx/nginx.conf test is successful

[[email protected] ~]nginx -s reload

测试

声明:本实验中存在两个问题

1、  由于nginx与mogilefs模块问题在centos7中安装存在问题,所以nginx代理节点安装在centos6.8 系统中。

2、mogilefs存储文件默认是2份,本实验中无法自动复制,文件始终是一份,

http://www.tuicool.com/articles/BbMJZfR此文中记录有解决方法,不过笔者按其方法实验并未成功,望各位见谅。如果那天问题解决我会更新此博客。当然若哪位能够解决此问题,希望给兄弟指点下,在这先谢谢了。

注:文中所用安装包 可一下网址下载

http://down.51cto.com/3363989/up

时间: 2024-10-20 18:19:12

Nginx+MogileFS分布式文件系统部署实验的相关文章

DFS分布式文件系统--部署篇

DFS分布式文件系统--部署篇 续DFS分布式文件系统--基础篇 三.DFS部署实例 在VMwareWorkstation 12.0虚拟环境下,建立五台Windows Server 2008 R2虚拟机. NameSrv01:192.168.0.180/24,DC,DNS: NameSrv02:192.168.0.181/24,辅助DC,DNS:域名FromHeart.Com. 这两台DC为命名空间服务器. ShareSrv01:192.168.0.182/24:ShareSrv02:192.1

Mogilefs分布式文件系统-Keepalived+Nginx双主模型实现图片分布式存储、访问

一.分布式文件系统: 分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连.计算机通过文件系统管理.存储数据,单纯通过增加硬盘个数来扩展计算机文件系统的存储容量的方式,在容量大小.容量增长速度.数据备份.数据安全等方面的表现都差强人意. 分布式文件系统可以有效解决数据的存储和管理难题:将固定于某个地点的某个文件系统,扩展到任意多个地点/多个文件系统,众多的节点组成一个文件系统网络.每个节点可以分布在

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

MogileFS是一套高效的文件自动备份组件,由Six Apart开发,广泛应用在包括LiveJournal等web2.0站点上. MogileFS的特性: 工作在应用层,无单点,自动文件复制(复制的最小单位是class,而不是文件),传输中立且使用nfs或者http协议进行传输. MogileFS的结构组成: tracker:是mogilefs的核心,是一个调度器,通过数据库来保存元信息,包括daemon,class,host等信息,主要职责:监控后端mogstore节点,并指示store节点

分布式存储之MogileFS分布式文件系统简单应用

一.分布式存储原理: 分布式存储系统,是将数据分散存储在多台独立的设备上.传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要.分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性.可用性和存取效率,还易于扩展. 1.分布式文件系统的特点: • 节点间能相互通信 • 同一数据存储在多个节点上 • 数据空间平衡 • 具有容错能力 • 文件系统的

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

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

MogileFS分布式文件系统

内容概述 1.分布式文件系统介绍 2.CAP理论 3.常见分布式文件系统介绍 4.MogileFS详细介绍 4.1MogileFS组成 4.2MogileFS特性 5.MogileFS实现 5.1 node1配置Mariadb(过程略) 5.2 node1配置tracker 5.3 node2配置storage 5.4  node3配置storage 5.5 配置分布式集群 5.5.1 添加主机 5.5.2 添加设备 5.5.3 定义domain和class 5.6  验证分布式集群 6.Mog

FastDFs 开源的轻量级分布式文件系统部署

1.技术背景介绍; FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.特别适合以文件为载体的在线服务,如相册网站.视频网站等等.FastDFS为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传.下载等服务. 2.基础环境介绍; 主机名 IP地址规划 相关软件源码包汇总 服务器角

GlusterFS分布式文件系统部署

理论部分 一:GlusterFS概述1.1:Glusterfs简介?? GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端.GlusterFS借助TCP/IP或InfiniBandRDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据.1.2:Glusterfs特点1:扩展性和高性能?? ??GlusterFS利用双重特性来提供几TB至数PB的高扩展存储解

FastDFS轻量级分布式文件系统部署

FastDFS介绍 FastDFS 是一个由 C 语言实现的开源轻量级分布式文件系统,作者余庆,支持 Linux.FreeBSD.AID 等 Unix 系统,解决了大数据存储和读写负载均衡等问题,适合存储 4KB~500MB 之间的小文件,如图片网站.短视频网站.文档.app 下载站等,UC.京东.支付宝.迅雷.酷狗等都有使用. FastDFS上传下载的流程 4.4 利用Java客户端调用FastDFS 服务器安装完毕后,咱们通过Java调用fastdfs 加载Maven依赖 fastdfs 没