随着业务和用户不断增加,单台服务器无法满足业务需求,产生服务器集群的场景。为了能充分利用服务器集群,最理想的方式就是整个集群的利用率都很平均且稳定在理想值范围内。

负载均衡(Load Balance)就是为了满足能够均衡的利用整个服务器集群从而产生的一种算法 ,常见的实现策略有:随机、轮询、哈希、一致性哈希和加权。

nginx目前比较常用的模块有:

1. 轮询

定义:依次把客户端请求分配到不同的服务器中

配置示例:

upstream zhangQ { server ip1:port1; server ip2:port2;
}server {listen       80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { proxy_pass http://zhangQ; }}

2. 最少连接

定义:把客户端请求分配到连接数最少的服务器中

如果每台服务器处理业务的时间都一样,那么此策略与轮询差不多。

如果每台服务器处理业务的时间不一样,那么采用轮询算法会导致业务逻辑处理较慢的服务器压力越来越大负载较高,这样的业务场景,把客户端请求分配到连接数较少的服务器能达到更好的负载效果。

配置示例:

upstream zhangQ { least_conn; #实际就是比轮询多这一行server ip1:port1; server ip2:port2;
}server {listen       80;server_name  localhost;#charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { proxy_pass http://zhangQ; } }

3. ip_hash

定义:把访问的客户端的ip利用hash算法计算为一个数值,同一个数值会落到相同的服务器。

涉及到负载均衡基本上都会设计到session的保持,但使用ip_hash就不需要关注这个问题。

配置示例:

upstream zhangQ { ip_hash; #实际就是比轮询多这一行server ip1:port1; server ip2:port2;
}server {listen       80;server_name  localhost;#charset koi8-r;#access_log  /var/log/nginx/host.access.log  main;location / {proxy_pass http://zhangQ;
    }
}

4. weight

定义:权重实际就是加权轮询,根据加权值会优先分配到权重高的服务器

服务器基本都是配置不一,高配置服务器通常都会比低配置服务器赋予较高的权重值。

配置示例:

upstream zhangQ { server ip1:port1 weight=3; #加上weightserver ip2:port2 weight=1;
}server {listen       80;server_name  localhost;#charset koi8-r;#access_log  /var/log/nginx/host.access.log  main;location / {proxy_pass http://zhangQ;
    }
}

如果按照如上配置,就是每4次客户端请求,会有3次落在ip1上,1次落在ip2上。

附上upstream中常用的几个属性配置:

名称 定义 示例
fail_timeout 可以理解为熔断时间,经过这个配置的时间如果服务器没响应则失败 fail_timeout=2s
max_fails 最大失败数,默认值是1,当超过最大次数时,返回proxy_next_upstream模块定义的错误. max_fails=2
down 有此标记的服务器不参与负载  
backup 当所有非backup服务器忙或者down的时候会请求这台服务器  

转载于:https://www.cnblogs.com/zqyx/p/10179785.html

nginx通过upstream实现负载均衡相关推荐

  1. Nginx配置upstream实现负载均衡

    假设Nginx没有只只能代理一台服务器的话,那它也不可能像今天这么火.Nginx能够配置代理多台服务器.当一台服务器宕机之后.仍能保持系统可用.详细配置步骤例如以下: 1. 在http节点下,加入up ...

  2. 【upstream】Nginx配置upstream实现负载均衡

    如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...

  3. nginx的upstream实现负载均衡自带坏点自动剔除功能

    tengine的话,需要用2.2.0版本,自带nginx_upstream_check_module模块:如果用的nginx1.12.1的话,下载一下这个模块再编译安装之. https://githu ...

  4. Nginx面试三连问:Nginx如何工作?负载均衡策略有哪些?如何限流?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 1.什么是Nginx,谈谈个人都理解,项目中是否用到,为什 ...

  5. 懂点 Nginx 反向代理与负载均衡,是面试加分项没有之一

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 学到老活到老 前端圈一直很新,一直要不停的学习,而且在进入大厂的路上,还要求熟悉一门后台语言等等 ...

  6. 介绍下Nginx 反向代理与负载均衡

    Nginx的代理功能与负载均衡功能是最常被用到的,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Nginx 代理服务的配置说明 1.设置 404 页面导向地址 error_pag ...

  7. 【Nginx】面试官:给我讲讲Nginx如何实现四层负载均衡?

    写在前面 这次又被问到Nginx四层负载均衡的问题了,别慌,我们一起来细细分析这个看似简单的问题. 负载均衡可以分为静态负载均衡和动态负载均衡,接下来,我们就一起来分析下Nginx如何实现四层静态负载 ...

  8. Nginx反向代理以及负载均衡配置

    一 .nginx 的优缺点: nginx 相对 apache 的优点: 轻量级,同样起web 服务,比apache 占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则 ...

  9. PCB 使用Nginx让IIS7实现负载均衡

    在PCB行业众多系统中PCB工程系统是主要的数据生产者, 它与外部系统数据交互是最多的,经统计接口数超过100个之多;这么多接口调用与管理起来是混乱的,所以今年年初对工程集成方式改造,将原来的点对点的 ...

  10. nginx实现请求的负载均衡 + keepalived实现nginx的高可用

    前言 使用集群是网站解决高并发.海量数据问题的常用手段.当一台服务器的处理能力.存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求.这种 ...

最新文章

  1. 一文详述Attention最新进展
  2. Diango 模板层
  3. uniapp一键登陆(php)
  4. 快捷方式修复_Mac上的屏幕截图不起作用该如何修复?
  5. 搞定Server 2008蓝牙问题
  6. Django视图层:视图函数、视图类
  7. linux centos 6.3 下载,CentOS 6.3发布 附ISO下载地址
  8. 虚拟机搭建集群服务(1)——准备工作
  9. word2007导出pdf带书签
  10. 如何让WebStorm正常显示出中文提示,使得中文能够正常输入,请看这里
  11. 软件反破解的几个思路
  12. 怎么获取计算机的最高权限,获取win8 64位旗舰版系统最高权限的方法【图文详解】...
  13. 9.23 深度学习微调
  14. js 将图片置灰_将图片转换成黑白(灰色)的css和js的方法
  15. 安全生产危化品生产单位安全管理人员一[安考星]
  16. 尝试做个公众号,歌曲类型的,有兴趣可以关注一下
  17. 搜狗“改姓”入腾讯,输入法有变吗?
  18. 获取每个账户最大连续逾期期数
  19. 岁末南亚大劫难[图片新闻]
  20. 限制VB文本框输入的代码

热门文章

  1. python 弧度与角度互转
  2. Subarray Sum K
  3. lightslider-支持移动触摸的轻量级jQuery幻灯片插件
  4. linux ipc信号量
  5. 快速开发平台如何应用
  6. VM虚拟机,Linux系统安装tools过程遇到 what is the location of the “ifconfig” program
  7. 爬虫框架Scrapy之Spider
  8. 3GPP规范命名规则解读
  9. 为.net开发者提供的一份关于存储过程的评论(转载)
  10. [剑指offer] 42. 和为S的两个数字