LVS工作模式详解
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
周拱一卒,砥砺前行,欢迎拍砖。更多内容,请关注公众号获取