美文网首页
Nginx配置说明

Nginx配置说明

作者: 乐楽樂 | 来源:发表于2017-06-18 19:50 被阅读459次

    upstream 配置

    upstream backend{
        server 192.168.1.11:8080 weight=1;
        server 192.168.1.12:8080 weight=2;
    }
    
    • 权重:使用weight来配置,默认为1,权重越高分配的请求就越多
      然后使用proxy_pass来处理用户请求
    location / {
        proxy_pass http://backend;
    }
    

    负载均衡算法

    负载均衡用来解决用户请求到来时如何选择upstream server,默认采用轮询round-robin

    • round-robin:轮询,以轮询方式将请求转发到上游服务器,通过配合weight配置实现基于权重的轮询
    • ip_hash:根据客户IP进行负载均衡,将相同IP负载均衡到同一个upstream server
    upstream backend{
        ip_hash;
        server 192.168.1.11:8080 weight=1;
        server 192.168.1.12:8080 weight=2;
    }
    
    • hash key [consistent]: 对某个key进行哈希或者使用一致哈希算法进行负载均衡
    哈希算法
    upstream backend{
        hash $uri 
        server 192.168.1.11:8080 weight=1;
        server 192.168.1.12:8080 weight=2;
    }
    
    哈希一致性算法
    upstream backend{
        hash $consistent_key consistent;
        server 192.168.1.11:8080 weight=1;
        server 192.168.1.12:8080 weight=2;
    }
    
    • least_conn:将请求负载均衡到最少活跃连接的上游服务器.
    • least_time:最小平均响应时间进行负载均衡(商业版提供)

    失败重试

    通过配置max_fails和max_timeout来指定每个上游服务器失败次数

    upstream backend {
        server 192.168.1.11:8080 max_fails=2 fail_timeout=10s weight=1;
        server 192.168.1.12:8080 max_fails=2 fail_timeout=10s weight=1;
    }
    
    location /{
        proxy_connect_timeout 5s;
        proxy_read_timeout 5s;
        proxy_timeout 5s;
        
        proxy_next_upstream error timeout;
        proxy_next_upstream_timeout 10s;
        proxy_next_upstream_tries 2;
        proxy_pass http://backend;
        add_header upstream_add $upstream_add;
    }
    

    TCP心跳检查

    • interval:监测时间间隔
    • fall:监测失败多少次后上游服务器被标识为不存活
    • rise:检测成功多少次后上游服务器被标识为存活,并可以处理请求
    • timeout:监测请求超时时间配置
    upstream backend{
        server 192.168.1.11:8080 weight=1;
        server 192.168.1.12:8080 weight=2;
        check interval=3000 rise=1 fall=3 timeout=2000 type=tcp;
    }
    

    HTTP心跳检查

    • check_http_send:检查时发送HTTP请求内容
    • check_http_expect_alive:服务器返回匹配响应状态码
    upstream backend{
        server 192.168.1.11:8080 weight=1;
        server 192.168.1.12:8080 weight=2;
        
        check interval=3000 rise=1 fall=3 timeout=2000 type=http;
        check_http_send "HEAD /status HTTP/1.0\r\n\r\n";
        check_http_expect_alive http_2xx http_3xx;
    }
    

    注意:检查时间间隔不能太短,否则可能因为心跳检查包太多导致服务器挂掉
    本文使用的是openresty/1.11.2.1(对应nginx-1.11.2),安装之前需要打nginx_upstream_check_module补丁(check_1.9.2+.patch)到Nginx目录下执行shell:

    patch -p0</usr/servers/nginx_upstream_check_module-master/check_1.9.2+.patch
    
    

    如果不安装补丁,那么ngixn_upstream_check_module模块是不工作的,建议使用wireshark抓包查看是否工作.

    相关文章

      网友评论

          本文标题:Nginx配置说明

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