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

本文介绍了LVS-DR模式的原理,包括客户端发送请求、LVS服务器修改mac地址、后端服务器处理请求并直接响应客户端。还阐述了其部署过程,如调度器配置yum源、安装ipvsadm等,后端服务器安装服务等。最后针对测试中出现的缓存问题给出了添加防火墙策略的解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

  2. LVS-DR模式的部署:
    server1作为调度器,首先配置yum源
    一般的yum源配置不能获得ipvsadm的包
    在这里插入图片描述
    安装ipvsadm

    yum install -y ipvsadm
    

在这里插入图片描述
在这里插入图片描述

  1. 添加外网ip地址(使客户端通过调度器访问外网)

     ip addr add 172.25.61.100/24 dev eth0
    
  2. 编写调度器规则(让客户端在访问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   #查看规则
     保存规则
    

在这里插入图片描述

  1. 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之间内网通信,防止恶意攻击

  1. 测试

     [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地址,就可以轮询了,客户端访问的时候,会随机选取服务器

  1. 解决办法
    在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  ##保存火墙策略
    
  2. 再进行测试

     [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>
    

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值