LVS工作模式详解

The more you know the more you know you don’t know



LVS是运维界最常见的4层负载均衡工具,本文主要讲解LVS常见的两种工作模式NAT和DR以及面试过程中常见的一些问题,希望对你有所帮助

名称解释

CIP:  发起请求的用户CIP

VIP: 虚拟IP,LVS上负责响应请求的IP地址

RealServer: 后端提供服务的服务器
lo网卡:本地回环网卡
四元组:源端口、源IP、目的端口、目的IP
LVS-DR模式

前置条件

1.LVS和RealServer需要在同一个网段
2.RealServer需要在本地网卡上配置VIP

工作流程

一、用户发起请求

1.CIP随机开启一个大于1024的端口(假设为60000)访问vip的80端口

2.请求通过网络到达LVS服务器所在的交换机,交换机发现目的IP是到VIP的请求

3.交换机发送ARP请求询问VIP对应的MAC地址

4.只有LVS服务器响应该请求

   i. LVS服务器上配置了VIP的地址
   ii. RealServer服务器上配置的地址为回环地址,不响应交换机的广播

5.交换机将请求转发给LVS,并缓存arp记录

二、请求到达LVS,LVS修改数据包的内容

6.LVS拿到请求后,将数据包中的Mac地址修改为RealServer的地址,并回传给交换机

7.交换机
将请求发给对应的RealServe
r

三、RealServer处理并响应

8.RealServer收到请求后,进行处理

i. mac地址正确
ii. ip地址正确(VIP配置在lo上的原因,如果不配置,改数据包将会被丢弃)
9.RealServer处理好后将直接返回给CIP

LVS-NAT模式

前置条件

工作流程

一、用户发起请求

1.CIP随机开启一个大于1024的端口(假设为60000)访问vip的80端口

2.请求通过网络到达LVS服务器所在的交换机,交换机发现目的IP是到VIP的请求

3.交换机发送ARP请求询问VIP对应的MAC地址

4.LVS服务器响应该请求

5.交换机将请求转发给LVS,并缓存arp记录

二、请求到达LVS,LVS修改数据包的内容

6.LVS拿到请求后,将数据包IP信息

    i. 源IP\端口改为LVS的IP、端口

ii. 目的IP、端口改为RealServer的IP、端口

7.交换机
将请求发给对应的RealServe
r


三、Re


alServer处理并回传数据给LVS

8.RealServer收到请求后,进行处理
9.RealServer处理好后将返回给LVS
四、LVS修改数据包的内容,并响应客户端
10.LVS将数据包中的IP修改到正确的四元组后,回应给客户端

面试常见问题

一、LVS NAT和DR的区别是什么?

1. 修改的内容不同,DR修改的是

MAC地址

,NAT修改的是

IP、端口

2. 修改次数不同,DR只需要修改


一次


,NAT需
要修改

两次

3. 响应流量

DR模式无需经过LVS

,NAT需要

4. DR模式要求

在同一个网段

,NAT不需要

二、LVS负载均衡和Nginx负载均衡的区别是什么?

LVS属于四层,NGINX属于七层

LVS能承载的压力要比nginx强很多,但NGINX的功能更加丰富,可配置各种规则对http请求进行分流

所以一般来说大家都是两台LVS做keepalive,后端挂载多个NGINX负载均衡器来承载流量,然后才是真正响应请求的服务器例如Tomcat等

三、如果单个LVS也无法承载巨大的网络流量,有哪些优化的思路?

1. 使用CDN通过缓存的方式减轻网站的压力
2. 通过智能DNS的方式,将流量转发到多个LVS上(本质上与CDN方案类似)
3. 通过交换机BGP的方式

四、
如果你来优化LVS还有哪些改进项?

NAT模式

1. 在TCP三次握手时,LVS先与客户端建立完成链接后,在将流量转发至RS。在LVS层添加攻击防护能力

2. TCP链接复用,如果流量过大,那需要考虑的是TCP握手带来的性能损耗,如果LVS与RS保持keepalive那可以大大减少延迟时间

关于调度算法相关,LVS官网已经有了非常详细的介绍。 本文不再赘述

官网链接如下:http://www.linuxvirtualserver.org/zh/lvs4.html

周拱一卒,砥砺前行,欢迎拍砖。更多内容,请关注公众号获取