nginx学习九 upstream 负载均衡

  • 语法
    Syntax: upstream name {...}
    Default:--
    Context:http

     

  • 后端服务器在负载均衡调度中的状态:
    down 当前的server暂时不参与负载均衡
    backup 预留的备份服务器
    max_fails 容许请求失败的次数
    fail_timeout 通过max_fails失败后,服务暂停的时间
    max_conns 限制最大的接收的链接数

     

  •  nginx 的调度算法:
    轮询  按时间顺序逐一分配到不一样的后端服务器
    加权轮询   weight值越大,分配到的访问概率越高
    ip_hash 每一个请求按访问IP的hash结果分配,这样来自同一个IP的请求,固定访问一个
    least_conn 最少链接数,哪一个机器链接数少就分发
    url_hash 按照访问的URL的hash结果来分配请求,是每一个URL定向到同一个后端服务器
    hash关键数值 hash自定义的key

     

  • 例 /etc/nginx/conf.d/default.con
    server {
        listen       8001;
        server_name  localhost;
    
        #charset koi8-r;
        access_log  /var/log/nginx/server.access.log  main;
    
        location / {
            root   /opt/app/code1;
            index  index.html index.htm;
        }
    ... ...
    }
    
    server {
        listen       8002;
        server_name  localhost;
    
        #charset koi8-r;
        access_log  /var/log/nginx/server.access.log  main;
    
        location / {
            root   /opt/app/code2;
            index  index.html index.htm;
        }
    ... ...
    }
    
    server {
        listen       8003;
        server_name  localhost;
    
        #charset koi8-r;
        access_log  /var/log/nginx/server.access.log  main;
    
        location / {
            root   /opt/app/code3;
            index  index.html index.htm;
        }
    ... ...
    }
    
    
    server {
        listen       80;
        server_name  localhost;
    
        #charset koi8-r;
        access_log  /var/log/nginx/test_proxy.access.log  main;
    
        location / {
            proxy_pass http://test_upstream;
        }
    ... ...
    }
    
    
    ##普通轮询
    upstream test_upstream {
    	server localhost:8001;
    	server localhost:8002;
    	server localhost:8003;
    }

     

  • 加权轮询
    upstream test_upstream {
        server localhost:8001;
        server localhost:8002 weight=5;
        server localhost:8003;
    }

     

  • 备份节点 
    upstream test_upstream {
        server localhost:8001 down; 
        server localhost:8002 backup;
        server localhost:8003 max_fails=1 fail_timeout=10s;
    }

     

  • ip_hash 
    upstream test_upstream {
    	ip_hash;
    	server localhost:8001; 
    	server localhost:8002;
    	server localhost:8003;
    }

     

  • url_hash  语法(1.7.2版本开始)
    Syntax: hash key [consistent];
    Default: --
    Context: upstream
    ##例:
    upstream test_upstream {
    	hash $request_uri;
    	server localhost:8001; 
    	server localhost:8002;
    	server localhost:8003;
    }
     
相关文章
相关标签/搜索