LVS(二)LVS-DR模式

目录

LVS-DR模式架构
LVS-DR模式架构

术语:
1、 DS:Director Server。指的是前端负载均衡器节点。
2、 RS:Real Server。后端真实的工作服务器。
3、 VIP:向外部直接面向用户请求,作为用户请求的目标的IP地址。
4、 DIP:Director Server IP,主要用于和内部主机通讯的IP地址。
5、 RIP:Real Server IP,后端服务器的IP地址。
6、 CIP:Client IP,访问客户端的IP地址

DR(Direct Routing)
直接路由模式(DR模式)要求调度器与后端服务器必须在同一个局域网内,VIP地址需要在调度器与后端所有的服务器间共享,因为最终的真实服务器给客户端回应数据包时需要设置源IP为VIP地址,目标IP为客户端IP,这样客户端访问的是调度器的VIP地址,回应的源地址也依然是该VIP地址(真实服务器上的VIP),客户端是感觉不到后端服务器存在的。由于多台计算机都设置了同样一个VIP地址,所以在直接路由模式中要求调度器的VIP地址是对外可见的,客户端需要将请求数据包发送到调度器主机,而所有的真实服务器的VIP地址必须配置在Non-ARP的网络设备上,也就是该网络设备并不会向外广播自己的MAC及对应的IP地址,真实服务器的VIP对外界是不可见的,但真实服务器却可以接受目标地址VIP的网络请求,并在回应数据包时将源地址设置为该VIP地址。调度器根据算法在选出真实服务器后,在不修改数据报文的情况下,将数据帧的MAC地址修改为选出的真实服务器的MAC地址,通过交换机将该数据帧发给真实服务器。整个过程中,真实服务器的VIP不需要对外界可见。
下图比较老,但是对网络架构描绘的很清晰,IP如何设置显示比较清楚,但也有问题。
lvs调度器接收请求web客户端,分配给真实web服务器。web服务器的响应是通过Non-ARP(一般是主机回环地址VIP)转到内网地址(192.168段),再通过路由器响应给web服务客户端。
在这里插入图片描述
除了图上显示的情况(感觉负载均衡器有网关或路由的感觉,需要两块网卡)以外,还有场景是:
负载均衡器和真实服务器是接在一台交换机上的,这台交换机接入外网,而负载均衡器的一块网卡上设置了内外网两个IP(VIP和DIP)。外网的路由器发包到VIP会通过ARP广播来找到负载均衡器。如下图:
在这里插入图片描述
这张图,结构明白,但是原理显示就不是很清晰了
在这里插入图片描述

LVS-DR工作的基本原理
LVS-DR工作的基本原理

client 发送一个pv请求到VIP;负载均衡器收到这请求后会根据LVS设置的LB算法选择一个比较合理的realserver,然后把此请求的package 的MAC地址修改为realserver的MAC地址,通过二层的交换设备发送给realserver;下面是通信的package的基本格式:
在这里插入图片描述
DR 模式会把packet 里面的dst mac 改成 realserver的MAC 地址;然后负载均衡器会通过DIP把这个包广播到当前的这个LAN里面;所以,要提前保证DIP 和 所有的realserver 在同一个网段。

ARP协议会把这个包发送给真正的realserver

  • 广播IP找到MAC,通过MAC找到realserver
  • 把这个 ip----->realserver 的mac 地址建立一个hash表

realserver 收到这个pachet后,首先判断dst ip 是否是自己的IP地址;如果不是就丢掉包;如果是就处理这个包。

DR模式还要在所有的realserver 的机器上面绑定VIP的ip地址,用于在应答包中作为source ip。为了避免同调度器产生IP冲突,要将VIP配置在Non-ARP的网络设备,一般配置在本地回环上。这是比较难理解的地方。
realserver 处理这个包后,会把本地回环上的VIP作为source IP,web请求客户端的ip作为dst IP通过内外网边界路由器直接发送响应包给 client,不再经过lvs。

LVS-DR详细工作流程
LVS-DR详细工作流程

下图做的非常到位,讲的也到位
来源 http://www.178linux.com/89580
在这里插入图片描述
1、当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
2、PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
3、 IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。 此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址
4、 由于DS和RS在同一个网络中,所以是通过二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server。
5、 RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。 此时的源IP地址为VIP,目标IP为CIP
6、 响应报文最终送达至客户端

LVS-DR模式的特性
LVS-DR模式的特性

(1) 确保前端路由器将目标IP为VIP的请求报文发往Director:
(a) 在前端网关做静态绑定;
(b) 在RS上使用arptables;
© 在RS上修改内核参数以限制arp通告及应答级别;
修改RS上内核参数(arp_ignore和arp_announce)将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP地址解析请求。
(2) RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director;
(3) RS跟Director要在同一个物理网络;
(4) 请求报文要经由Director,但响应不能经由Director,而是由RS直接发往Client;
(5) 不支持端口映射;
缺陷:RS和DS必须在同一机房中

解决VIP冲突
解决VIP冲突

前述realserver中必须将VIP配置到Non-ARP的网络设备上,必须将realserver的lo网卡关闭arp响应:
方法一:
前端有可控制路由或网关,做静态绑定;
方法二:
在各RS使用arptables;arptables稳定性不强,可能会造成其他问题;
方法三:
在各RS修改内核参数,来限制arp响应和通告的级别;可行;
限制响应级别:arp_ignore(响应)
0:默认值,表示可使用本地任意接口上配置的任意地址进行响应;
1: 仅在请求的目标IP配置在本地主机的接收到请求报文接口上时,才给予响应;
限制通告级别:arp_announce(通告)
0:默认值,把本机上的所有接口的所有信息向每个接口上的网络进行通告;
1:尽量避免向非直接连接网络进行通告;
2:必须避免向非本网络通告;

			echo 1> /proc/sys/net/ipv4/conf/lo/arp_ignore
		    echo 1> /proc/sys/net/ipv4/conf/all/arp_ignore
		    echo 2> /proc/sys/net/ipv4/conf/lo/arp_announce
		    echo 2> /proc/sys/net/ipv4/conf/all/arp_announce
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值