为了阐述方便,我根据官方原理图另外制作了一幅图,如下图所示:VS/DR的体系结构:

我将结合这幅原理图及具体的实例来讲解一下LVS-DR的原理,包括数据包、数据帧的走向和转换过程。
官方的原理说明:Director接收用户的请求,然后根据负载均衡算法选取一台realserver,将包转发过去,最后由realserver直接回复给用户。
实例场景设备清单:

说明:我这里为了方便,client是与vip同一网段的机器。如果是外部的用户访问,将client替换成gateway即可,因为IP包头是不变的,变的只是源mac地址。
① client向目标vip发出请求,Director接收。此时IP包头及数据帧头信息如下:

② VS根据负载均衡算法选择一台active的realserver(假设是192.168.57.122),将此RIP所在网卡的mac地址作为目标mac地址,发送到局域网里。此时IP包头及数据帧头信息如下:

③ realserver(192.168.57.122)在局域网中收到这个帧,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文。随后重新封装报文,发送到局域网。此时IP包头及数据帧头信息如下:

④ 如果client与VS同一网段,那么client(192.168.57.135)将收到这个回复报文。如果跨了网段,那么报文通过gateway/路由器经由Internet返回给用户。
LVS/DR模式工作原理的常见问题。
1. LVS/DR如何处理请求报文的,会修改IP包内容吗?
1.1 vs/dr本身不会关心IP层以上的信息,即使是端口号也是tcp/ip协议栈去判断是否正确,vs/dr本身主要做这么几个事:
1)接收client的请求,根据你设定的负载均衡算法选取一台realserver的ip;
2)以选取的这个ip对应的mac地址作为目标mac,然后重新将IP包封装成帧转发给这台RS;
3)在hash table中记录连接信息。
vs/dr做的事情很少,也很简单,所以它的效率很高,不比硬件负载均衡设备差多少。
数据包、数据帧的大致流向是这样的:client --> VS --> RS --> client
1.2 前面已作了回答,vs/dr不会修改IP包的内容.
2. RealServer为什么要在lo接口上配置VIP?在出口网卡上配置VIP可以吗?
2.1 既然要让RS能够处理目标地址为vip的IP包,首先必须要让RS能接收到这个包。
在lo上配置vip能够完成接收包并将结果返回client。
2.2 答案是不可以将VIP设置在出口网卡上,否则会响应客户端的arp request,造成client/gateway arp table紊乱,以至于整个load balance都不能正常工作。
3. RealServer为什么要抑制arp帧?
这个问题在上一问题中已经作了说明,这里结合实施命令进一步阐述。我们在具体实施部署的时候都会作如下调整:
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
我相信很多人都不会弄懂它们的作用是什么,只知道一定得有。我这里也不打算拿出来详细讨论,只是作几点说明,就当是补充吧。
3.1
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
这两条是可以不用的,因为arp对逻辑接口没有意义。
3.2 如果你的RS的外部网络接口是eth0,那么
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
其实真正要执行的是:
echo "1" >/proc/sys/net/ipv4/conf/eth0/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/eth0/arp_announce
所以我个人建议把上面两条也加到你的脚本里去,因为万一系统里上面两条默认的值不是0,那有可能是会出问题滴。
arp_ignore:
定义对目标地址为本地IP的ARP询问不同的应答模式0
0 - (默认值): 回应任何网络接口上对任何本地IP地址的arp查询请求
1 - 只回答目标IP地址是来访网络接口本地地址的ARP查询请求
2 -只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内
3 - 不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应
4-7 - 保留未使用
8 -不回应所有(本地地址)的arp查询
确定了向外发送ARP请求的发出地址 也即使VIP 地址
arp_announce - INTEGER
对网络接口上,本地IP地址的发出的,ARP回应,作出相应级别的限制:
确定不同程度的限制,宣布对来自本地源IP地址发出Arp请求的接口
0 - (默认) 在任意网络接口(eth0,eth1,lo)上的任何本地地址
1 -尽量避免不在该网络接口子网段的本地地址做出arp回应. 当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.此时会检查来访IP是否为所有接口上的子网段内ip之一.如果改来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理.
2 - 对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址. 如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送.
限制了使用本地的vip地址作为优先的网络接口
4. LVS/DR load balancer(director)与RS为什么要在同一网段中?
从第一个问题中大家应该明白vs/dr是如何将请求转发给RS的了吧?它是在数据链路层来实现的,所以director必须和RS在同一网段里面。
5. 为什么director上eth0接口除了VIP另外还要配一个ip(即DIP)?
5.1 如果是用了keepalived等工具做HA或者Load Balance,则在健康检查时需要用到DIP。
5.2 没有健康检查机制的HA或者Load Balance则没有存在的实际意义。
6. LVS/DR ip_forward需要开启吗?
不需要。因为director跟realserver是同一个网段,无需开启转发。
7. director的vip的netmask一定要是255.255.255.255吗?
lvs/dr里,director的vip的netmask 没必要设置为255.255.255.255,也不需要再去
route add -host $VIP dev eth0:0
director的vip本来就是要像正常的ip地址一样对外通告的,不要搞得这么特殊.
分享到:
相关推荐
集群及LVS简介、LVS-NAT集群、LVS-DR集群 本文档主要讲解了Linux虚拟服务器(LVS)的基本概念和实现方法,涵盖了LVS的集群模式、LVS-NAT集群、LVS-DR集群等内容。同时,文档还提供了一些实际的案例,包括使用...
LVS-DR 模式原理、流程特点及搭建 LVS-DR 模式是 Load Balancer 的一种实现方式,它可以将incoming请求分配到多个 Real Server 上,以提高系统的可用性和性能。LVS-DR 模式的核心思想是使用 Director 服务器来分配...
### LVS-DR模式详解及配置 #### 一、引言 LVS(Linux Virtual Server)是一种基于Linux内核的高性能负载均衡解决方案,它能够通过不同的工作模式来实现对后端真实服务器(Real Server)的负载分发。本文将重点介绍...
Keepalived+LVS-DR 模式配置高可用负载均衡集群是当前网络应用中一种常见的架构模式。该模式通过 Keepalived 和 LVS-DR two技术结合,实现了高可用负载均衡集群的配置和实现。 一、 LVS 网络拓扑图 LVS(Linux ...
### LVS-DR原理深入解析 #### 一、LVS-DR的工作机制 LVS-DR,即Linux Virtual Server-Direct Routing(直接路由),是一种高效、高性能的负载均衡技术,广泛应用于大型网络环境中的服务器集群管理。其核心优势在于...
**Red Hat 6.5 安装配置 LVS-DR 概述** LVS(Linux Virtual Server)是基于Linux操作系统的一种高性能的负载均衡技术,它能够实现网络服务的高可用性和扩展性。在Red Hat 6.5系统中,我们可以利用LVS-DR(Direct ...
LVS-DR的工作流程如下: 1. 客户端向VIP(虚拟IP)发送请求。 2. Director接收到请求,根据负载均衡算法选择一个Real Server,并将该Real Server的IP对应的MAC地址作为目标MAC,将请求帧转发到局域网。 3. Real ...
**LVS-DR技术详解** LVS(Linux Virtual Server)是一种高性能的虚拟服务器技术,它通过负载均衡技术,使得多台服务器看起来像一台单一的服务器,从而提高服务的可用性和性能。DR(Direct Routing)模式是LVS的一种...
### LVS-DR+Keepalived+Ldirectord构建高可用负载均衡群集知识点解析 #### 1. LVS-DR (Linux Virtual Server - Direct Routing) 概述 - **定义**:LVS-DR是一种基于Linux内核的负载均衡技术,通过直接路由的方式将...
LVS-DR模式是一种基于MAC地址的负载均衡方式,工作在网络层。在该模式下,Director服务器通过修改返回给客户端的数据包的目标MAC地址,将请求直接转发到Real Server,无需经过Director处理数据。这种方式的优点是...
* LVS 集群的概念和工作原理 * CentOS 操作系统的基本配置 * IP 转发的配置和应用 * ipvsadm 工具的使用和配置 * LVS DR 模式的优势和应用 * Round-Robin 集群模式的应用和优点 * 集群网络的测试和验证
【LVS-DR集群详解】 LVS(Linux Virtual Server)是一种开源的企业级四层负载均衡解决方案,以其出色的稳定性和效率而备受赞誉。LVS支持三种常见的工作模式:NAT模式、DR模式(Direct Routing模式)和IP Tunneling...
条码识别-条码质量检测系统(Microscan System)LVS-95XX ISOIEC Static V4.4.0.0 知识点1:条码识别系统的定义和类型 条码识别系统是指通过图像处理和模式识别技术来识别和验证条码的系统。条码识别系统可以分为...
LVS-DR+Keepalived小型网站架构(6台).md
RedHat6.5安装LVS-DR文档及安装介质
《LVS VS-DR 报文过程详解》 LVS(Linux Virtual Server)是一种高性能的负载均衡解决方案,其中VS-DR(Direct Routing)模式是一种基于网络层的负载均衡技术。在VS-DR模式下,客户端的请求直接发送到真实服务器,...
总的来说,"sery-lvs-cluster.pdf"这份文档将引导初学者深入理解LVS集群技术,掌握其基本概念、工作原理、配置方法以及实际应用,对于希望构建高可用网络服务的IT从业者来说是一份宝贵的参考资料。
"条形码校验器 LVS-9580、9585用户手册" 在本手册中,LVS-9580/9585 条形码校验器用户手册详细介绍了 Omron Microscan Systems, Inc. 的条形码校验器 LVS-9580 和 LVS-9585 的使用和维护。下面是从本手册中提取的...
lvs-tun隧道模式的主要原理是基于OSI七层模型,其中第三层网络层负责IP地址,第二层数据链路层负责MAC地址。该模式使用IP隧道协议将数据包封装到另一个IP报文中,使得目标为一个IP地址的数据报文被封装和转发到另一...