Ningx 配置负载均衡

注意,默认情况下,它使用的是轮询的方式来进行负载均衡的。

示例配置代码

http {
    upstream myapp1 {
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }

    server {
        listen 80;

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

均衡策略

round-robin,轮询(默认策略,Default)

这也是默认情况下的策略。

即第一个请求发给 srv1, 第二个请求发给srv2,第三个请求给srv3,第四个请求又给srv1,如此循环下去。

Session persistence, 会话持久化的方式

即, ip_hash

示例代码:

upstream myapp1 {
    ip_hash;
    server srv1.example.com;
    server srv2.example.com;
    server srv3.example.com;
}

最近连接优先处理,Least connected load balancing

示例代码

upstream myapp1 {
        least_conn;
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
}

按权重的方式,Weighted load balancing

示例代码

upstream myapp1 {
        server srv1.example.com weight=3;
        server srv2.example.com;
        server srv3.example.com;
}

默认情况下,权重为1.

负载均衡的健康检查

max_fails指令,是指在fail_timeout时间内,最大的失败尝试次数。

默认情况下,max_fails 为1, 如果设置为0,则表示禁用健康检查。 默认情况下,fail_timeout为10.

参考资料