四层负载均衡的NAT模型与DR模型推导

开发 架构
虽然FLB工作在传输控制层,但是它并不会和client进行三次握手,它只是“偷窥”数据包中的ip地址和端口号,然后根据配置的规则进行数据包的转发,速度极快。

导读

本文首先讲述四层负载均衡技术的特点,然后通过提问的方式推导出四层负载均衡器的NAT模型和DR模型的工作原理。通过本文可以了解到四层负载均衡的技术特点、NAT模型和DR模型的工作原理、以及NAT模型和DR模型的优缺点。读者可以重点关注NAT模型到DR模型演进的原因(一种技术的诞生肯定是为了弥补现有技术的不足)。除此之外,读者可以多多关注一些基本的、底层的知识,比如内核空间、用户空间、计算机网络等。 为了叙述方便,文中将“四层负载均衡器” 简称为“FLB” (Four-tier Load Balancer)。

一、FLB在网络中的基本拓扑

FLB工作在OSI七层网络参考模型的第四层(传输控制层),FLB上必须具备两个IP地址,VIP和DIP。VIP是暴露给客户端的访问地址;DIP是FLB的分发IP,将数据包通过DIP所在的网卡发送给后端的真实提供服务的服务器(后面简称“RS”(Real Server)),如下图。

图1 FLB的基本网络拓扑图

其中CIP为客户端的ip,RIP为RS的ip。

二、四层负载均衡技术的特点

由于FLB工作在传输控制层,因此它对数据包的处理(转发)总是运行在内核态,不会产生内核态和用户态的切换。

虽然FLB工作在传输控制层,但是它并不会和client进行三次握手,它只是“偷窥”数据包中的ip地址和端口号,然后根据配置的规则进行数据包的转发,速度极快。

三、提出问题

在图1中,如果client发送数据包最终到达server1,由于client数据包的目的ip为VIP,当server1收到数据包时,发现数据包的目的ip竟然不是自己的ip,那岂不会丢弃数据包?

四、NAT模型

NAT(Network Address Translation)模型,针对3中的问题,可以在FLB中增加对客户端的目的地址vip的地址转换,将vip转换成后端某一RS的ip,然后再将数据包发送出去,详细的网络拓扑如图2。

图2 FLB的NAT 模型的基本网络拓扑图

需要注意的是,上面的后端的server的默认网关需要配置成负载均衡服务器的地址。这样server响应的数据包才能回到负载均衡服务器上。

NAT模型的弊端

很明显的一点是,在做NAT地址转换时,会消耗负载均衡服务器cpu的算力。大多数情况下,client向server请求的数据报文很小,而server向client响应的数据报文很大,这就是“非对称”的。在通过NAT的方式实现负载均衡时,client请求报文和server返回的数据报文都要经过负载均衡服务器进行网络地址转换,如果请求的并发流量很大,那么大量并发的响应报文返回到FLB时,负载均衡服务器的网络带宽就会成为瓶颈。

05DR(Direct Route)模型

直接路由模式可以解决NAT模型的两个弊端。DR模式不经过NAT地址转换,而是将server端返回的数据包的源ip直接写成VIP发送出去。这其中涉及到几个要点:

  • 由于server返回的数据包的源ip要写成vip,而不是rip,那么在server本地需要配置vip。并且这个vip必须是对外隐藏的,也就是说外界(客户端、负载均衡器)不能直接访问到server中的vip,而是必须访问负载均衡器暴露的vip。
  • 在负载均衡器中,接收到client的数据包的源ip是cip,目的ip是负载均衡器暴露的vip,那么负载均衡器如何才能将该数据包发送给server呢?(由于server的vip是隐藏的,负载均衡服务器只能看到rip)。在DR模式中,是通过MAC地址欺骗的方式来实现。负载均衡服务器接收到client的请求数据包之后,将目的MAC地址替换为后端某一台server1的MAC地址(替换之前,目的MAC地址为负载均衡器的MAC地址),然后将数据包发送出去,进行点到点通信,这样server1就收到了client的数据包。 点对点通信依赖的是MAC地址(数据链路层)。
  • 基于上述内容:要实现负载均衡器和后端server点对点通信,因此约束了:负载均衡服务器的DIP和后端的server必须在同一个机房(局域网)。

根据上面的推导,DR模型的基本网络拓扑如图3所示。

图 3 FLB的DR 模型的基本网络拓扑图

在RS中如何配置VIP,如何实现VIP隐藏?且听下回分解:LVS DR模型实验搭建与验证。

作者:京东物流 伍泓全

来源:京东云开发者社区 自猿其说Tech

责任编辑:武晓燕 来源: 今日头条
相关推荐

2010-05-10 18:11:24

负载均衡机

2010-04-20 12:16:05

NAT负载均衡

2012-11-12 11:26:44

2014-07-24 09:38:34

2010-05-06 15:43:18

NAT负载均衡

2010-05-06 12:11:24

NAT负载均衡

2022-06-15 08:01:39

负载均衡面试OSI

2010-04-22 20:57:13

四层交换Alteon负载均衡

2023-12-08 13:27:22

2009-06-10 13:30:32

J2EE四层模型客户层Web层

2010-04-25 23:02:48

TCP负载均衡

2010-04-23 13:01:40

七层交换负载均衡

2010-04-23 12:42:24

四层交换机负载均衡

2018-10-17 09:51:04

负载均衡服务器性能

2010-04-22 09:44:29

2012-02-15 00:15:48

2024-12-10 07:18:27

2019-07-16 10:42:02

网络模型TCP

2019-07-09 13:54:19

网络模型网络协议TCP

2019-09-27 08:18:13

负载均衡核心Key
点赞
收藏

51CTO技术栈公众号