LVS四种模式之DR(直接路由)模式

一、实验环境搭建

1. 配置yum源

[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.60.250/iso/LoadBalancer
gpgcheck=0

LVS四种模式之DR(直接路由)模式

2. 安装ipvsadm  #编辑调度策略

yum install ipvsadm -y
/etc/init.d/ipvsadm start

LVS四种模式之DR(直接路由)模式

3. 在server2和3 安装http,并打开

/etc/init.d/httpd start

vim /var/www/html/index.html

LVS四种模式之DR(直接路由)模式

LVS四种模式之DR(直接路由)模式

LVS四种模式之DR(直接路由)模式

4. 编辑调度策略,写完后保存

ipvsadm -A -t 172.25.60.100:80 -s rr  #rr轮循调度
ipvsadm -a -t 172.25.60.100:80 -r 172.25.60.2:80 -g
ipvsadm -a -t 172.25.60.100:80 -r 172.25.60.3:80 -g
ipvsadm -l   # -l 列出当前策略
/etc/init.d/ipvsadm save #保存策略.
cat /etc/sysconfig/ipvsadm  #可通过修改文件修改策略

-A :添加目标策略(向一个记录中添加真实主机)
-t :tcp连接
-s :调度器,接负载均衡的算法

-g:dr模式

-r真实主机ip

LVS四种模式之DR(直接路由)模式

LVS四种模式之DR(直接路由)模式

5. 添加虚拟ip,server1/2/3 上都需要添加

ip addr add 172.25.60.100/24 dev eth0 #server1
ip addr add 172.25.60.100/32 dev eth0 #server2/3

server2/3------> 172.25.50.100/32
设置子网为32的原因:   数据包发现没有100,就会丢弃,不接收外部请求,只进行内部通信

二、测试

在物理机上:

[[email protected] ~]#  curl 172.25.60.100
<h1>server3 - www.westos.org</h1>
[[email protected] ~]#  curl 172.25.60.100
<h1>server2,example.com</h1>
[[email protected] ~]#  curl 172.25.60.100
<h1>server3 - www.westos.org</h1>
[[email protected] ~]#  curl 172.25.60.100
<h1>server2,example.com</h1>

通过mac地址查看缓存是来自哪个服务器的:

[[email protected] ~]# arp -an | grep 100
? (172.25.60.100) at 52:54:00:d1:b7:77 [ether] on br0

LVS四种模式之DR(直接路由)模式

LVS四种模式之DR(直接路由)模式

删除存储的真实服务器硬件地址:

[[email protected] ~]# arp -d 172.25.60.100
[[email protected] ~]# arp -an | grep 100
? (172.25.60.100) at <incomplete> on br0

 无*询 ,是因为客户端存储了真实服务器的地址

[[email protected] ~]# curl 172.25.60.100
<h1>server3 - www.westos.org</h1>
[[email protected] ~]# curl 172.25.60.100
<h1>server3 - www.westos.org</h1>
[[email protected] ~]# curl 172.25.60.100
<h1>server3 - www.westos.org</h1>
[[email protected] ~]# arp -an | grep 100
? (172.25.60.100) at 52:54:00:5d:2d:45 [ether] on br0

缓存是来自server3的

LVS四种模式之DR(直接路由)模式

LVS四种模式之DR(直接路由)模式

三、问题:访问时会访问真实主机(server2/3),会使服务器压力过大。

解决办法:修改内核参数,添加arp,阻止外部的172.25.60.100的访问

具体做法:使用防火墙策略限制用户访问服务器

1. 在server2和3上安装:arptables_jf

yum install arptables_jf -y

LVS四种模式之DR(直接路由)模式

2.编辑策略:在server2/3上

arptables -nL
arptables -A IN -d 172.25.60.100 -j DROP
##-A添加策略 在IN -d 目的地址IP -j 处理方式 DROP 拒绝访问不回应

arptables -A OUT -s 172.25.60.100 -j mangle --mangle-ip-s 172.25.60.2
##管理输出来自38.100的请求 以38.2输出

LVS四种模式之DR(直接路由)模式

测试:在物理机上

[[email protected] ~]# arp -d 172.25.60.100  #清除缓存的mac地址
[[email protected] ~]# curl 172.25.60.100
<h1>server2,example.com</h1>
[[email protected] ~]# curl 172.25.60.100
<h1>server3 - www.westos.org</h1>
[[email protected] ~]# curl 172.25.60.100
<h1>server2,example.com</h1>
[[email protected] ~]# curl 172.25.60.100
<h1>server3 - www.westos.org</h1>
[[email protected] ~]# arp -an | grep 100  
? (172.25.60.100) at 52:54:00:d1:b7:77 [ether] on br0
[[email protected] ~]# 

LVS四种模式之DR(直接路由)模式

缓存的是调度器的mac地址

注意:

  • DR模式下,ds和rs在同一网段内。
  • LVS和后端服务器上都要有vip,并且后端真实服务器上的vip不能对外进行广播。