分布式常见面试题:聊聊nginx的高可用及集群方案

Java面试 潘老师 8小时前 1 ℃ (0)

各位朋友,今天咱们来聊聊生产环境中不得不考虑的 Nginx 高可用问题。作为系统网关,Nginx 一直扮演着重要角色,比如流量入口、分发拦截、反向代理等等。但很多时候,大家可能会忽略 Nginx 的高可用,因为觉得它比较能扛,理论上能支持 5 万的并发连接,一般系统根本达不到这个量。然而,就像上次遇到的短信验证码攻击一样,黑天鹅事件难以预料,所以还是建议对像 Nginx 这样关键的组件做加固,考虑其高可用性。

Nginx 高可用的实现方式其实比较简单。传统方案是采用 Nginx 加 Keepalive,主服挂掉时,Keepalive 会停掉主服,把备用的 Nginx 顶上来作为主服对外提供服务。这种主从模式目前用得较多,Nginx 高可用基本都这么做。但不好的地方在于,没故障时备用的会一直闲置。所以现在也有基于 Keepalive 加 Nginx 做主主模式,两台互为主备,这种方式也可行,采用的也不少。

再来说说 Nginx 集群,如果单台 Nginx 达到瓶颈,想让更多用户进来就得进行网关扩容。对于 Nginx 的主从,可以扩展到 4 到 5 台。但这时就有问题了,谁来做这些 Nginx 的路由负载和请求分发呢?毕竟扩容的 Nginx 是相对独立的,每一个都有独立的 IP。这时可以考虑并发更高的 LVS,它是一个虚拟的负载均衡系统,工作在传输层,转化效率高,理论上能支持几十万的并发请求,用来代理 Nginx 集群是可行的。

如果是云主机,可以用原厂商的负载均衡,像福报厂的 SLB,能支持 100 万甚至上亿的转化请求,也是不错的选择。但要注意,云服务器貌似不支持虚拟 IP,如果想用 Keepalive 在云服务器上实现高可用且使用虚拟 IP,这个方案不大现实,大家选择方案时要特别注意。再往上,如果有条件可以上硬件负载,常见的如 F5,但价格不便宜,有条件可以考虑,没条件了解一下就行。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/javainterview/13085.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】