Nginx – 负载均衡

一、概述

Nginx 实现负载均衡的两个最重要的点时 upstream 和 proxypass。

其中,upstream 必须配置在server层以外,而 proxypass 则配置在 server 层以内。

 

二、配置文件示例

upstream webserver {
    server 192.168.72.49:8080 weight=3;
    server test.haveyb.com:80 weight=2;
}

server {
    listen       80;
    server_name  ttt.haveyb.com;
    location / {
        proxy_pass   http://webserver;
        index  index.html index.htm;
    }
}

注:upstream 中,可以使用ip + 端口号形式,也可以使用域名+端口号形式。

 

三、upstream 配置项

1、backup(预留的备用节点)

当其他节点都不可用时,该节点启动使用;一旦有一个节点恢复正常,该备用节点重新恢复为备用状态

2、max_conns(限制最大连接数)

3、down(表示当前server 暂时不参与负载均衡)

4、max_fails(允许请求失败的次数)

5、fail_timeout(经过max_fails 次数后,服务暂停的时间)

 

四、Nginx 的轮询策略

1、轮询(默认)

按时间顺序逐一分配

2、加权轮询(权重 weight)

weight 值越大,被访问的概率越高

3、ip_hash

每个请求按访问ip的hash结果分配,结果就是同一个ip,分配的始终是同一个节点

4、url_hash

每个请求按访问url的hash结果分配,使同一个url定向访问到一个节点

5、least_conn(最少连接数)

哪一个节点连接数少,就把请求分发到哪个节点

6、hash自定义key