当前位置:首页 > 开发 > 开源软件 > 正文

【Nginx四】Nginx作为HTTP负载均衡服务器

发表于: 2014-09-10   作者:bit1129   来源:转载   浏览:
摘要:  Nginx的另一个常用的功能是作为负载均衡服务器。一个典型的web应用系统,通过负载均衡服务器,可以使得应用有多台后端服务器来响应客户端的请求。一个应用配置多台后端服务器,可以带来很多好处:   负载均衡的好处 增加可用资源 增加吞吐量 加快响应速度,降低延时 出错的重试验机制 Nginx主要支持三种均衡算法: round-robin l

 Nginx的另一个常用的功能是作为负载均衡服务器。一个典型的web应用系统,通过负载均衡服务器,可以使得应用有多台后端服务器来响应客户端的请求。一个应用配置多台后端服务器,可以带来很多好处:

 

负载均衡的好处

  • 增加可用资源
  • 增加吞吐量
  • 加快响应速度,降低延时
  • 出错的重试验机制

Nginx主要支持三种均衡算法:

  • round-robin
  • least-connected 负载饱和度算法,Nginx会将请求转发到链接数最少的那太机器上
  • ip-hash  基于访问IP的hash值进行请求分发,适用于一个session的请求必须发送到同一台机器(比如有些Service是有状态)

负载均衡默认配置(round-robin)

 

http {
    upstream loadbalancer1 {
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }

    server {
        listen 80; 

        location / {
            proxy_pass http://loadbalancer1;
        }
    }
}
  • 默认的负载均衡服务器采用的是均衡算法是round-robin,按顺序依次处理请求
  • 以上配置将发送给Nginx的所有请求转发给代理服务器loadbalancer1,而loadbalancer1是一个配置了三个server的集群环境,每个请求由srv1,srv2,srv3中的一台机器来处理

 

负载均衡配置(最少链接)

 

http {
    upstream loadbalancer1 {
        least_conn;
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }

    server {
        listen 80; 

        location / {
            proxy_pass http://loadbalancer1;
        }
    }
}
Least-Connected均衡策略适用于请求的场景是有些请求时间长,有些请求时间很多,这样,每次分发时,可以将请求分发到由于执行时间短而空闲的机器
 

负载均衡配置(IP Hash)

 

http {
    upstream loadbalancer1 {
        ip_hash;
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }

    server {
        listen 80; 

        location / {
            proxy_pass http://loadbalancer1;
        }
    }
}
ip_hash均衡策略适用于,将一个客户端(来自同一个IP)的连续请求发送到同一个机器上,这样间接的实现了session保持的功能

 

负载均衡加权配置

http {
    upstream loadbalancer1 {
        server srv1.example.com;
        server srv2.example.com weight=3;
        server srv3.example.com;
    }

    server {
        listen 80; 

        location / {
            proxy_pass http://loadbalancer1;
        }
    }
}

 

通过weight指令,可以为某台机器设置一个权重,如果一个机器的权重设置的比较高,那么这台机器响应请求的可能性就会相应的变大。这通常适用于几台机器的性能不同,让性能好的机器多处理一些请求,让性能差的机器少处理一些请求

说明

上面的配置是针对默认的round-robin的,假如有5个请求来,那么srv1和srv3每个分到一个请求,而srv2将分得3个请求。从这个角度上看,对于round-robin均衡下的weight,应该是用了类似虚拟节点的概念,给srv2分配三个虚拟节点

如果是ip_hash的那么加上weight之后会影响hash算法的计算,因此基于ip_hash的负载均衡,一开始没加weight,后来加了,则会应用ip hash结果,即本来由srv处理的请求结果变成有srv2处理了,在这种情况下,通过reload不停机的方法加载weight选项,可能会导致一些问题

 

 

 

 

 

 

 

 

【Nginx四】Nginx作为HTTP负载均衡服务器

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
  一个最简单的负载均衡测试,不涉及到session复制,只是将请求分配到不同的服务器上去而已。 1、
 前言:本文是我撰写的关于搭建“Nginx + PHP(FastCGI)”Web服务器的第6篇文章。本系列文章作为
 前言:本文是我撰写的关于搭建“Nginx + PHP(FastCGI)”Web服务器的第6篇文章。本系列文章作为
nginx配置tomcat负载均衡 nginx可以作为Web前置机,将客户请求按照一定算法合理分配给后置的tomcat
先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可以解释N台服务器平均分担负载,不会因
大家都知道,一个域名对应一个IP地址,而一个WebSite则对应一个IP地址上对应端口服务的应用程序(或
摘要:对于一个大型网站来说,负载均衡是永恒的话题。随着硬件技术的迅猛发展,越来越多的负载均衡
摘要:对于一个大型网站来说,负载均衡是永恒的话题。随着硬件技术的迅猛发展,越来越多的负载均衡
本文由秀依林枫提供友情赞助,首发于烂泥行天下。 今天我们来学习下有关nginx的负载均衡配置。nginx
nginx强大的web服务器,还是反向代理服务器,而且nginx还可以按照调度规则实现动态、静态页面的分离
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号