【LVS之DR模式】

官方的原理说明:Director接收用户的请求,然后根据负载均衡算法选取一台realserver,将包转发过去,最后由realserver直接回复给用户。

 

请求由LVS接受,由真实提供服务的服务器(RealServer, RS)直接返回给用户,返回的时候不经过LVS。

 

LVS-DR is based on IBM's NetDispatcher. The NetDispatcher sits in front of a set of webservers, which appear as one webserver to the clients. The NetDispatcher served http for the Atlanta and the Sydney Olympic games and for the chess match between Kasparov and Deep Blue.

 

When the packet CIP->VIP arrives at the director it is put into the OUTPUT chain as a layer 2 packet with dest = MAC address of the realserver. This bypasses the routing problem of a packet with dest = VIP, where the VIP is local to the director. When the packet arrives at the realserver, which finds the packet addressed to an IP local to the realserver (the VIP).



 

 

DR模式下需要LVS和绑定同一个VIP(RS通过将VIP绑定在loopback实现)。

 

一个请求过来时,LVS只需要将网络帧的MAC地址修改为某一台RS的MAC,该包就会被转发到相应的RS处理,注意此时的源IP和目标IP都没变,LVS只是做了一下移花接木。

 

RS收到LVS转发来的包,链路层发现MAC是自己的,到上面的网络层,发现IP也是自己的,于是这个包被合法地接受,RS感知不到前面有LVS的存在。

 

而当RS返回响应时,只要直接向源IP(即用户的IP)返回即可,不再经过LVS。

DR模式是性能最好的一种模式。

 

1. ARP广播会产生的问题

当客户端发起访问VIP 对应的域名的请求时,根据网络通信原理会产生ARP 广播,因为负载均衡器和真实的服务器在同一网络并且VIP设置在集群中的每个节点上,此时集群内的真实服务器会尝试回答来自客户端计算机的查找VIP的ARP广播,这就会产生问题,大家都说我是"VIP"。

 

2. 为了达到负载均衡的目的,必须想法办让真实服务器忽略来自客户端计算机的ARP广播请求

虚拟ip地址的广播地址是它本身,子网掩码是255.255.255.255。 为什么要这样呢?因为有若干机器要使用同一个ip地址,

用本身做广播地址和把子网掩码设成4个255就不会造成ip地址冲突了,否则lvs将不能正常转发访问请求。

 

 

LVS负载均衡原理:

    访问集群服务的请求都要先到达Director,由Director根据调度算法。把访问集群服务的请求均衡到后端的RealServer.

根据上述分析,要做下述一些配置:

1、请求报文流入

 因为,我们的 Directory、Realserver1、Realserver2 都配置有VIP地址,所以基于本地通讯的原理

       和LVS负载均衡的工作原理考虑:

 目的:要控制路由器把用户请求访问集群服务的数据报文只送到Director,

       不会把数据报文送到 RealServer.

 手段:通过控制无论任何时候路由器的ARP缓存中:VIP对应的MAC地址都是Director的VIP地址所在的

       网卡的MAC地址。这样保证路由器一定会把数据报文送到Director

 方法

   A)、在路由器做静态地址绑定:

   B)、aprtables,阻止路由器发送的ARP地址解析请求(请求VIP对应的MAC)进入RealServer

   C)、修改ReserServer主机的内核参数,将RS上的VIP配置在lo接口的别名上,并限制其不能响应

        对VIP地址解析请求,也不能把MAC地址通告出去。

LVS的dr模型,Director通过修改请求访问集群服务的报文的MAC地址实现把数据报文分发到后端的RealServer.

 所以,要保证Director能够基于MAC地址与后端的RealServer进行通信。

 方法:Director与RealServer在同一个物理网络。



 

2、响应报文流出

当RealServer 构建完响应报文之后,直接把报文送给客户端。

 因为,客户端请求的是VIP,所以,RealServer 构建的响应的数据报文的源IP是CIP(10.10.0.1)目标IP是VIP(172.10.0.9),客户端才会接收。

 所以,在RealServer中通过主机路由指定使用配置在lo:0的VIP对响应的数据报文进行封装。再通过eth0把响应的数据报文送达客户端。

由于RealServer的RIP是私有网络,不能把数据报文送达客户端。所以给RealServer指定一个默认网关,RealServer把不属于本网络的数据报文发给默认网关由默认网关把数据报文送达客户端。

### 配置 LVS-DR 模式 LVS (Linux Virtual Server) 是一种高效的四层负载均衡解决方案,其 DR (Direct Routing) 模式通过共享虚拟 IP 地址 (VIP),使得客户端请求可以直接路由到真实服务器而无需经过负载均衡器转发数据包[^1]。 #### 1. 基本架构说明 在 LVS-DR 模式下,负载均衡器和真实服务器都需绑定同一个 VIP 地址。为了防止 ARP 广播引发冲突,仅允许负载均衡器对外部网络回应 ARP 请求,而真实服务器则不回应外部的 ARP 请求[^3]。 #### 2. 环境准备 假设环境如下: - **Director(负载均衡器)**: `192.168.1.1` (公网接口),`192.168.10.1`(私网接口) - **Real Servers(真实服务器)**: - RS1: `192.168.10.2` - RS2: `192.168.10.3` - **VIP地址**: `192.168.1.1` #### 3. Director 的配置 ##### 安装 ipvsadm 工具 ```bash yum install -y ipvsadm ``` ##### 添加服务规则 执行以下命令来设置 LVS-DR 模式的调度策略: ```bash ipvsadm -A -t 192.168.1.1:80 -s rr ``` 其中 `-A` 表示添加一条新的虚拟服务记录;`-t` 表明这是 TCP 协议的服务;`rr` 表示轮询算法。 ##### 将 Real Servers 加入集群 分别将两台真实服务器加入到该虚拟服务中: ```bash ipvsadm -a -t 192.168.1.1:80 -r 192.168.10.2:80 -m ipvsadm -a -t 192.168.1.1:80 -r 192.168.10.3:80 -m ``` 这里 `-a` 参数用于向已存在的虚拟服务添加一台真实的服务器实例;`-m` 则指定了采用 DR 方式工作[^4]。 #### 4. 实际服务器端配置 每台实际服务器都需要安装 Web 服务程序并确保能够正常运行。例如对于 Apache HTTPD 可以这样操作: ```bash yum install -y httpd && echo "This is server rs1" >> /var/www/html/index.html && systemctl start httpd ``` 同时还需要手动指定回环设备 lo 使用 VIP 来接收来自 director 发送过来的数据流: ```bash ifconfig lo:0 192.168.1.1 netmask 255.255.255.255 up route add -host 192.168.1.1 dev eth0 echo "1" > /proc/sys/net/ipv4/conf/eth0/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/eth0/arp_announce sysctl -p ``` 以上步骤完成了基本的 LVS-DR 架构部署过程[^2]。 ### 注意事项 - 所有真实服务器必须位于同一物理局域网内以便能直接访问彼此。 - 如果需要持久会话等功能,则可能还需进一步调整参数或引入额外组件支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值