LVS(Linux Virtual Server)是一个基于四层的负载均衡调度器。
为什么要使用 LVS + Nginx?
LVS的 DR
模式:
由上图可以看出,LVS 和 Nginx 很像,但LVS基于四层负载均衡,它无需处理请求的报文,它可以只接收请求而可以不响应请求,所以它工作效率是 Nginx 的几十倍。
当数据量太大,大到单个 Nginx 承受不了该压力,使得 Nginx 都需要配置集群,那么现在细想一下,该由谁来充当Nginx集群的调度者,总不能还是交给 Nginx 来处理调度吧,而这里就可以使用到LVS,从而支持更高的并发!!!
LVS 的工作原理是通过其的核心模块 ipvs
实现的,ipvs
可以产生出一个虚拟IP,这与 Keepalived 类似,用户服务会通过这个虚拟IP访问,到达负载LVS负载均衡调度器,再由LVS挑选出实际的Nginx服务器进行响应。
LVS 的三种模式
LVS 的三种模式主要关注点就是:响应方式的不同
NAT
模式如下图,该模式的工作原理就如Nginx几乎一致了,此时LVS接受请求后还需要响应数据,还要注意如图显示,real server
是处于内网之中,外部无法直接访问。
TUN
模式如下图,硬性要求所有Real Server
必须要配备网卡,通过网卡建立通信隧道,所有的用户请求都由各自的Real Server
响应,大大地减低了 LVS 的压力从而增大并发,不过这样也有一个缺点,Real Server
因为有了网卡,对应也就会暴露在公网中
DR
模式如下图,直接路由模式,real server
的响应会统一地通过一个路由中转、构建一个虚拟IP进行数据返回给用户(此时构建的虚拟IP与请求的虚拟IP应该一致),对比TUN
模式,DR
模式下real server
就不再暴露在公网中