Nginx负载均衡配置

1、RR(默认)权重轮询

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
例如:
upstream tomcats {
server 192.168.1.1:8080  max_fails=3 fail_timeout=3s weight=9;
server 192.168.1.2:8080  max_fails=3 fail_timeout=3s weight=1;
}
那么10次一般只会有1次会访问到8080,而有9次会访问到8080

2、ip_hash

上面的2种方式都有一个问题,那就是下一个请求来的时候请求可能分发到另外一个服务器,当我们的程序不是无状态的时候(采用了session保存数据),这时候就有一个很大的很问题了,比如把登录信息保存到了session中,那么跳转到另外一台服务器的时候就需要重新登录了,所以很多时候我们需要一个客户只访问一个服务器,那么就需要用iphash了,iphash的每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

    upstream test {
        ip_hash;
        server 192.168.1.1:8080;
        server 192.168.1.2:8080;
    }

3、fair(第三方)

需要安装第三方的fair插件才能配置使用
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

    upstream backend { 
        fair; 
        server 192.168.1.1:8080;
        server 192.168.1.2:8080;
server 192.168.1.3:8080 backup;#设置为备用主机
    } 

4、url_hash(第三方)

需要安装第三方的url_hash插件才能配置使用
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法
    upstream backend { 
        hash $request_uri; 
        hash_method crc32; 
        server 192.168.1.1:8080;
        server 192.168.1.2:8080;

    } 


每个设备的状态设置为:
1.down 表示单前的server暂时不参与负载
2.weight 默认为1.weight越大,负载的权重就越大。
3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4.fail_timeout:max_fails次失败后,暂停的时间。
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
要注意的是 weight 与 ip_hash 是不能同时使用的,原因很简单,他们是不同且彼此冲突的策略。
以上4种负载均衡各自适用不同情况下使用,所以可以根据实际情况选择使用哪种策略模式,不过fair和url_hash需要安装第三方模块才能使用。


下面是一个完整的nginx的配置样例:

[plain]  view plain  copy
  1. #user  nginx;#windows下可以不配置,但是linux下必须配置,不然没有访问权限。你使用用户nginx启动nginx,就配置为user nginx  
  2. worker_processes  8;#工作线程数量,可以配置为CPU的数量  
  3.   
  4. error_log  logs/error.log;#错误日志输出文件  
  5. #error_log  logs/error.log  notice;  
  6. #error_log  logs/error.log  info;  
  7.   
  8. #pid        logs/nginx.pid;#指定进程ID,方便在部署环境的时候写脚本去管理进程  
  9.   
  10.   
  11. events {  
  12.     worker_connections  1024;#配置的最大并发连接数量  
  13. }  
  14. upstream tomcats {  
  15. server 192.168.1.1:8080  max_fails=3 fail_timeout=3s weight=9;  
  16. server 192.168.1.2:8080  max_fails=3 fail_timeout=3s weight=1;  
  17. }  
  18.   
  19. http {  
  20.     include       mime.types;  
  21.     default_type  application/octet-stream;  
  22.   
  23.     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  
  24.     #                  '$status $body_bytes_sent "$http_referer" '  
  25.     #                  '"$http_user_agent" "$http_x_forwarded_for"';  
  26.   
  27.     #access_log  logs/access.log  main;#运行日志,默认在这个日志文件,可以修改。  
  28.   
  29.     sendfile        on;  
  30.     #tcp_nopush     on;  
  31.   
  32.     #keepalive_timeout  0;  
  33.     keepalive_timeout  65;#设置连接超时时间  
  34.   
  35.     #gzip  on;  
  36.     #配置一个虚拟的server服务器  
  37.     server {  
  38.         listen       8880;#监听端口  
  39.         server_name  localhost;#主机名称  
  40.         #charset koi8-r;  
  41.         #access_log  logs/host.access.log  main;  
  42.         location / {  
  43.             root   html;  
  44.             proxy_pass http://tomcats;  
  45.             index  index.html index.htm;  
  46.         }  
  47.         location /home {  
  48.             rewrite "^/home/(.+)" /test/$1 last;  
  49.         }  
  50.        location /Test {  
  51.            proxy_pass http://192.168.1.1:8080/TestServlet;  
  52.        }  
  53.         #error_page  404              /404.html;  
  54.   
  55.         # redirect server error pages to the static page /50x.html  
  56.         #  
  57.         error_page   500 502 503 504  /50x.html;  
  58.         location = /50x.html {  
  59.             root   html;  
  60.         }  
  61.     }  
  62.     include servers/*;  
  63. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值