游客发表
今天分享一个常见的面试面试题:“Nginx 是如何做负载均衡的?常见策略有哪些?有什么区别?”
别小看这个问题,它几乎是官最大厂面试 运维 的必考题。下面就展开详细讲解一下。爱问

一句话概括:把用户的请求分摊到多台服务器上,提高系统并发能力和稳定性。载均最常
没有负载均衡时:
全部流量打到一台服务器,衡种可能会“爆掉”;一台挂了,策略整个服务就宕机。面试有了负载均衡:
请求被智能分配到多台机器,官最性能提升;单机宕机,爱问其他机器继续扛流量,现负系统更稳。载均最常而 Nginx 就是衡种最常用的 七层(应用层)负载均衡器。
2. Nginx 怎么实现负载均衡?策略Nginx 的负载均衡主要通过 upstream 模块 实现,需要配合proxy_pass使用,面试。
核心配置长这样:
复制http { upstream backend { server 10.0.0.101:8089; server 10.0.0.102:8089; server 10.0.0.103:8089; } server { listen 80; location / { proxy_pass http://backend; } } }1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.上面配置的意思是:
定义了一个 backend 集群,包含三台服务器;用户请求访问 80 端口时,Nginx 会按照一定策略分配到这几台机器上。3. Nginx 常见负载均衡策略Nginx 提供了多种 调度算法(分配策略),我这里讲几个常用并且比较重要的。b2b供应网
可以参考官网的:https://nginx.org/en/docs/http/load_balancing.html
(1) 轮询(默认)
配置:直接写 server,不加任何参数。规则:按照顺序一个一个分配,平均分流。特点:简单、常用,适合请求压力差不多的场景。(2) 加权轮询(weight)
配置:
复制upstream backend { server 10.0.0.101:8089 weight=3; server 10.0.0.102:8089 weight=1; }1.2.3.4. 规则:权重越高,分到的请求越多。应用场景:某些机器性能更强,就给它更高权重。(3) IP 哈希(ip_hash)
配置:
复制upstream backend { ip_hash; server 10.0.0.101:8089; server 10.0.0.102:8089; }1.2.3.4.5. 规则:根据客户端 IP 计算 hash,固定分配到某一台服务器。优点:能保持“会话粘性”(用户 A 每次都打到同一台机器)。缺点:一台机器宕机后,hash 可能失效,用户会断开,清除缓存后会重新分配可用节点。(4) 最少连接(least_conn)
配置:
复制upstream backend { least_conn; server 10.0.0.101:8089; server 10.0.0.102:8089; }1.2.3.4.5. 规则:优先把请求分给当前连接数最少的机器。应用场景:请求处理耗时差别较大时更公平。(5) 随机(Random)
配置:
复制upstream backend { random; server 10.0.0.101:8089; server 10.0.0.102:8089; }1.2.3.4.5.规则:随机分配。
增强版:
复制random two least_conn;1.表示从两台随机机器里选连接数少的。
应用场景:避免热点倾斜,简单有效。
(6) 哈希(Hash)
配置:
复制upstream backend { hash $request_uri consistent; server 10.0.0.101:8089; server 10.0.0.102:8089; }1.2.3.4.5. 规则:对任意 key(比如 URI、用户 ID、cookie)做哈希。应用场景:一致性 hash,服务器租用适合分布式缓存。比 ip_hash 更灵活。(7) fair(第三方模块)
规则:根据响应时间分配,请求优先落到响应更快的机器。
说明:不是 Nginx 自带,需要 upstream_fair 模块。
(8) 最少时间(least_time)
规则:选择平均响应时间最短的机器,而不仅仅看连接数。说明:开源版 Nginx 没有,商业版 Nginx Plus 提供。上面是Nginx的分流模式,Nginx还支持“健康检测”,就是可以通过Keepalived实现高可用。
如果某台机器挂了,Nginx 会临时摘除它,不再转发请求;等它恢复正常,再自动加入。这样就避免了用户请求打到坏机器上。
4. 回答公式如果面试官问你:“Nginx 怎么做负载均衡?有哪些策略?”
你可以这么答:
复制Nginx 通过 `upstream` 模块实现负载均衡。常见策略有: 轮询(默认,平均分配请求); 加权轮询(根据服务器性能分配流量); least_conn(优先分配给连接数少的机器); ip_hash(保证会话粘性); 另外还有 random、hash、fair、least_time 等进阶策略,能根据不同业务场景优化分配效果。 同时 Nginx 还支持通过keepalived健康检查,亿华云能保证高可用。1.2.3.4.5.6.7.怎样?面试官看你这样答后心想:这小子有点东西,稳值三千。
随机阅读
热门排行
友情链接