LVS的四种工作模式总结对比

目录

lvs工作模式介绍

一、NAT模式

二、DR模式

三、TUN模式

四、FULLNAT模式

四种工作模式的对比


LVS作为一种负载均衡器,有4种工作模式,分别是NAT、DR、TUN、FULLNAT。

为了总结的时候方便,先罗列一下相关的术语:

负载均衡器:Load Balancer,简写成LB。

RS:Real Server,真实服务器。在不同的负载均衡软件里有不同的名称。nginx中叫upstream server,HAproxy中叫backend server。

CIP:客户端的IP。

VIP:虚拟服务IP,LB的外网IP,也就是客户端请求的IP。

DIP:LB内网的IP,负责与RS的连接与通信。

RIP:RS的IP。

使用lvs后一般的访问流程为:CIP<==>VIP==DIP<==>RIP。

lvs工作模式介绍

下面分别对这4种工作模式进行介绍。

一、NAT模式

NAT模式工作流程如下:

 ①客户端发送请求到lvs。

 ②lvs根据指定的调度算法重写请求报文包的目标IP端口为某一个RS的RIP和端口并将请求转发给这个RS。

 ③RS处理请求,并将请求的响应返回给lvs。

 ④lvs将响应报文的源IP和端口还原成之前请求的目标地址和端口。

 ⑤lvs将修改后的响应报文返回给客户端。

LVS的本质是多目标IP的DNAT,通过将请求报文中目标IP和端口修改为某个RS的RIP和端口来实现请求的转发。

NAT模式具有如下特点:

⑴RIP和DIP应在同一个IP网络,且应该使用私网地址,RS的网关要指向DIP

⑵请求报文和响应报文都经由lvs转发,lvs容易成为系统瓶颈。

⑶支持端口映射,可修改请求报文的目标端口。

⑷lvs必须在linux系统,RS可以在任意系统。

⑸需要开启ip_forward。

二、DR模式

DR(直接路由)模式工作流程如下:

DR模式是lvs的默认模式,也是应用得最为广泛的一种模式。它通过为请求报文重新封装一个MAC首部来进行转发。封装的MAC首部中源MAC地址是DIP所在接口的MAC,目标MAC是某个RS的RIP所在接口的MAC;源IP、端口,以及目标IP、端口都保持不变

下图展示了这种MAC地址变更:

 可以看到,请求的转发过程中源IP和目标IP,包括端口都不会变更。只会修改目标MAC地址。

这里有一个问题,lvs和RS在同一个物理网络内,其上都绑定了VIP,如何确保IP地址不发生冲突?

答案是:在一个物理网中,是通过ARP广播的形式来确认IP地址是否冲突。只要在别的机器发出某个IP是否已存在的广播时本机不作出回应,且本机也不发出广播,就可以避免IP地址发生冲突。

另外需要设置RS上的VIP不对外公布,这样客户端就不能直接通过IP地址进行访问,而是需要通过lvs才可以访问。

DR模式的特点如下:

⑴lvs和各RS上都配置有VIP,RS的VIP配置在回环网卡(lo)上。

⑵需要确保前端路由器将目标IP为VIP的请求报文发送给lvs,而不是某一个RS。有以下3种方式可以实现:

①前端网关静态绑定VIP和lvs的MAC地址,这种方式的缺点是无法保障lvs的高可用。

②在RS上使用arptables工具。

arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP

③在RS上修改内核参数(arp_ignore、arp_announce)以限制arp通告和应答。

⑶RS的RIP使用公网和私网地址都可以。RIP和DIP要在同一物理网络,RIP网关不能指向DIP,以确保请求报文经过lvs而响应报文不经过lvs,响应报文由RS直接发给客户端。

⑷不支持端口映射。

⑸无需开启ip_forward。

⑹RS可使用大多数OS系统。

DR模式适用于LAN环境中。

 三、TUN模式

TUN(IP隧道)模式工作流程如下:

这种方式不修改请求报文的IP首部((源IP是CIP,目标IP是VIP)),而是通过在原报文外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发送给某个目标RS,该RS直接响应客户端(源IP是VIP,目标IP是CIP)。示意图如下:

TUN模式的特点概括如下:

