负载均衡之LVS/DR模式

和NAT模式不同,DR的负载均衡调度器工作在网络七层协议中的数据链路层,也就是第二层。它通过修改数据包的目标MAC地址,将数据包转发到实际应用服务器上,最重要的是,实际服务器的响应数据包将直接返回给用户端,而不需要经过负载调度器

1、LVS、DR简介

LVS 是Linux Virtual Server的简称,在实际环境中经常作为B/S结构的网络应用中的负载均衡器来使用,工作在7层网络模型中的,网络层,也就是通常说的IP层,由于数据的处理是在Linux内核态完成的,所以相对反向代理服务器来说,性能一般会高一些;

DR 是Direct Routing直接路由的简称,应答包通过单独的路由方法返回给客户端。不需要隧道结构,因此可以使用大多数linux操作系统做为物理服务器。

2、简单的LVS/DR架构图

这里我简单画一下LVS/DR模式在应用时的部署环境:

我们先假设百度用的是这种架构模型(实际上百度是什么架构我也没有实地调研过)

然后来模拟下用户访问百度的情况。

1.用户在浏览器输入http://www.baidu.com,
用户的电脑通过网络询问DNS,www.baidu.com域名的IP地址。

2.DNS服务器通过用户的地址,在服务器列表里选择一个可能是距离用户最近的LVS虚拟服务IP地址或者一个按照轮询策略的地址。

可以用ping
www.baidu.com,能看到会返回一个IP地址,这个IP地址就是我们DNS返回给我们的地址。也可以用dig命令,能够看到www.baidu.com
实际对应了3个IP地址

3.用户浏览器通过DNS获得的IP地址,访问LVS服务器

4.进入LVS/DR模式,LVS将数据包提供给APACHE或者nginx构建的反向代理服务器;

5.反向代理服务器最终将请求送给应用服务器;

6.应用服务器完成用户请求之后,通过反向代理服务器直接返回给用户,而不需要通过LVS服务器。

3、IP别名

上面是从用户的数据的角度来看运行的情况,在这里面,会涉及到一个技术,那就是IP别名。它对于直接路由负载均衡的实现及其重要。一个网络接口可以有一个IP地址,但是一个网络接口也可以有多个IP地址,这些地址就叫做IP别名。

通过DR模式的负载均衡,调度器通过修改数据包的目标MAC地址,将数据转发给实际应用服务器。但是注意了,在这里并没有修改目标IP地址,当我们把数据转发出去之后,数据包发现自己来到了一个不应该来的地方,怎么办?

我开车去一个陌生的地方(南浦大桥),不认识路,于是我问路边的人(负载均衡设备),他告诉我一个地址(LVS地址),我开车往路人指导的方向开,我开呀开呀,路边的指示牌写的是卢浦大桥(实际应用服务器地址)。

如果我不认识路,那我肯定是傻眼了,怎么办,在指示牌的卢浦大桥的下面,加上南浦大桥的字样。

这样,我看到了南浦大桥的指示牌,我就能够按照指示牌继续前进。

IP别名就类似在一个指示牌上写上了“卢浦大桥”和“南浦大桥”。

我们要做的,就是给实际应用服务器添加和调度器IP地址相同的IP别名,这样才能让数据包正常运行。

除此以外,要防止实际应用服务器相应来自网络中针对IP别名的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

4、配置LVS/DR

在调度器上进行设置,和NAT模式类似

Ipvsadm –a –t 122.12.12.12:80 –s rr

Ipvsadm –a –t 122.12.12.12:80 –r 10.0.0.100:8000 –g

Ipvsadm –a –t 122.12.12.12:80 –r 10.0.0.101:8000 –g

在添加实际应用服务器,要用-g选项,这代表告诉调度器使用直接路由的方式转发数据包

5、性能

相对LVS/NAT模式,DR模式不需要把返回的数据,通过负载均衡是被转发,想要他发挥优势,那么就要相应的数据包的数量和长度远远大于请求数据包,幸运的是,大部分WEB服务都具备这样的特点,响应和请求并不对称,因此常用的WEB服务,都可以使用这种模式。

这种方式,负载均衡器不再是系统的瓶颈。如果你的负载均衡器只拥有100M的全双工网卡和带宽的话,通过集群的横向扩展也可以让整个系统达到1G的流量。

来自LVS官方站点的测试结果也告诉我们,LVS-DR可以容纳100台以上的实际应用服务器,对一般的服务而已,这样的表现足够了。

6、缺点

DR模式下不能跨网段转发数据,如果必须要跨网段进行负载,那么就必须使用LVS/TUN模式。

时间: 2024-10-26 06:29:27

负载均衡之LVS/DR模式的相关文章

负载均衡(LVS DR模式搭建,DR只用一个公网ip,Keepalived+LVS DR)

