Nginx代理MogileFS并实现负载均衡和高可用

Nginx代理MogileFS并实现负载均衡和高可用

MogileFS nginx 负载均衡

前言

上篇文章我们了解分布式系统和MogileFS的基本使用, 但是那样的架构是有问题的, 本篇文章我们来了解一下如何使用nginx-mogilefs-module-master模块来构建一个不一样的 MogileFS Cluster

实验拓扑

blob.png

实验环境

主机 IP 功用
node6 172.16.1.7 Nginx,Tracker, Storage,DataBase
node7 172.16.1.8 Tracker, Storage
node8 172.16.1.9 Tracker, Storage

实验步骤

配置MogileFS

安装过程这里就不叙述了, 有疑问看我上一篇文章分布式系统介绍及MogileFS安装、基本配置


配置数据库:

[root@node6~] service mysqld start

mysql> GRANT ALL ON *.* TO root@'%' IDENTIFIED BY 'passwd' ;  #配置一个可以远程连接的root用户
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL ON mogilefs.* TO  mogileuser@'%' IDENTIFIED BY 'passwd';  #配置一个可管理mogilefs数据库的用户
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE DATABASE mogilefs;   #创建mogilefs数据库
Query OK, 1 row affected (0.00 sec)

配置mogilefsd

[root@node6~] vim /etc/mogilefs/mogilefsd.conf   #node7, node8也要做操
db_dsn = DBI:mysql:mogilefs:host=172.16.1.7
db_user = mogileuser
db_pass = passwd
listen = 0.0.0.0:7001
conf_port = 7001

[root@node6~] service mogilefsd start
Starting mogilefsd                                         [  OK  ]



[root@node6~] mogadm host add node1 --ip=172.16.1.7 alive   #只用在node6操作
[root@node6~] mogadm host add node2 --ip=172.16.1.8 alive   #只用在node6操作
[root@node6~] mogadm host add node3 --ip=172.16.1.9 alive   #只用在node6操作
[root@node6~] mogadm host list
node1 [1]: alive
   IP:       172.16.1.7:7500

node2 [2]: alive
   IP:       172.16.1.8:7500

node3 [3]: alive
    IP:       172.16.1.9:7500

[root@node6~] scp /etc/mogilefs/mogilefsd.conf 172.16.1.8:/etc/mogilefs/    #复制配置文件给node7
[root@node6~] scp /etc/mogilefs/mogilefsd.conf 172.16.1.9:/etc/mogilefs/    #复制配置文件给node8

[root@node7~] service mogilefsd start  #node7启动mogfilefsd
Starting mogilefsd                                         [  OK  ]

[root@node7~] service mogilefsd start  #node7启动mogfilefsd
Starting mogilefsd                                         [  OK  ]

配置mogstored