⑴RIP和DIP可处于不同物理网络,RS网关不能指向DIP,且RIP可以和公网通信。也就是说,TUN模式的集群节点可以跨互联网。DIP、VIP、RIP可以是公网地址。

⑵RS的TUN接口上要配置VIP,以便接收lvs转发过来的数据包,并作为响应报文的源IP。

⑶lvs将请求转发给RS时需要使用隧道,隧道外层IP首部源IP是DIP,目标IP是RIP。而RS响应客户端的IP首部是根据隧道内层IP首部分析得到,其源IP是VIP,目标IP是CIP。上面已经有分析。

⑷请求报文经由lvs,响应报文由RS自己发送,不经过lvs。

⑸不支持端口映射。

⑹RS的操作系统需支持IP隧道功能。

TUN模式适用于缓存服务器组的负载调度,这些缓存服务器在不同的网络环境中,可以就近返回响应给客户端。

TUN模式可用于WAN环境中,但在实际的WAN环境中,一般使用haproxy/nginx/DNS来实现,跨机房应用一般使用专用光纤或者DNS。

四、FULLNAT模式

FULLNAT的工作流程如下:

 

FULLNAT工作流程分析:

①客户端向VIP发送请求。

②lvs接收请求,对请求报文做FULLNAT处理,把源IP改为DIP,目标IP改为某个后端RS的RIP,并将请求报文发给该RS。

③RS收到请求后,会进行响应,响应报文的源IP为RIP,目标IP为DIP。

④lvs接收到响应后再次进行FULLNAT处理,将源IP改为VIP,目标IP改为CIP。

从以上的过程可以看出,FULLNAT是通过同时修改报文的源IP(SNAT)和目标IP(DNAT)来实现转发的。

FULLNAT模式有如下特点:

⑴VIP为公网IP,RIP和DIP为私网IP,且RIP跟DIP一般不在同一网络,因此RIP网关不会指向DIP。

⑵RS接收到的请求报文源IP是DIP,所以会响应给DIP。lvs要将其发往客户端,需要再次修改源IP和目标IP。

⑶请求和响应报文都需要经过lvs。

⑷相对于NAT模式,可以更好地实现lvs与RS间跨VLAN进行通信。

⑸支持端口映射。

值得说明的是,linux内核默认不支持这种模式。

四种工作模式的对比

NATDRTUNFULLNAT
RS的限制任意OS限制ARP需要支持Tunneling任意OS
RS的网络私有LANLAN/WAN私有
RS的数量少量大量大量少量
RS的网关lvs的DIP自己的路由自己的路由自己的路由
优点端口转换性能好WAN端口转换,跨VLAN
缺点性能瓶颈不支持跨网段需要支持Tunneling性能瓶颈,无法获得用户IP

 四种工作模式中DR模式是最常用的,它的高性能结合DNS负载技术可实现集群的高可用。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LVSLinux Virtual Server)是一个用于构建高性能、高可用性的服务器集群的软件。它支持四种工作模式,它们是: 1. NAT模式(Network Address Translation):在NAT模式下,负载均衡器将客户端请求的源IP地址和端口转换为负载均衡器自身的IP地址和端口,并将请求转发给后端服务器。这种模式适用于需要隐藏后端服务器真实IP地址的场景。 2. IP隧道模式(Tunneling):在IP隧道模式下,负载均衡器将客户端请求封装在一个新的IP包中,并将该包的目的IP地址设置为后端服务器的IP地址,然后将请求发送给后端服务器。该模式适用于需要直接将请求发送给后端服务器的场景。 3. DR模式(Direct Routing):在DR模式下,负载均衡器将客户端请求的目标MAC地址设置为后端服务器的MAC地址,并将请求转发给后端服务器。后端服务器处理完请求后,直接发送响应给客户端,不经过负载均衡器。这种模式适用于后端服务器和负载均衡器在同一子网内的场景。 4. TUN模式(Routing):在TUN模式下,负载均衡器将客户端请求封装在一个新的IP包中,并将该包的目标IP地址设置为后端服务器的IP地址,然后将请求发送给后端服务器。后端服务器处理完请求后,将响应发送给负载均衡器,再由负载均衡器发送给客户端。这种模式适用于后端服务器和负载均衡器在不同子网内的场景。 这些工作模式的选择取决于具体的应用场景和网络架构需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值