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

导读 
本文首先讲述四层负载均衡技术的特点,然后通过提问的方式推导出四层负载均衡器的 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)),如下图 。
【四层负载均衡的 NAT 模型与 DR 模型推导】

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

文章插图
图 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 。
四层负载均衡的 NAT 模型与 DR 模型推导

文章插图
图 2 FLB 的 NAT 模型的基本网络拓扑图
需要注意的是,上面的后端的 server 的默认网关需要配置成负载均衡服务器的地址 。这样 server 响应的数据包才能回到负载均衡服务器上 。
NAT 模型的弊端
很明显的一点是,在做 NAT 地址转换时,会消耗负载均衡服务器 cpu 的算力 。大多数情况下,client 向 server 请求的数据报文很小,而 server 向 client 响应的数据报文很大,这就是 “非对称” 的 。在通过 NAT 的方式实现负载均衡时,client 请求报文和 server 返回的数据报文都要经过负载均衡服务器进行网络地址转换,如果请求的并发流量很大,那么大量并发的响应报文返回到 FLB 时,负载均衡服务器的网络带宽就会成为瓶颈 。
五、DR (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 所示 。
四层负载均衡的 NAT 模型与 DR 模型推导

文章插图
图 3 FLB 的 DR 模型的基本网络拓扑图
在 RS 中如何配置 VIP,如何实现 VIP 隐藏?且听下回分解:LVS DR 模型实验搭建与验证 。


推荐阅读