首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

nginx负载均衡与调度算法

本公众号内容大多由平时操作整理记录,如果有错误的地方欢迎留言指正

nginx负载均衡

nginx的负载均衡功能是通过upstream命令实现的,由ngx_http_upstream_module模块支持,它的负载均衡实现机制比较简单,容易理解。相比LVS,nginx负载均衡默认后端服务器具有健康状检测功能,检测方式是基于端口检测,在后端服务器比较少的情况下性能突出,如果后端负载节点比较多,所有的请求都从一台代理服务器进出,容易造成请求阻塞,这种情况可以在nginx代理服务前端增加一层LVS进行分流,nginx代理做多节点来缓解。

nginx负载均衡算法

1:轮询(默认的模式),每个请求按时间顺序逐一分配到不同的服务器,如果后端某台服务器死机,自动剔除故障系统使用户使用不受影响。

2:权重(weight),指定轮询的权值,weigth值越大,分配到访问的概率就越高,只要用于后端服务器性能不均衡的情况下。

3:ip_hash,每个请求按访问ip的哈希结果分配,这样来自同一ip的访客固定访问一台后端服务器。能够有效解决动态网页存在的session共享问题。

4:least_conn 最少连接调度算法,同时考虑服务器的权重,当server拥有不同的权重时其为wlc,当所有后端主机连接数相同时,则使用wrr,适用于长连接

5:hash key [consistent] 基于指定的key的hash表来实现对请求的调度,此处的key可以直接文本、变量或二者组合

作用:将请求分类,同一类请求将发往同一个upstream server,key值可以用remote_addr,

当使用consistent参数时,将启用ketama一致性hash算法,适用于后端是Cache服务器(如varnish)时使用hashremote_addr consistent;

在http upstream模块中,可以通过server指令指定后端服务器的ip地址和端口,同时还可以设定每台后端服务器在负载均衡中的状态。

upstream中可附加指令

1:down,表示当前的server不参与负载均衡。

2:backup,预留的备份机,当其他所有非backup的机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。

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

4: fail_timeout,在经历了max_fails次失败后,暂停服务的时间,max_fails可以和fail_timeout一起使用。

5: keepalive 连接数N; 为每个worker进程保留的空闲的长连接数量,可节约nginx端口,并减少连接管理的消耗

配置负载均衡

轮询负载

http段设置

server 段设置

测试

加权轮询

http段

将192.168.214.133 权重设为3

测试

ip_hash

测试

least_conn最少连接

测试

hash key:一致性hash

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180714G1H2WW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券