网络高并发负载均衡(二)

LVS的DR模型推导

Posted by 石福鹏 on 2021-03-10
Estimated Reading Time 3 Minutes
Words 966 In Total
Viewed Times

接着上一篇文章说到的,上篇文章说了一些负载均衡的思想,都是NAT模式的,但是有个弊端

从客户端到服务端,再从服务端回到客户端,中间经过负载均衡服务器,它是有瓶颈的:

即非对称

发出去东西很少,但是返回来的很多,但是来去都要经过负载均衡服务器,所以负载均衡服务器的带宽成为瓶颈,消耗算力(计算机的计算能力)

那如何解决这个弊端?

要解决这个问题,肯定不是NAT模式了,所以下面负载均衡服务器也就不会返回了

如果从RIP返回的数据包,不再经过负载均衡服务器,那就解决上面的问题了

image-20210309143507856

如果想实现传输性能最大,最大程度利用带宽,我们这样分析:

从客户端来说,依然是从CIP到VIP,到负载均衡服务器,假设负载均衡服务器不知道使用什么技术,反正会负载給RIP,负载成功后, 最终要求由RIP直接返回给CIP

代表着直接从返回的是一个携带者VIP->CIP的数据包,因为请求的是手是从CIP->VIP,这样客户端才能收到。

继续分析,那么数据包肯定是来自RIP的输出,那么RIP需要绘制出这样一个数据包,即有一个VIP->CIP的映射关系

代表着RIP的服务器上要有一个IP地址叫VIP,也就是说server1、server2的Local Address(netstat -natp命令中得到 )中都要有VIP,但是上一篇文章中,我们说过同一网络当中,IP地址不能重复出现,出现了冲撞现象了;

如果对于上面的三台设备(负载均衡服务器、server1、server2),都有VIP,只是负载均衡服务器的VIP暴露出去,但是两台server不暴露出去,即两台real-server中的VIP对外隐藏,对内可见

这样的话,就形成了一个环形,也就能达到我们的目的了

那么问题来了

  • 如何把发送到负载均衡服务器的CIP->VIP的数据包扔给RIP? 因为按照NAT模式,是会做地址转化的

    我们想到,在通信中,除了有IP这一层,还有链路层,链路层还有一个地址:MAC地址;
    那么如果在负载均衡服务器中。他的链路层,放的是RIP的MAC地址,即数据包在从VIP发出去之前,给数据包外层封装了一个MAC地址 (即修改链路层但是不修改网络层(这又是一个硬伤,因为没有修改网络层,所以VIP到RIP就只能在局域网内了,下面会说到))

    但是根据前面说到的,IP是端对端的,而MAC地址是节点到节点的,且节点间是使用下一跳机制,所以这就要要求,负载均衡服务器和server服务器在同一个局域网内,不能跨网络

    因此上面说的这种情况其实是基于二层的,俗称“MAC地址欺骗”,优点就是速度快,成本低

    上面说的即DR(direct route)模型直接路由模型

​ 对比一下NAT、DR两种模型

image-20210309162858975

image-20210309162954224

综上,我们发现已经说到的两个模型其实都是有他的优缺点的,

优点 缺点
NAT模型 带宽成为瓶颈,消耗算力
DR模型 速度快、成本低 Real-server和负载均衡服务器必须在同一个局域网内

有没有一个综合上面两个模型优点

速度不要太慢,而且Real-server和负载均衡服务器的物理位置不约束的,到下一篇文章分享


如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !