专栏首页开源部署Nginx的五种负载均衡策略
原创

Nginx的五种负载均衡策略

要理解负载均衡,必须先搞清楚正向代理和反向代理。

负载均衡的几种常用方式

1、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

upstream backserver {
    server 192.168.0.14;
    server 192.168.0.15;
}

2、weight

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的 情况。

upstream backserver {
    server 192.168.0.14 weight=3;
    server 192.168.0.15 weight=7;
}

权重越高,在被访问的概率越大,如上例,分别是30%,70%。

3、ip_hash

上述方式存在一个问题就是说,在负载均衡系统中,假如用户在某台服务器上登录了,那么该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样显然是不妥的。 我们可以采用ip_hash指令解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题

upstream backserver {
    ip_hash;
    server 192.168.0.14:88;
    server 192.168.0.15:80;
}

4、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream backserver {
    server server1;
    server server2;
    fair;
}

5、url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个(对应的)后端服务器,后端服务器为缓存时比较有效。

upstream backserver {
    server squid1:3128;
    server squid2:3128;
    hash $request_uri;
    hash_method crc32;
}

在需要使用负载均衡的server中增加

proxy_pass http://backserver/; 
upstream backserver{ 
    ip_hash; 
    server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载) 
    server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大) 
    server 127.0.0.1:6060; 
    server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器) 
} 

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

fail_timeout:max_fails次失败后,暂停的时间 配置实例:

#user  nobody;

worker_processes  4;
events {
# 最大并发数
worker_connections  1024;
}
http{
    # 待选服务器列表
    upstream myproject{
        # ip_hash指令,将同一用户引入同一服务器。
        ip_hash;
        server 125.219.42.4 fail_timeout=60s;
        server 172.31.2.183;
    }

    server{
        # 监听端口
        listen 80;
        # 根目录下
        location / {
        # 选择哪个服务器列表
            proxy_pass http://myproject;
        }

    }

原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

登录 后参与评论
0 条评论

相关文章

  • Nginx负载均衡策略

    加入同一时刻有10个request,那么该集群的处理顺序就是:server1、server2、server1、server2、server1、server2.....

    用户2409797
  • Nginx负载均衡策略

    在服务器集群中,Nginx 起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器。

    Li_XiaoJin
  • nginx 负载均衡策略

    1. 轮询 轮询方式是nginx负载均衡的默认策略,根据每个server的权重值来轮流发送请求,例如: upstream backend { server...

    dys
  • [日常] nginx与负载均衡策略

    陶士涵
  • Nginx负载均衡配置与负载策略

    负载均衡的目的是为了解决单个节点压力过大,造成Web服务响应过慢,严重的情况下导致服务瘫痪,无法正常提供服务。

    全栈程序员站长
  • Nginx多种负载均衡策略搭建

    上篇介绍了利用Nginx反向代理实现负载均衡,本文详细讲述Nginx下的几种负载均衡策略。

    平也
  • nginx负载均衡的5种策略

    1、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 参数:

    小黑吖
  • nginx负载均衡的5种策略

    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

    leon公众号精选
  • Nginx 负载均衡配置和策略

    Nginx 的 HttpUpstreamModule 提供对后端(backend)服务器的简单负载均衡。一个最简单的 upstream 写法如下:

    双面人
  • Nginx负载均衡的5种策略(转载)

    本文转自:nginx负载均衡的5种策略(转载) 如需转载请注明出处:https://www.cnblogs.com/zhuchenglin/p/9750970...

    lin_zone
  • nginx实现负载均衡的原理及策略

    负载均衡在服务端开发中算是一个比较重要的特性。因为Nginx除了作为常规的Web服务器外,还会被大规模的用于反向代理前端,因为Nginx的异步框架可以处理很大的...

    菲宇
  • Nginx专题(2):Nginx的负载均衡策略及其配置

    前篇Nginx专题(1):Nginx之反向代理及配置详细介绍了Nginx功能之一——反向代理。本篇文章将重点介绍Nginx功能之二——负载均衡。

    宜信技术学院
  • 负载均衡策略

    1. HTTP重定向 当用户发来请求的时候,Web服务器通过修改HTTP响应头中的Location标记来返回一个新的url,然后浏览器再继续请求这个新url,...

    dys
  • Nginx 负载均衡配置和策略「建议收藏」

    Nginx 的 HttpUpstreamModule 提供对后端(backend)server的简单负载均衡。一个最简单的 upstream 写法例如以下:

    全栈程序员站长
  • Nginx的负载均衡

    我们都知道,Nginx支持负载均衡,可以很方便的帮助我们进行水平扩容,然而它究竟是依据什么原则进行请求的分发,其中又有哪些负载均衡算法可供选择和配置,今天就让我...

    健程之道
  • nginx 负载均衡

    cnblogs有不少介绍的文章了: http://zzk.cnblogs.com/s?w=nginx%20%E8%B4%9F%E8%BD%BD%E5%9D%87...

    JadePeng
  • Nginx的负载均衡

    分摊到多个操作单元上进行执行,和它的英文名称很匹配。就是我们需要一个调度者,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡...

    李昂君
  • Nginx负载均衡

    在大型网站中,负载均衡是有想当必要的。尤其是在同一时间访问量比较大的大型网站,例如网上商城,新闻等CMS系统,为了减轻单个服务器的处理压力,我们引进了负载均衡这...

    业余草

扫码关注腾讯云开发者

领取腾讯云代金券