Nginx 负载均衡分析

阿里 阅读:281 2021-03-31 18:10:26 评论:0

Nginx 负载均衡配置:

upstream tomcats { 
    server 127.0.0.1:9001; 
    server 127.0.0.1:9002; 
}

配置location为tomcat集群

location / { 
    proxy_pass_header Server; 
    proxy_set_header Host $http_host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Scheme $scheme; 
    proxy_pass http://tomcats; 
}

upstream还可以为每个设备设置状态值,这些状态值的含义分别如下:

down:表示单前的server暂时不参与负载.
weight:默认为1.weight越大,负载的权重就越大。
max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误.
fail_timeout : max_fails次失败后,暂停的时间。
backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

upstream tomcats{ 
      server 127.0.0.1:9001 down; 
      server 127.0.0.1:9002 backup; 
      server 127.0.0.1:9003 weight=2; 
      server 127.0.0.1:9004 max_fails=2 fail_timeout=60s;    
}

分配策略
none(轮询)
upstream按照轮询(默认)方式进行负载,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。虽然这种方式简便、成本低廉。但缺点是:可靠性低和负载分配不均衡。

weight(权重)
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。例如


server 192.168.61.22 weight = 6; # 60% 请求
server 192.168.61.23 weight = 4; # 40% 请求
ip_hash(访问ip)
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

配置只需要在upstream中加入ip_hash;即可。


upstream tomcats {
      ip_hash;
      server 127.0.0.1:9001;
      server 127.0.0.1:9002;
}
fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。与weight分配策略类似。


upstream tomcats {
      server 127.0.0.1:9001;
      server 127.0.0.1:9002;
      fair;
}
url_hash(第三方)
和IP哈希类似,只不过针对请求的url进行hash(基于缓存的server,页面静态化)。

 

Nginx 负载均衡模板:

upstream tomcats{ 
  server 127.0.0.1:8002 weight=5; 
  server 127.0.0.1:8003 weight=5; 
} 
 
server { 
    listen 80; 
    server_name  www.lianggzone.com; 
 
    location / { 
        proxy_pass  http://tomcats; 
 
        #Proxy Settings 
        proxy_redirect     off; 
        proxy_set_header   Host             $host; 
        proxy_set_header   X-Real-IP        $remote_addr; 
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for; 
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 
        proxy_max_temp_file_size 0; 
        proxy_connect_timeout      90; 
        proxy_send_timeout         90; 
        proxy_read_timeout         90; 
        proxy_buffer_size          4k; 
        proxy_buffers              4 32k; 
        proxy_busy_buffers_size    64k; 
        proxy_temp_file_write_size 64k; 
   } 
} 

 

声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
KIKK导航

KIKK导航

排行榜
关注我们

一个IT知识分享的公众号