美文网首页
nginx 反向代理实现负载均衡

nginx 反向代理实现负载均衡

作者: 青缘1990 | 来源:发表于2019-05-28 17:44 被阅读0次

docker 快速安装nginx 

 设置需要代理的从服务器信息  可填多个 

  本机nginx配置  /etc/nginx/conf.d/nginx.conf

请求转发到 upstream cluster 分发  

upstream模块相关说明

upstream模块应放于nginx.conf配置的http{}标签内

upstream模块默认算法是wrr (权重轮询 weighted round-robin)

一、分配方式

Nginx的upstream支持5种分配方式,下面将会详细介绍,其中前三种为Nginx原生支持的分配方式,后两种为第三方支持的分配方式。

1. 轮询

轮询是upstream的默认分配方式,即每个请求按照时间顺序轮流分配到不同的后端服务器,如果某个后端服务器down掉后,能自动剔除。

upstream backend {

    server 192.168.1.101:8888;

    server 192.168.1.102:8888;

    server 192.168.1.103:8888;

}

2. weight权重

轮询的加强版,即可以指定轮询比率,weight和访问几率成正比,主要应用于后端服务器异质的场景下。

upstream backend {

    server 192.168.1.101 weight=1;

    server 192.168.1.102 weight=2;

    server 192.168.1.103 weight=3;

}

3. ip_hash

每个请求按照访问ip(即Nginx的前置服务器或者客户端IP)的hash结果分配,这样每个访客会固定访问一个后端服务器,可以解决session一致问题。

upstream backend {

    ip_hash;

    server 192.168.1.101:7777;

    server 192.168.1.102:8888;

    server 192.168.1.103:9999;

}

注意:

当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup。

导致负载不均衡。

4. fair

fair顾名思义,公平地按照后端服务器的响应时间(rt)来分配请求,响应时间短即rt小的后端服务器优先分配请求。如果需要使用这种调度算法,必须下载Nginx的upstr_fair模块。

upstream backend {

    server 192.168.1.101;

    server 192.168.1.102;

    server 192.168.1.103;

    fair;

}

5. url_hash

目前用consistent_hash替代url_hash

与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景下。

upstream backend {    server 192.168.1.101;    server 192.168.1.102;    server 192.168.1.103;hash$request_uri;    hash_method crc32;}

其中,hash_method为使用的hash算法,需要注意的是:此时,server语句中不能加weight等参数。

提示:url_hash用途cache服务业务,memcached,squid,varnish。特点:每个rs都是不同的。

相关文章

网友评论

      本文标题:nginx 反向代理实现负载均衡

      本文链接:https://www.haomeiwen.com/subject/wpxjtctx.html