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)
Net18-AnyISalInNet18-AnyISalIn
上一篇 2016-05-04 21:30
下一篇 2016-05-05 10:07

相关推荐

  • 操作系统图形界面发展史(1981-2009)

    注意,本文这罗列了从1981年以来有重大意义的操作系统的图形界面。 首先,先介绍两个网站: http://www.guidebookgallery.org/ 如果你比较关注图形化UI的设计, 可以上这个网站上看看。 http://toastytech.com/guis/index.html 这是一个操作系统图形界面收集的网站,上面几科包括…

    Linux干货 2016-05-17
  • CentOS6.7上编译安装MariaDB

    CentOS6.7上编译安装MariaDB

    系统运维 2016-06-03
  • 一起学WINS系列(三)界面、概览

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/159542 上节我们讨论了有关WINS服务器的安装,本节将开始讨论WINS配置等内容。 一般情况下,我们可以在控制面板的管理工具中找到WINS,或者在【运行】内…

    Linux干货 2015-03-25
  • lvs 基本概念

    LVS(linux virtual machine) 的简写,是一个虚拟的服务器集群系统,主要用于4层负载均衡。 宗旨: 使用集群技术和Linux操作系统实现一个高性能、高可用的服务器. 很好的可伸缩性(Scalability) 很好的可靠性(Reliability),应该还是高可用吧 很好的可管理性(Manageability…

    Linux干货 2015-09-14
  • 抵御DDOS攻击,iptables限制TCP连接和频率

    cc攻击一到就有点兵临城下的感觉,正确的设置防护规则可以做到临危不乱,这里给出一个iptables对ip进行连接频率和并发限制,限制单ip连接和频率的设置规则的介绍 #单个IP在60秒内只允许新建20个连接,这里假设web端口就是80, iptables -I  INPUT -i eth1 -p tcp -m tcp –dpo…

    系统运维 2016-05-08
  • Memcached命令

    Memcache 的命令行用法: 1、启动Memcache 常用参数    memcached 1.4.3      -p <num>      设置端口号(默认不设置为: 11211)      -U <num> &nbsp…

    Linux干货 2015-05-18