Nginx负载均衡的几种常见策略

负载均衡也是Nginx常用的一个功能,负载均衡其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

简单而言就是当有2台或以上服务器时,根据规则随机的将请求分发到指定的服务器上处理,负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡。而Nginx目前支持自带3种负载

均衡策略,还有2种常用的第三方策略。

1.RR(默认)

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

upstream test {
        server localhost:8080;
        server localhost:8081;
}

server {
  listen       81;
  server_name  localhost;
  client_max_body_size 1024M;

  location / {
    proxy_pass http://test;
    proxy_set_header Host $host:$server_port;
  }
}

Remark:

这里我配置了2台服务器,实际上也可能只有一台,只是端口不一样而已,如果服务器处于不能访问(服务器挂了),就不会跳转到这台服务器,所以也避免了一台服务器挂了影响使用的情况,由于Nginx默认是RR策略,所以我们不需要其他更多的设置

2.权重

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

upstream test {
        server localhost:8080 weight=9;
        server localhost:8081 weight=1;
}

3.ip_hash

upstream test {
    ip_hash;
    server localhost:8080;
    server localhost:8081;
}

Remark:上面的2种方式都有一个问题,那就是下一个请求来的时候请求可能分发到另外一个服务器,当我们的程序不是无状态的时候(采用了session保存数据),这时候就有一个很大的很问题了,比如把登录信息保存到了session中,那么跳转到另外一

台服务器的时候就需要重新登录了,所以很多时候我们需要一个客户只访问一个服务器,那么就需要用iphash了,iphash的每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

4.fair(第三方)

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

upstream backend {
        fair;
        server localhost:8080;
        server localhost:8081;
}

5.url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法

upstream backend {
        hash $request_uri;
        hash_method crc32;
        server localhost:8080;
        server localhost:8081;
}

以上5种负载均衡各自适用不同情况下使用,所以可以根据实际情况选择使用哪种策略模式,不过fair和url_hash需要安装第三方模块才能使用

原文地址:https://www.cnblogs.com/mr-wuxiansheng/p/12567810.html

时间: 2024-11-07 11:39:34

Nginx负载均衡的几种常见策略的相关文章

nginx负载均衡的5种策略

nginx可以根据客户端IP进行负载均衡,在upstream里设置ip_hash,就可以针对同一个C类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个. nginx的upstream目前支持的5种方式的分配 1.轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. upstream backserver { server 192.168.0.14; server 192.168.0.15; } 2.指定权重指定轮询几率,weigh

nginx负载均衡的5种策略(转载)

nginx可以根据客户端IP进行负载均衡,在upstream里设置ip_hash,就可以针对同一个C类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个. nginx的upstream目前支持的5种方式的分配 1.轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. upstream backserver { server 192.168.0.14; server 192.168.0.15; } 2.指定权重指定轮询几率,weigh

Nginx负载均衡的四种模式

1.轮询 轮询即Round Robin,根据Nginx配置文件中的顺序,依次把客户端的Web请求分发到不同的后端服务器. 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. pstream webapp { server server2; server server1; } 2.最少连接 Web请求会被转发到连接数最少的服务器上.least_conn算法很简单,首选遍历后端集群,比较每个后端的conns/weight,选取该值最小的后端.如果有多个后端的conn

Nginx 负载均衡的几种方式

如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加upstream节点. upstream linuxidc {       server 10.0.6.108:7080;       server 10.0.0.85:8980; } 2.  将server节点下的location节点中的proxy_pass配置为:http:// + upstream名

每日一问:Nginx负载均衡的5种算法

轮询 每一个请求按时间顺序逐一的请求不同服务器,如果服务器挂掉,可以自动剔除. Weight 指定某一个服务器的轮询概率,用于后端服务器性能不均匀的情况. upstream bakend { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; } ip_hash 通过哈希用户请求的IP地址,将用户的请求转发到固定的服务器,这样可以解决Session的问题. upstream bakend { ip_hash; server

nginx(4)-负载均衡的5种策略及原理

nginx的upstream目前支持的5种方式的分配 1.轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. upstream backserver { server 192.168.0.14; server 192.168.0.15; } 2.指定权重指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况. upstream backserver { server 192.168.0.14 weight=8; server 192

Nginx 做负载均衡的几种轮询策略

网上看见nginx的upstream目前支持的5种方式的分配,摘录备忘. 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=10;serv

nginx 负载均衡策略

nginx 负载均衡策略 1. 轮询 轮询方式是nginx负载均衡的默认策略,根据每个server的权重值来轮流发送请求,例如: upstream backend {server backend1.example.com;server backend2.example.com;} 这种情况是每个server都使用相同的权重,默认值为1 可以手动设定权重,例如 upstream backend {server backend1.example.com weight=5;server backend

Nginx 负载均衡-加权轮询策略剖析

本文介绍的是客户端请求在多个后端服务器之间的均衡,注意与客户端请求在多个nginx进程之间的均衡相区别(Nginx根据每个工作进程的当前压力调整它们获取监听套接口的几率,那些当前比较空闲的工作进程有更多机会获取到监听套接口,从而客户端的请求到达后也就相应地被它捕获并处理).如果Nginx是以反向代理的形式配置运行,那么对请求的实际处理需要转发到后端服务器运行,如果后端服务器有多台,如何选择一台合适的后端服务器来处理当前请求,就是本文要说的负载均衡.这两种均衡互不冲突并且能同时生效. nginx不