美文网首页
nginx模块之ngx_http_upstream_module

nginx模块之ngx_http_upstream_module

作者: 小尛酒窝 | 来源:发表于2018-05-22 22:45 被阅读0次

    前言

    nginx服务支持负载均衡,分别可以对七层资源和四层资源进行负载均衡调度。其中nginx实现七层资源调度时所使用的模块为ngx_http_upstream_module,实现四层资源调度时使用的模块为ngx_stream_core_module。下面我们来看看这两个模块的指令使用和相关示例。

    ngx_http_upstream_module

    此模块用于定义能够被proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass和memcached_pass配置段所引用的服务器组。
    - 1、upstream name { ... }
    配置段:http
    此指令为一个上下文配置段,用于定义能后端服务器组,此服务器组能够被proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass和memcached_pass所调用。
    示例:

    upstream httpdsrvs {
        server 10.10.10.11:80;
        server  10.10.10.12:80;
        ...
    }
    

    - 2、server address [parameters];
    配置段: upstream
    此指定用于在上下文中定义后端服务器成员以及相关的参数。
    其中address的表示格式为可使用下列三种格式:

    unix:/PATH/TO/SOME_SOCK_FILE
    IP[:PORT]
    HOSTNAME[:PORT]

    parameters参数包括:

    weight=number
        权重,默认为1;
    max_fails=number
        失败尝试最大次数;超出此处指定的次数时,server将被标记为不可用,默认为1;
    fail_timeout=time
        设置将服务器标记为不可用状态的超时时长;
    max_conns=number
        当前的服务器的最大并发连接数;
    backup
        将服务器标记为“备用”,即所有服务器均不可用时此服务器才启用;
    down
        标记为“不可用”;
    

    - 3、least_conn;
    配置段: upstream
    在指定的服务器组中启动最少连接调度算法,请求被发送到激活连接数最少的服务器,当设置了权重时,相当于WLC加权最少连接调度算法;默认nginx负载均衡的调度算法为轮询。
    示例:

    upstream backend {  
        least_conn;  
      
        server backend1.example.com;  
        server backend2.example.com;  
    }  
    

    - 4、ip_hash;
    配置段: upstream
    在指定的服务器组中使用源地址hash调度方法;来自同一个IP地址的请求统一被分配到同一个server响应,相当于lvs的sh调度算法。

    - 5、hash key [consistent];
    配置段:upstream
    基于指定的key的hash表来实现对请求的调度,此处的key可以直接文本、变量或二者的组合;能够将请求分类,同一类请求将发往同一个后端服务器 。
    示例:

    hash $request_uri consistent;
    hash $remote_addr;
    

    - 6、keepalive connections;
    配置段:upstream
    设置为每个nginx worker进程保留的空闲的长连接数量。
    示例1:

    upstream http_backend {
        server 127.0.0.1:8080;
    
        keepalive 16;
    }
    

    示例2:

    #对于fastcgi服务器来说,keepalive要结合fastcgi_keep_conn指令一起使用才能生效
    upstream fastcgi_backend {
        server 127.0.0.1:9000;
    
        keepalive 8;
    }
    
    server {
        ...
    
        location /fastcgi/ {
            fastcgi_pass fastcgi_backend;
            fastcgi_keep_conn on;
            ...
        }
    }
    
    upsteam模块的综合示例:
    ##在/etc/nginx/nginx.conf文件中配置:
        upstream websrvs {
                ip_hash;
                server 10.10.10.11:80 weight=2 down;
                server 10.10.10.12:80 weight=1 fail_timeout=1 max_fails=3;
                server 127.0.0.1:80 backup;
            }
    
    #在server配置段:
    server {
            listen 80;
            server_name www.ilinux.io;
            location / {
                    root /data/nginx/html;
                    proxy_pass http://websrvs;
            }
    }
    

    ngx_stream_core_module

    此模块用于模拟反代基于tcp或udp的服务连接,即工作于四层传输层的反代或调度器。
    - 1、stream { ... }
    配置段:main
    用于定义与stream的相关服务。
    示例:

    #可在一个stream中配置upstream服务器组和server配置段
    stream {
        upstream sshsrvs {
            server 192.168.22.2:22; 
            server 192.168.22.3:22; 
            least_conn;
        }
        server {
            listen 10.1.0.6:22022;
            proxy_pass sshsrvs;
        }
    }
    

    其他的指令与其他模块所使用的指令类似。

    详细的指令使用可参考链接:http://nginx.org/en/docs/stream/ngx_stream_core_module.html#proxy_protocol_timeout

    相关文章

      网友评论

          本文标题:nginx模块之ngx_http_upstream_module

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