Nginx集群配置配置

1. upstream配置集群

upstream tomcats {
        server 192.168.16.100:8080;
        server 192.168.16.101:8080;
        server 192.168.16.102:8080;
}

2. 指令参数:weight

weight=number

upstream tomcats {
        server 192.168.16.100:8080 weight=1;
}

Nginx负载均衡默认使用轮询的方式,即每台节点默认的 weight=1 ;
通过修改weight的值配置每个server节点的权重,配置值越大权重越大,即用户请求时访问到server节点的几率就越大

3. 指令参数:max_conns

max_conns=number

upstream tomcats {
        server 192.168.16.100:8080 max_conns=200;
}

设置upstream节点服务器的每个工作进程(worker_processes)的最大连接数,默认值为0,表示没有限制;该配置想可以防止服务器过载,起到限流的作用

4. 指令参数:slow_start

slow_start=time;仅支持商业版

upstream tomcats {
        server 192.168.16.100:8080 slow_start=2s;
	server 192.168.16.100:8080 slow_start=12s;
}

设置server节点慢慢的加入集群;设置slow_start后server节点默认权重(weight)会被覆盖成0,然后在设置的时间里慢慢的升级server节点权重(weight)到原本配置的权重值;
即server节点如果配置weight=10,server节点启动后会先变成weight=0,然后设置的时间里慢慢升到weight=10;
默认值为0,默认为关闭状态;
该参数不能使用到 Hash 和 random 的负载均衡中, 该参数不能使用在单个server节点中,必须使用在多个server节点中

5. 指令参数:down

upstream tomcats {
        server 192.168.16.100:8080 down;
	server 192.168.16.100:8080;
}

表示server节点不可用

6. 指令参数:backup

upstream tomcats {
        server 192.168.16.100:8080;
	server 192.168.16.100:8080 backup;
}

表示server节点为备用机,备用机一开始不会被用户访问,当其他的server节点宕机后备用机才会被用户访问到

7. 指令参数:max_fails/fail_timeout

upstream tomcats {
        server 192.168.16.100:8080 max_fails=2 fail_timeout=15s;
}

max_fails:表示失败几次,则标记server已宕机,剔出上游服务;
fail_timeout:表示失败的重试时间;
假设目前设置如下:

max_fails=2 fail_timeout=15s 

则代表在15秒内请求某一server失败达到2次后,则认为该server已经挂了或者宕机了,随后再过15秒,这15秒内不会有新的请求到达刚刚挂掉的节点上,而是会请求到正常运作的server,15秒后会再有新请求尝试连接挂掉的server,如果还是失败,重复上一过程,直到恢复

8. keepalived

Keepalived 提高吞吐量

upstream tomcats {
        server 192.168.16.100:8080;
	keepalived 32;
}

server {
    listen       80;
    server_name  www.tomcats.com;

    location / {
        proxy_pass  http://tomcats;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}

keepalived:设置长连接处理的数量;避免链接频繁的创建和销毁
proxy_http_version:设置长连接http版本为1.1,默认1.0,不是长连接
proxy_set_header:清除connection header 信息

9. 负载均衡 ip_hash

ip_hash 可以保证用户访问可以请求到上游服务中的固定的服务器,前提是用户ip没有发生更改。
使用ip_hash的注意点:

  • 一旦使用了ip_hash,当我们需要移除一台服务器的时候,不能直接删除这个配置项,而是需要在这台服务器配置后面加上关键字down,表示不可用;因为如果直接移除配置项,会导致hash算法发生更改,后续所有的请求都会发生混乱

算法:hash(ip(192.168.1))%node_counts = index

upstream tomcats {
        ip_hash;

        server 192.168.1.173:8080;
        server 192.168.1.174:8080 down;
        server 192.168.1.175:8080;
}

10. 负载均衡 url_hash 与 least_conn

根据每次请求的url地址,hash后访问到固定的服务器节点
算法:hash(url)%node_counts = index

upstream tomcats {
    # url hash
    hash $request_uri;
    # least_conn 根据最少连接数的服务器进行请求,减少其他服务器的压力
    least_conn

    server 192.168.1.173:8080;
    server 192.168.1.174:8080;
    server 192.168.1.175:8080;
}


server {
    listen 80;
    server_name www.tomcats.com;

    location / {
        proxy_pass  http://tomcats;
    }
}

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

那一年,我也变成了光!!