LVS实现负载均衡的DR(直接路由)模式

LVS-DR模式:

1.客户端将访问vip报文发送给LVS服务器;
2.LVS服务器将请求报文的mac地址改为后端真实服务器的mac地址;
3.后端真实服务器得到访问报文后进行ip查看,再确认自己有vip之后进行请求处理;
4.后端真实服务器在处理完数据请求后,直接响应客户端。

LVS-DR模式的部署

1.server1作为调度器,首先配置yum源

一般的yum源配置不能获得ipvsadm的包
在这里插入图片描述
安装ipvsadm
yum install -y ipvsadm
在这里插入图片描述
在这里插入图片描述

2.添加外网ip地址(使客户端通过调度器访问外网)
 ip addr add 172.25.61.100/24 dev eth0
3.编写调度器规则(让客户端在访问172.25.61.100时 采用轮询调度的方式访问server2和server3)
 ipvsadm -A -t 172.25.61.100:80 -s rr
ipvsadm -a -t 172.25.61.100:80 -r 172.25.61.2:80 -g
ipvsadm -a -t 172.25.61.100:80 -r 172.25.61.3:80 -g
ipvsadm -l   #查看规则
保存规则

在这里插入图片描述

4.server2和server3作为rs,做以下部署
(1)安装apache服务,撰写默认发布页
[root@server2 ~]# cat /var/www/html/index.html 
<h1>LVS server2</h1>
[root@server3 ~]# cat /var/www/html/index.html 
<h1>LVS server3</h1>
(2)添加网络
ip addr add 172.25.61.100/32 dev eth0

server2和server3都要添加,子网掩码设置为32是为了与server1之间内网通信,防止恶意攻击

5.测试
[root@foundation61 ~]# curl 172.25.61.100
<h1>LVS server3</h1>
[root@foundation61 ~]# curl 172.25.61.100
<h1>LVS server2</h1>

发现的确轮询,但是有一个问题

[root@foundation61 ~]# arp -an | grep 100   ##查看此时mac地址是server2还是server3的
? (172.25.61.100) at 52:54:00:d6:82:c1 [ether] on br0
[root@foundation61 ~]# arp -d 172.25.61.100  ##清楚缓存
[root@foundation61 ~]# curl 172.25.61.100
<h1>LVS server2</h1>
[root@foundation61 ~]# curl 172.25.61.100
<h1>LVS server2</h1>
[root@foundation61 ~]# curl 172.25.61.100
<h1>LVS server2</h1>

[root@foundation61 ~]# curl 172.25.61.100
<h1>LVS server2</h1>
[root@foundation61 ~]# curl 172.25.61.100
<h1>LVS server2</h1>
[root@foundation61 ~]# arp -an | grep 100
? (172.25.61.100) at 52:54:00:68:00:ef [ether] on br0
[root@foundation61 ~]# arp -d 172.25.61.100
[root@foundation61 ~]# curl 172.25.61.100
<h1>LVS server3</h1>
[root@foundation61 ~]# curl 172.25.61.100
<h1>LVS server2</h1>

原因:因为第一次缓存的mac地址是serve2服务器的,清理了mac缓存之后,重新访问的时候缓存到了调度器的mac地址,就可以轮询了,客户端访问的时候,会随机选取服务器

6.解决办法
在server2和server3上添加火墙策略
server2
yum install arptables_jf -y ##安装
arptables -A IN -d 172.25.61.100 -j DROP
arptables -A OUT -s 172.25.61.100 -j mangle --mangle-ip-s 172.25.61.2
arptables -L #查看火墙策略
/etc/init.d/arptables _jf save  ##保存火墙策略
server3
yum install arptables_jf -y
arptables -A IN -d 172.25.61.100 -j DROP
arptables -A OUT -s 172.25.61.100 -j mangle --mangle-ip-s 172.25.61.3
arptables -L #查看火墙策略
/etc/init.d/arptables _jf save  ##保存火墙策略
7.在进行测试
[root@foundation61 ~]# curl 172.25.61.100
<h1>LVS server3</h1>
[root@foundation61 ~]# curl 172.25.61.100
<h1>LVS server2</h1>
[root@foundation61 ~]# curl 172.25.61.100
<h1>LVS server3</h1>
[root@foundation61 ~]# curl 172.25.61.100
<h1>LVS server2</h1>
[root@foundation61 ~]# arp -d 172.25.61.100
[root@foundation61 ~]# arp -d 172.25.61.100
[root@foundation61 ~]# curl 172.25.61.100
<h1>LVS server3</h1>
[root@foundation61 ~]# curl 172.25.61.100
<h1>LVS server2</h1>
[root@foundation61 ~]# curl 172.25.61.100
<h1>LVS server3</h1>

好了,这下访问的时候就可以访问到调度器了,不会出现随机缓存的情况了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值