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

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

MogileFS nginx 负载均衡

大纲

  • 实验环境
  • 实验步骤
    • 配置MogileFS
    • 配置Nginx
  • 总结

前言

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

实验拓扑

实验环境

主机 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安装、基本配置


配置数据库:

[[email protected]~] service mysqld start

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

mysql> GRANT ALL ON mogilefs.* TO  [email protected]‘%‘ 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

[[email protected]~] vim /etc/mogilefs/mogilefsd.conf   #node7, node8也要做操db_dsn = DBI:mysql:mogilefs:host=172.16.1.7db_user = mogileuserdb_pass = passwdlisten = 0.0.0.0:7001conf_port = 7001

[[email protected]~] service mogilefsd startStarting mogilefsd                                         [  OK  ]

[[email protected]~] mogadm host add node1 --ip=172.16.1.7 alive   #只用在node6操作[[email protected]~] mogadm host add node2 --ip=172.16.1.8 alive   #只用在node6操作[[email protected]~] mogadm host add node3 --ip=172.16.1.9 alive   #只用在node6操作[[email protected]~] mogadm host listnode1 [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

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

[[email protected]~] service mogilefsd start  #node7启动mogfilefsdStarting mogilefsd                                         [  OK  ]

[[email protected]~] service mogilefsd start  #node7启动mogfilefsdStarting mogilefsd                                         [  OK  ]

配置mogstored

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

[[email protected] ~]# chown mogilefs.mogilefs /data/mogilefs/ -R[[email protected]~] service mogstored startStarting mogstored                                         [  OK  ]

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

[[email protected] ~]# mogadm device add node1 1 [[email protected] ~]# mogadm device add node2 2[[email protected] ~]# mogadm device add node3 3

#查看设备信息[[email protected]~] mogadm device listnode1 [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

配置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

[[email protected]~] 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值就能够访问到图片, 停止后端任意主机都可以继续访问

总结

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

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

时间: 2024-10-12 07:07:18

Nginx代理MogileFS并实现负载均衡和高可用的相关文章

Nginx反向代理、负载均衡, keepalived高可用

Nginx反向代理.负载均衡,  keepalived高可用 Nginx反向代理.负载均衡,  keepalived高可用 一.Nginx反向代理.负载均衡 1.什么是反向代理.负载均衡 严格的说,Nginx仅仅是作为Nginx Proxv反向代理使用的,因为这个反向代理功能表现的效果是负载均衡集群的效果,所以本文称之为Nginx负载均衡.那么,反向代理和负载均衡有什么区别呢? 普通负载均衡软件,例如大名鼎鼎的LVS,其实现的功能只是对请求数据包的转发(也可能会改写数据包).传递,其中DR模式明

nginx反向代理tomacat+keepalived实现动静分离、负载均衡、高可用

本文的动静分离主要是通过nginx+tomcat来实现,其中nginx处理图片.html.JS.CSS等静态文件,tomcat处理jsp.servlet等动态请求 服务器名称                                 系统版本                           预装软件                     IP地址 Nginx服务器                             CentOS 7 最小安装              Nginx

Nginx之二:负载均衡及高可用

一.Nginx负载均衡及高可用简介 负载均衡是为了解决单个节点压力过大,造成Web服务响应过慢,严重的情况下导致服务瘫痪,无法正常提供服务.负载均衡,将用户的所有HTTP请求均衡的分配到每一台机器上,充分发挥所有机器的性能,提高服务的质量和用户体验.负载均衡常用的Web服务器软件有Nginx.HAProxy.LVS.Apache. Nginx负载均衡是通过upstream模块来实现的,常见四种负载策略: 轮循(默认:将每个请求均匀分配到每台服务器 最少连接:将请求分配给连接数最少的服务器 IP

Keepalived+LVS+Nginx负载均衡之高可用

Keepalived+LVS+Nginx负载均衡之高可用 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常运行.针对系统架构设计的高可用要求,我们需要解决Nginx负载均衡出现单机故障时,系统正常运行的需求.所以系统架构引入Keepalived组件,实现系统高可用. 一.Keepalived介绍 Keepalived是分布式部署系统解决系统高可用的软件,结合LVS(Linux Virtual Serve

nginx负载均衡+keepalived高可用完全配置小结

nginx做负载均衡(无高可用) 大致步骤. 1. 前端 nginx安装,pcre安装,具体步骤不解释. 2. 负载配置 A. 默认轮循 在nginx.conf  里加入一行 include upstream.conf,然后所有的负载均衡的配置直接在upstream.conf里配置. [[email protected] conf]# cat upstream.conf upstream httpservers { server 192.168.137.10:80 weight=5; serve

Keepalived_tengine实现discuz负载均衡和高可用

前言: 上篇博文<keepalived_nginx实现discuz负载均衡和高可用>讲到,由于nginx将health_check功能放入到了商业版本,导致社区版本的nginx进行负载均衡,无法对后端的RS主机进行健康状态检测,所以现在准备使用tengine来取代nginx.我们只需要将前一章节VS主机上的nginx替换为tengine即可. 配置: Host VS1 卸载nginx,安装tengine # yum remove -y nginx # yum groupinstall -y &

用haproxy结合keepalived实现基于LNMP的负载均衡和高可用

今天我们讲haproxy结合keepalived实现LNMP的负载均衡和高可用,现在的公司大部分都基于haproxy实现负载均衡.下面以一个事例去给大家详细讲解如何去实现: 一.用haproxy结合keepalived实现基于lnmp的负载均衡和高可用服务,要求: (1)实现动静分离,图片和css,js都分离到专门的静态服务器上 (2)只允许172.17网段用户访问 (3)对于动态请求,要求实现基于cookie的会话保持 整体架构如下: 1.实验前需要关闭防火墙和selinux,以及同步时间.

实战 LVS+Keepalived 实现负载均衡和高可用

1.软件介绍 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,可以实现LINUX平台下的简单负载均衡. LVS负载均衡有4种负载均衡方式 a.DR 模式 b.NAT 模式 c.Tunnel 模式 d.Full NAT 模式 LVS负载均衡8种调度算法 (rr,wrr,lc,wlc,lblc,lblcr,dh,sh) 各个模式的原理在此不再赘述,本文使用DR模式,rr调度算法. Keepalived 是运行在lvs 之上,它的主要功能是

Keepalived负载均衡与高可用

1.keepalived服务介绍Keepalived的项目实现的主要目标是简化LVS项目的配置并增强其稳定性,即Keepalived是对LVS项目的扩展增强.Keepalived为Linux系统和基于Linux 的架构提供了负载均衡和高可用能力,其负载均衡功能主要源自集成在Linux内核中的LVS项目模块IPVS( IP Virtual Server ),基于IPVS提供的4 层TCP/IP协议负载均衡, Keepalived也具备负载均衡的功能,此外, Keepalived还实现了基于多层TC