nginx负载均衡策

1、轮询(默认)

轮询(Round-Robin,RR):默认情况下Nginx服务器实现负载均衡的算法就是轮询,轮询策略按照顺序选择组内服务器处理请求。如果一个服务器在处理请求的过程中出现错误,请求会被顺次交给组内的下一个服务器进行处理,以此类推,直到返回正常的响应为止。但如果所有的组内服务器都出错,则返回最后一个服务器的处理结果。

    upstream myserver{
     	server 192.168.1.100:8080;
        server 192.168.1.101:8080;
    }

2、weight

加权轮询(Weighted Round-Robin,WRR):为组内服务器设置权重,权重值高的服务器被优先用于处理请求。此时组内服务器的选择策略为加权轮询。组内所有服务器的权重默认设置为1,即采用轮询处理请求。

​    upstream myserver{
     	server 192.168.1.100:8080 weight=1;
        server 192.168.1.101:8080 weight=2;
    }

3、ip_hash

ip_hash用于实现会话保持功能,将某个客户端的多次请求定向到组内同一台服务器上,保证客户端与服务器之间建立稳定的会话。只有当服务器处于无效(down)的状态时,客户端请求才会被下一个服务器接收和处理。注意:使用ip_hash后不能使用weight,ip_hash和主要根据客户端IP地址分配服务器,因此在整个系统中,Nginx服务器应该是处于最前端的服务器,这样才可以获取到客户端IP地址,否则它得到的IP地址将是位于它前面的服务器地址,从而就会产生问题。

​    upstream myserver{
        ip_hash;
     	server 192.168.1.100:8080;
        server 192.168.1.101:8080;
    }

4、least_conn

lease_conn用于为网络连接分配服务器组内的服务器,在功能上实现了最小连接数负载均衡算法,在选择组内的服务器时,考虑各服务器权重的同时,每次选择的都是当前网络连接最少的那台服务器,如果这样的服务器有多台,就采用加权轮询选择权重值大的服务器。

​    upstream myserver{
        least_conn;
     	server 192.168.1.100:8080 weight=1;
        server 192.168.1.101:8080 weight=2;
    }

第三方

Nginx扩展第三方模块后得到的算法:fair、url_hash等

1、fair

用于为响应时间分配服务器组内的服务器,他是按后端服务器的响应时间来分配请求,响应时间越短的越优先分配,需要第三方模块的支持nginx-upstream-fair-master

upstream myserver {
    fair;
    server 192.168.1.101:8080;
    server 192.168.1.102:8080;
}

2、url_hash

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。注意:使用hash后不能使用weight。需要第三方模块的支持ngx_http_upstream_hash_module

upstream myserver {
    server 192.168.1.101:8080;
    server 192.168.1.102:8080;
    hash $request_uri;
    hash_method crc32;
}
发布了21 篇原创文章 · 获赞 6 · 访问量 847

猜你喜欢

转载自blog.csdn.net/BOOM_haha/article/details/103353636
今日推荐