LVS+DR模式 ③

接上一个博客

DR模式

用户的请求被调度器动态地分配到真实服务器上,真实服务器响应请求把结果直接返回给用户。不过,在这种模式下不会封装IP,而是将数据帧的MAC地址改为真实服务器的MAC地址。DR模式架构如下图所示。

 DR模式LVS搭建

DR模式需要三台虚拟机,三台虚拟机只需要有“公网”IP,但在这种模式下又多了一个VIP。对应的机器和IP如下:

调度器dir:          192.168.200.95

真实服务器rs1:192.168.200.56

真实服务器rs2:192.168.200.53

            VIP:        192.168.100.139

首先把两台rs的网关改成原始网关,不能继续设置为dir的IP地址了。然后需要在dir上编写一个shell脚本

[root@dir ~]# vim /usr/local/sbin/lvs_dr.sh
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/usr/sbin/ipvsadm
vip=192.168.100.139
rs1=192.168.200.56
rs2=192.168.200.53
#注意这里的网卡名字
ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev ens33:2
$ipv -C
$ipv -A -t $vip:80 -s wrr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1

两台rs上也需要编写脚本

[root@rs1 ~]# vim /usr/local/sbin/lvs_rs.sh  //两台rs上添加的内容一致
#/bin/bash
vip=192.168.100.139
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
#参考文档www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html
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

分别在三台机器上执行各自脚本:

[root@dir ~]# bash /usr/local/sbin/lvs_dr.sh 
[root@rs1 ~]# bash /usr/local/sbin/lvs_rs.sh 
[root@rs2 ~]# bash /usr/local/sbin/lvs_rs.sh 

执行完三个脚本后,就可以测试了。但这次不可以直接在dir上用curl命令直接测试了,因为VIP在三台机器上都有设置。所以只能用浏览器来测试结果,如下图所示:

 

 

 

 

posted @ 2022-03-03 15:13  年年哎  阅读(77)  评论(0)    收藏  举报