配置Nginx实现负载均衡

原创 2016年06月01日 10:45:57

     在关于高并发负载均衡一文中已经提到,企业在解决高并发问题时,一般有两个方向的处理策略,软件、硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中web服务器前面一层最常用的的添加负载方案就是使用nginx实现负载均衡。

 一、负载均衡的作用

1、转发功能

按照一定的算法【权重、轮询】,将客户端请求转发到不同应用服务器上,减轻单个服务器压力,提高系统并发量。

2、故障移除

通过心跳检测的方式,判断应用服务器当前是否可以正常工作,如果服务器期宕掉,自动将请求发送到其他应用服务器。

3、恢复添加

如检测到发生故障的应用服务器恢复工作,自动将其添加到处理用户请求队伍中。


二、Nginx实现负载均衡
同样使用两个tomcat模拟两台应用服务器,端口号分别为8080 和8081

1、Nginx的负载分发策略

      Nginx 的 upstream目前支持的分配算法: 
1)、轮询 ——1:1 轮流处理请求(默认)

      每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除,剩下的继续轮询。 
2)、权重 ——you can you up
      通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。 
3)、ip_哈希算法
      每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。 

2、配置Nginx的负载均衡与分发策略

      通过在upstream参数中添加的应用服务器IP后添加指定参数即可实现,如:

upstream tomcatserver1 {
    server 192.168.72.49:8080 weight=3;
    server 192.168.72.49:8081;
    } 

 server {
        listen       80;
        server_name  8080.max.com;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            proxy_pass   http://tomcatserver1;
            index  index.html index.htm;
        }
     } 

      通过以上配置,便可以实现,在访问8080.max.com这个网站时,由于配置了proxy_pass地址,所有请求都会先通过nginx反向代理服务器,在服务器将请求转发给目的主机时,读取upstream为 tomcatsever1的地址,读取分发策略,配置tomcat1权重为3,所以nginx会将大部分请求发送给49服务器上的tomcat1,也就是8080端口;较少部分给tomcat2来实现有条件的负载均衡,当然这个条件就是服务器1、2的硬件指数处理请求能力。 

3、nginx其他配置

upstream myServer {  

    server 192.168.72.49:9090 down; 
    server 192.168.72.49:8080 weight=2; 
    server 192.168.72.49:6060; 
    server 192.168.72.49:7070 backup; 
}

1)down

    表示单前的server暂时不参与负载

2)Weight

    默认为1.weight越大,负载的权重就越大。

3)max_fails

    允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误

4)fail_timeout

    max_fails 次失败后,暂停的时间。

5)Backup

    其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

三、使用Nginx的高可用 

      除了要实现网站的高可用,也就是提供n多台服务器用于发布相同的服务,添加负载均衡服务器分发请求以保证在高并发下各台服务器能相对饱和的处理请求。同样,负载均衡服务器也需要高可用,以防如果负载均衡服务器挂掉了,后面的应用服务器也紊乱无法工作。

     实现高可用的方案:添加冗余。添加n台nginx服务器以避免发生上述单点故障。具体方案详见下文:keepalive+nginx实现负载均衡高可用

四、总结

    总结一点,负载均衡不论是各种软件或硬件上的解决方案,主要还是将大量的并发请求按照一定的规律分发给不同的服务器处理,从而减少某台服务器的瞬时压力,提高网站的抗并发能力。nginx在负载均衡的应用之所以广泛,笔者认为这归功于它的灵活配置,一个nginx.conf文件解决大部分问题,不论是nignx创建虚拟服务器、nginx的反向代理服务器,还是本文介绍的nginx的负载均衡,几乎都在这个配置文件中进行。服务器上只负责把nginx搭好,跑起来即可。而且它本身轻量级,不需要占用服务器太多资源就可以达到较好的效果,腻害。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

二十种特征变换方法及Spark MLlib调用实例(Scala/Java/python)(一)

Spark MLlib数据预处理特征变换提供20种处理方法,其基本介绍与示例调用整理如下: Tokenizer(分词器) 算法介绍:         Tokenization将文本划分为独立个体(通常...

Java中ThreadLocal介绍

原文地址:http://www.cnblogs.com/dolphin0520/p/3920407.html   想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadL...

Linux安装Tomcat9

0:环境准备 :     安装tomcat需要先配置jdk,所以没有配置jdk同学,先移步Linux安装JDK 1:下载安装包 安装完jdk,我们需要下载tomcat了,点我跳转,这样子我们找到B...

tomcat7集群(session复制)

tomcat集群的主要方法有三种: 1、采用粘性会话,即某个ip只会访问集群中的某一台机器,这样就可以简单的解决session共享的问题; 2、采用会话共享,目前网上较多的案例是使用memcahed作...

js字符串截取函数slice()、substring()、substr()

原文地址:http://www.cnblogs.com/lmsblogs/p/5876384.html 摘要 在js中字符截取函数有常用的三个slice()、substring()、subst...

Log4j配置介绍

原文地址:http://blog.csdn.net/godfrey90/article/details/6678021 1.Log4j是什么,引用一下百科上的解释        Log4j是Ap...

网络爬虫基本原理(一)

原文地址:http://www.cnblogs.com/wawlian/archive/2012/06/18/2553061.html     网络爬虫是捜索引擎抓取系统的重要组成部分。爬虫的主要...

阿里云服务器上安装jdk+tomcat+mysql的过程

原文地址:http://blog.csdn.net/e_worm/article/details/46708789 一:购买云服务器,并进行配置 首先登录阿里云http://www...

Nginx实战(一) 虚拟主机

文章目录 1. 基于IP的虚拟主机2. 基于域名的虚拟主机3. 基于端口的虚拟主机 利用虚拟主机,不同为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程。虚拟主机提供了在...

struts2的核心和工作原理

在学习struts2之前,首先我们要明白使用struts2的目的是什么?它能给我们带来什么样的好处? 设计目标     Struts设计的第一目标就是使MVC模式应用于web程序设计。在这儿MVC模式...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)