[root@node6~] mkdir /data/mogilefs/dev1 -pv
   mkdir: created directory `/data'
   mkdir: created directory `/data/mogilefs'
   mkdir: created directory `/data/mogilefs/dev1'
[root@node6~] vim /etc/mogilefs/mogstored.conf
   maxconns = 10000
   httplisten = 0.0.0.0:7500
   mgmtlisten = 0.0.0.0:7501
   docroot = /data/mogilefs/

[root@node6 ~]# chown mogilefs.mogilefs /data/mogilefs/ -R
[root@node6~] service mogstored start
Starting mogstored                                         [  OK  ]


##node7, node8都要做上述操作

[root@node6 ~]# mogadm device add node1 1
[root@node6 ~]# mogadm device add node2 2
[root@node6 ~]# mogadm device add node3 3

#查看设备信息
[root@node6~] mogadm device list
node1 [1]: alive
                   used(G)    free(G)   total(G)  weight(%)
  dev1:   alive      2.069     72.365     74.435        100

node2 [2]: alive
                   used(G)    free(G)   total(G)  weight(%)
  dev2:   alive      1.958     72.477     74.435        100

node3 [3]: alive
                   used(G)    free(G)   total(G)  weight(%)
  dev3:   alive      1.954     72.480     74.435        100

创建域

[root@node6 ~]# mogadm domain add files
[root@node6 ~]# mogadm domain add images

[root@node6~] mogadm domain list
domain               class                mindevcount   replpolicy   hashtype
-------------------- -------------------- ------------- ------------ -------
files                default                   2        MultipleHosts() NONE  
images               default                   2        MultipleHosts() NONE  

上传文件并测试

[root@node6~] mogupload --trackers=172.16.1.7 --domain=images --key='pal5q.jpg' --file=1.jpg 
[root@node6~] mogfileinfo --trackers=172.16.1.7 --domain=images --key='pal5q.jpg'
- file: pal5q.jpg
    class:              default
 devcount:                    2
   domain:               images
      fid:                    5
      key:            pal5q.jpg
   length:               103139
- http://172.16.1.8:7500/dev2/0/000/000/0000000005.fid
- http://172.16.1.7:7500/dev1/0/000/000/0000000005.fid

blob.png

配置Nginx

编译安装Nginx

#Nginx和模块自行下载
[root@node6 ~] yum groupinstall "Development Tools" "Server Platform Developments"  #安装开发包组
[root@node6/usr/local/nginx-1.9.15] yum install pcre-devel openssl-devel -y #安装需要的软件包
[root@node6~] tar xf nginx-1.9.15.tar.gz -C /usr/local/
[root@node6~] tar xf nginx_mogilefs_module-1.0.4.tar.gz -C /usr/local/
[root@node6~] cd /usr/local/nginx-1.9.15/

[root@node6/usr/local/nginx-1.9.15] ./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 \
>   --with-pcre \
>   --with-debug \
>   --add-module=/usr/local/nginx_mogilefs_module-1.0.4/

[root@node6/usr/local/nginx-1.9.15] make && make install

配置Nginx

[root@node6~] vim /etc/nginx/nginx.conf

user  nobody;
worker_processes  1;
events {
   worker_connections  1024;
}

http {
   include       mime.types;
   default_type  application/octet-stream;

   sendfile        on;

   keepalive_timeout  65;
   upstream trackers {
   server 172.16.1.7:7001;
   server 172.16.1.8:7001;
   server 172.16.1.9:7001;
   }


   server {
       listen       80;
       server_name  localhost;



       location / {
           root   html;
           index  index.html index.htm;
       }

     location  /images/ {
         mogilefs_tracker trackers;
         mogilefs_domain images;
         mogilefs_methods GET;
         mogilefs_noverify on;

         mogilefs_pass {
                 proxy_pass $mogilefs_path;
                 proxy_hide_header Content-Type;
                 proxy_buffering off;
         }
     }
       error_page   500 502 503 504  /50x.html;
       location = /50x.html {
           root   html;
       }

   }


}

启动并测试

[root@node6~] /usr/sbin/nginx   #启动nginx

我们直接通过key值就能够访问到图片, 停止后端任意主机都可以继续访问

blob.png

总结

通过这个实验, 我们可以将通过MogileFS实现的分布式存储中的文件通过键值进行获取, 也就是说, 我们也可以在站点中直接引用, 如果是Tengine的话, 还能够通过Check_status看到更为详细的信息

作者水平很低, 如果有错误及时指出, 如果你觉得本文写的好请点一波赞~(≧▽≦)/~ 
作者: AnyISaIln QQ: 1449472454 
感谢: MageEdu

原创文章,作者:Net18-AnyISalIn,如若转载,请注明出处:http://www.178linux.com/16001

(0)
上一篇 2016-05-04 21:30
下一篇 2016-05-05 10:07

相关推荐

  • PHP的类自动加载机制

    在PHP开发过程中,如果希望从外部引入一个class,通常会使用include和require方法,去把定义这个class的文件包含进来。这个在小规模开发的时候,没什么大问题。但在大型的开发项目中,这么做会产生大量的require或者include方法调用,这样不因降低效率,而且使得代码难以维护,况且require_once的代价很大。 在PHP5之前,各个…

    Linux干货 2015-04-10
  • 包管理一:配置本地ISO的yum源

    故事背景:网上找了一个软件,但是这个软件需要依赖光盘上面的基础包,但是这个服务器又不能上网,怎么办? 方法:这里推荐配置本地ISO的yum源,然后yum localinstall xxx.rpm 1、yum的配置文件说明 配置文件: /etc/yum.conf:为所有仓库提供公共配置 /etc/yum.repos.d/*.repo:为仓库的指向提供配置 仓库…

    Linux干货 2016-01-05
  • Cobbler实现多系统自动化安装

    Cobbler介绍:  Cobbler能够快速建立多系统同时安装的网络系统安装环境;传统的pxe+dhcp+tftp+kickstart仅能够提供单一系统安装,功能过于简单;如果遇到安装不同操作系统时就遇到瓶颈;而cobbler正好解决了这一问题。Cobbler是增强版的网络系统安装。 Cobbler由不同的组件配合完成系统安装,各组件之间配合如下…

    Linux干货 2015-08-11
  • nginx 基础笔记

    一、Nginx 优点 高性能web,可以支持反向代理 比Apache性能优越,支持更多的并发连接,但资源占用很少,轻量级的web服务器。可以支持高达50000个并发连接数的响应 Nginx 在Linux 2.6+ 使用epoll模型,提供卓越性能 做为负载均衡服务器,可以在内部直接支持PHP和Rails,也可以支持作为HTTP代理服务器对外进行服务 Ngin…

    Linux干货 2016-03-19
  • Centos7 PHP-FPM源码安装

    PHP-FPM源码安装 安装必要组件 yum install -y openssl-devel traceroute libtool unzip gcc gcc-c++ autoconf net-snmp-devel vim wget sysstat lrzsz  man tree mysql-devel ntpdate rsync libxml2…

    系统运维 2016-09-06
  • heartbeatV1+nfs实现高可用httpd

        随着互联网技术的不断发展,Web应用也越来越普遍,Web服务器的无故障工作时间就显得尤重要,但由于各种各样的原因,一台服务器并不能保证永远不出问题的运行,此时就需要一种机制来实现多台服务器共同为相同的来务功能提供服务,以确保任意一台服务器宕机后,不会影响其所承载的业务的访问。   &nbsp…

    Linux干货 2015-06-26