Nginx负载均衡详解(图文全面总结)

Nginx是负载均衡的必备中间件,也是大型架构的核心组件,下面我就全面来详解Nginx负载均衡@mikechen

Nginx

Nginx 是一个高性能的 HTTP 、和反向代理服务器,广泛应用于 Web 服务的负载均衡、缓存、和静态资源服务等场景。

Nginx ,通常用于负载均衡,以分配流量并提高系统的可用性、和可靠性。

如下图所示:

Nginx负载均衡详解(图文全面总结)

upstream backend {
    server 192.168.1.101;
    server 192.168.1.102;
    server 192.168.1.103 backup;
}

Nginx,可以通过负载均衡,把流量分配到:192.168.1.101192.168.1.102192.168.1.103…等服务器上。

这样,可以极大提升并发性能,以及扩展性、和可用性等。

 

Nginx算法

Nginx 提供多种负载均衡算法,用于分发请求到后端服务器,如下图所示:

Nginx负载均衡详解(图文全面总结)

轮询(Round Robin)

默认策略,按照请求的顺序,依次将流量分配给每个服务器。

如下图所示:

Nginx负载均衡详解(图文全面总结)

假如,我有3台服务器:

http {
    upstream mikechen{
        server server1.mikechen.cc;
        server server2.mikechen.cc;
        server server3.mikechen.cc;
    }

    server {
        listen 80;
        location / {
            proxy_pass http://mikechen;
        }
    }
}

每个请求,按顺序分配到后端服务器。

轮询这种方式,简单、高效,所有后端服务器被均匀使用。

 

加权轮询(Weighted Round Robin)

加权轮询,就是在轮询的基础上增加权重(weight)。

Nginx负载均衡详解(图文全面总结)

如下所示:

http {
    upstream mikechen{
        server server1.mikechen.cc weight=3; # 权重高,接收更多请求
        server server2.mikechen.cc weight=1;
        server server3.mikechen.cc weight=2;
    }

    server {
        listen 80;
        location / {
            proxy_pass http://mikechen;
        }
    }
}

权重高的服务器接收更多请求,比如:上面server1.mikechen.cc weight=3,权重为3就可以获取更多的流量。

应用场景:

后端服务器性能不均时,通过调整权重实现负载优化。

 

IP 哈希(IP Hash)

IP 哈希(IP Hash),通过客户端 IP 地址计算哈希值,根据哈希值分配请求到后端服务器。

如下图所示:

Nginx负载均衡详解(图文全面总结)

IP 哈希(IP Hash),保证同一 IP 的请求,始终分配到同一服务器(会话保持)。

IP 哈希(IP Hash),会存在一个比较大的问题,就是:后端服务器列表变更时,哈希结果可能发生变化。

 

最少连接数(Least Connections)

最少连接数(Least Connections):就是将请求分配给当前处理,连接最少的服务器。

如下图所示:

Nginx负载均衡详解(图文全面总结)

最少连接数(Least Connections),将请求分配给当前连接数最少的服务器,适合长时间保持连接的场景。

陈睿mikechen

10年+一线大厂技术经验,大厂资深面试官,就职于阿里、淘宝等一线大厂。

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