微信搜索:小大白日志

nginx单点问题

只配置一个nginx会有单点问题,怎么解决?

nginx的单点问题就是如果nginx挂了那么整个后边的服务将不可访问,失去了高可用性,可利用nginx、keepalived、lvs(或F5)解决nginx的单点问题,实现高可用、负载均衡、横向拓展的功能

  • nginx:用作反向代理
  • keepalived:用作监测某个服务是否正常,若不正常则切换到其他备份服务中,如检测nginx有没有挂掉,挂掉后可以将当前nginx功能切换到另外一个nginx上(同理也可以检测lvs)
  • lvs:用作负载均衡,作用于操作系统(软件层面)
  • F5:用作负载均衡,作用于硬件(硬件层面)

如下图:

image

反向代理层有两台服务器,分别部署上lvs+keepalived,两台服务器对外界设置成相同的虚拟ip,若keeplived检测到其中一台的lvs故障了,可以马上切换到另一台的lvs,该过程对调用方透明。运用lvs+keepalived+nginx架构,lvs作为一款作用在操作系统层面的负载均衡的中间件,每秒可承受高达10w的QPS,一天就是
24 * 60 * 60 * 10w=80亿次请求,能满足99%的公司的需求了,如果还要拓展就只能在DNS服务上给一个域名配置多个不同的外网ip(比如此处配置成10.58.0.1、10.58.0.2),每个外网ip配置一套相同的内网[lvs+nginx+keepalived]架构,这样能处理的QPS就是80亿的倍数了

前端页面访问过程:

浏览器拿域名[58daojia.com]到DNS服务器解析,得到具体的'外网ip',浏览器再访问具体的'外网ip'
->

请求来到具体的'外网ip'服务器上,该服务器的反向代理层设置了lvs+keepalived,lvs负责负载均衡地将请求均衡转到内网各个nginx上,keepalived负载监控lvs是否挂掉
->

请求被转到内网某个nginx服务器上,该nginx再将请求反向代理到内网某个tomcat上
->

tomcat响应请求提供服务,并按原链路返回数据

posted @ 2022-05-23 11:03  明天喝可乐  阅读(89)  评论(0编辑  收藏  举报