一.LVS DR模式搭建 准备工作 三台机器: 分发器,dir:192.168.52.100 rs1:192.168.52.101  (网关改回来,之前nat模式改成100) rs2: 192.168.52.102  (网关改回来,之前nat模式改成100) vip:192.168.52.200   (这个虚拟ip需要绑定在每台机器上) 分发器dir上: [[email protected] ~]# iptables -F [[email protected] ~]# vim /usr/loca

LVS负载均衡群集之DR模式+keepalived群集机构(理论+实践篇)

LVS-DR数据包流向分析 为方便进行原理分析,将Client与群集机器放在同一网络中,数据包流经的路线为1-2-3-4 Client向目标VIP发出请求, Director (负载均衡器)接收 Director根据负载均衡算法选择RealServer 1,不修改也不封装IP报文,而是将数据帧的MAC地址改为RealServer 1的MAC地址,然后在局域网上发送. RealServer_ _1收到这个帧,解封装后发现目标IP与本.机匹配(RealServer事先绑定 了VIP),于是处理这个报

负载均衡之LVS TUN模式(IP隧道)

1.LVS.TUN简介 LVS 是Linux Virtual Server的简称,在实际环境中经常作为B/S结构的网络应用中的负载均衡器来使用,工作在7层网络模型中的,网络层,也就是通常说的IP层,由于数据的处理是在Linux内核态完成的,所以相对反向代理服务器来说,性能一般会高一些: TUN 是IP Tunneling ,IP隧道的简称,它将调度器收到的IP数据包封装在一个新的IP数据包中,转交给应用服务器,然后实际服务器的返回数据会直接返回给用户. 2.简单的LVS/TUN架构图 这里我简单

LVS负载均衡架设,DR模式

lvs-dr模型 : 直接路由 Director在实现转发时不修改请求报文的IP首部,而是通过直接封装MAC首部来完成转发,目标MAC是Director根据调度方法挑选出的某RS的MAC地址 拓扑结构有别于NAT类型 架构特性: (1) 保证前端路由器将目标地址为VIP的请求报文通过ARP地址解析后送往Director 解决方案: 1.静态绑定:在前端路由直接将VIP对应的目标MAC静态配置为Director的MAC地址,不靠谱也不常用 2.arptables:在各RS上,通过arptables

LVS负载均衡群集——keepalived+DR模式(实战!)

keepalived实现原理 keepalived采用vrrp热备份协议,实现Linux服务器的多机热备功能vrrp,虚拟路由冗余协议,是针对路由器的一种备份解决方案 keepalivd案列讲解 keepalived可实现多机热备,每个热备组有多台服务器,最常用的就是双机热备双机热备的故障切换是由虚拟IP地址的漂移来实现,适用于各种应用服务器 DR模式原理 实验环境 CentOS7系统: DR1 主: 192.168.100.2 DR2 备: 192.168.100.20 虚拟IP:192.16

负载均衡之LVS/NAT模式

1.LVS.NAT简介 LVS 是Linux Virtual Server的简称,在实际环境中经常作为B/S结构的网络应用中的负载均衡器来使用,工作在7层网络模型中的网络层,也就是通常说的IP层,由于数据的处理是在Linux内核态完成的,比起在第七层工作的负载均衡设备来说,理论上性能要高一些. NAT 是Network AddressTranslation,网络地址转换的简称,借助于NAT,私有(保留)地址的"内部"网络通过路由器发送数据包时,私有地址被转换成合法的IP地址,一个局域网

Web负载均衡(ipvsadm,DR模式)

Ubuntu 上ipvsadm负载均衡(DR模式,以80端口为例) 说明:3台服务器,ip分别为:10.0.1.2  10.0.1.3  10.0.1.4  虚拟ip:10.0.1.10 ipvsadm服务器(10.0.1.2) $ sudo apt-get install ipvsadm $ sudo ifconfig eth0:0 10.0.1.10 netmask 255.255.255.255 broadcast 10.0.1.10 $ sudo ip a (查看设置是否生效) $ su

应用负载均衡之LVS(三):使用ipvsadm以及详细分析VS/DR模式

*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hljs-comment, .hljs-template_comment, .diff .hljs-header, .hljs-javadoc { color: #998; font-style: italic; } .hljs-keyword, .css .rule .hljs-keyword, .h

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性

Linux 虚拟服务器(LVS)由章文嵩在国防科技大学就读博士期间创建利用LVS可以实现高可用的.可伸缩的Web.Mail.Cache和Media等网络服务,已经被集成到linux内核里了. 1.什么是集群? 使用一组服务器提供相同的服务2.使用集群的目的? 增强可靠性   降低成本   提高可扩展性   提高性能3.集群分类? HPC 高性能计算集群    (气象   航天   航空)    LB    负载均衡集群 (平均地分摊处理)    * LVS    hproxy HA    高可用