lvs-dr模式原理详解和可能存在的“假负载均衡”

简介: 原文地址: http://blog.csdn.net/lengzijian/article/details/8089661 lvs-dr模式原理 转载注明出处:http://blog.csdn.net/lengzijian/article/details/8089661 先附上一张原理图: ...

原文地址: http://blog.csdn.net/lengzijian/article/details/8089661

lvs-dr模式原理

转载注明出处:http://blog.csdn.net/lengzijian/article/details/8089661

先附上一张原理图:

为了更清晰的表述lvs-dr原理,我们用tcpdump工具打印出tcp数据,查看mac地址的更改情况,绘制出如下的时序图;

图1表示201收到转发消息,图2表示200收到转发请求(下面两张为错误的图,错误的理由下面会详细解释)

上面的信息全部用tcpdump命令取得(tcpdump  -e -X-A -n -s 10000 port 80;具体含义这里就不详细讲解了),用上述命令分别在149、200、201上执行。

图只是辅助理解,刚开始不用研究太深入。可以根据下面的讲解慢慢体会。

首先,从两幅图中我们都能看到这样的流程:

TCP建立(三次握手)->交换机发送请求->服务器响应请求->TCP连接断开(四次挥手)

下面解答和分享下我所遇到的问题:

问题1:按照我之前对负载均衡的理解,应该是149收到交换机发来的消息,然后转发给201或者200,为什么是201先收到交换机发来的数据,然后转发到149呢?

这个问题也困扰了我好久,后来我把201网线断掉之后,重新尝试,发现149和200都没有收到交换机发过来的消息,心想应该是被交换机缓存了(猜测)。之后把服务全停掉,重新设置lvs配置,然后重启。之后看到的tcp流,就和预想中的一样。

当200接收到消息时,只有149和200会收到tcp流信息。同理201;

有人会说我这是多此一举,花了这么久的图,最后还是错的。其实不是这样。起码以后我知道如何查看tcp是否正常,表面上看lvs转发消息时正常的,其实tcp流多走了几步。表面上是负载均衡,其实一台realserver负载非常高。。。。这里可能会导致很多问题。

有人想要正常的tcp流图,这里本人不想再多画了,如果有时间再补上吧。可以按照上面的图,把交换机接受的数据移植到149上,就是正常的图啦。

下面补上正确的lvs-er模式的tcp流图,201收到消息时同理:

有了正确的图理解原理更加方便了。

问题2:vs-dr如何转发消息的?

由上图3中第二步骤可以看出,director接受到交换机的请求,然后根据算法选取一台realserver,并且把包转发过去,realserver接收到包后,直接把结果返回给交换机,而没有走director。

具体步骤:

1.    接收到源mac地址为38:22:d6:6c:07:5d,目的地址为00:1A:4D:8C:FA:D5。源ip为192.168.0.237、目的ip为192.168.30.149

2.    vs根据负载均衡,把源mac地址改为00:1A:4D:8C:FA:D5,目的地址改为00:26:18:45:D7:88。源ip和目的ip都不变

3.    realserver(00:26:18:45:D7:88)接收到请求,做出响应。源ip改为192.168.30.149,目的ip改为192.168.0.237

4.    realserver的消息源mac为00:26:18:45:D7:88,目的mac地址为38:22:d6:6c:07:5d。所以跳过了149,直接返回客户端请求的信息。

今天画图画累了,明天有空再讲下具体配置问题。。。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
456 11
|
负载均衡 网络协议 Linux
LVS,软负载均衡
LVS(Linux Virtual Server)是一项广泛应用的负载均衡技术,由章文嵩博士于1998年发起,自Linux 2.4.24版本起成为官方内核的一部分。LVS通过四层负载均衡技术实现高性能、高可用的服务器集群,支持多种调度算法和工作模式(如D-NAT、full-NAT、IP隧道、DR),适用于HTTP、数据库等应用。相比7层负载均衡器(如Nginx、HAProxy),LVS具有更高的并发处理能力和更低的资源消耗,适合大规模流量分发。本期文章详细介绍了LVS的工作原理、优势与不足,并对比了常见的负载均衡产品,帮助读者根据具体需求选择合适的解决方案。
2400 6
LVS,软负载均衡
|
负载均衡 IDE Java
SpringBoot整合XXL-JOB【04】- 以GLUE模式运行与执行器负载均衡策略
在本节中,我们将介绍XXL-JOB的GLUE模式和集群模式下的路由策略。GLUE模式允许直接在线上改造方法为定时任务,无需重新部署。通过一个测试方法,展示了如何在调度中心配置并使用GLUE模式执行定时任务。接着,我们探讨了多实例环境下的负载均衡策略,确保任务不会重复执行,并可通过修改路由策略(如轮训)实现任务在多个实例间的均衡分配。最后,总结了GLUE模式和负载均衡策略的应用,帮助读者更深入理解XXL-JOB的使用。
1018 9
SpringBoot整合XXL-JOB【04】-  以GLUE模式运行与执行器负载均衡策略
|
负载均衡 算法 应用服务中间件
5大负载均衡算法及原理,图解易懂!
本文详细介绍负载均衡的5大核心算法:轮询、加权轮询、随机、最少连接和源地址散列,帮助你深入理解分布式架构中的关键技术。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
5大负载均衡算法及原理,图解易懂!
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
2058 4
|
运维 负载均衡 网络协议
LVS+Keepalived 负载均衡
LVS+Keepalived 负载均衡
493 8
LVS+Keepalived 负载均衡
|
负载均衡 网络协议
slb健康检查的基本原理
slb健康检查的基本原理
341 6
|
负载均衡 应用服务中间件 Apache
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
329 3
|
域名解析 运维 负载均衡
LVS+Keepalived 负载均衡(二)28-1
【8月更文挑战第28天】LVS+Keepalived 负载均衡 配置 LVS VIP
349 6
|
负载均衡 算法 调度
负载均衡原理分析与源码解读
负载均衡原理分析与源码解读