nginx-4 负载均衡

介绍

负载平衡是优化资源利用率、最大化吞吐量、减少延迟和确保容错配置的常用技术。

nginx可以作为一个非常有效的HTTP负载平衡器,将流量分配到多个应用服务器,提高Web应用程序的性能、可扩展性和可靠性。

负载均衡策略

nginx支持的负载均衡机制有以下几种

  • round-robin
    将请求以循环方式分发给应用服务器
  • least-connected
    下一条请求分配给活跃连接最少的服务器
  • ip-hash
    使用一个hash函数决定由哪个服务器处理下一条请求(基于客户端的IP地址)

默认的负载均衡配置

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 机制

nginx的反向代理实现包括http、https、fastcgi、uwsgi、scgi、memcached和grpc的负载平衡。

如果配置https的负载均衡,使用https协议即可。

当配置FastCGI, uwsgi, SCGI, memcached, gRPC的负载均衡,分别使用 fastcgi_pass, uwsgi_pass, scgi_pass, memcached_pass, grpc_pass命令。

最少连接的负载均衡

在某些请求需要更长时间才能完成的情况下,新的请求分发到不那么繁忙的服务器,这种机制可以实现更公平负载均衡。

要启用这种机制,加入least_conn指令即可

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

会话持续(session persistence)

如果需要将客户机绑定到特定的应用服务器,保证来自同一台客户端的请求总是被同一台服务器处理,可以使用ip-hash负载均衡机制。

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

加权负载平衡(Weighted load balancing)

可以与以上3中策略配合使用。

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

若是这种配置,假如来了5个新请求,那么有3个会分发给srv1,而srv2和srv3各处理一个请求。

健康检测

nginx的反向代理实现包括了服务器的健康检测。如果来自特定服务器的响应因出现错误而失败,nginx会将这个服务器标记为失败,并在一段时间内不会选择该服务器处理请求。

max_fails 指令记录发生在 fail_timeout 时间内与服务器交互连续不成功的次数。默认情况下,max_fails 设置为1,当设置为0时相应服务器取消健康检测。

fail_timeout 失败超时时间,也表示多久服务器被标记为失败。在服务器失败后的失败超时间隔之后,nginx将开始用客户机的请求优雅地探测服务器。如果探测成功,则将服务器标记为活跃。

你可能感兴趣的:(nginx-4 负载均衡)