LVS-DR

lvs-dr

  • 默认系统模型★★★★★

lvs-dr模型简介

◇ LVS-DR:Direct Routing,直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变。

  • DR(Direct Routing) 直接路由:简单的说请求报文和响应报文并不是同一路径。请求报文在lvs时进行调度至RS,RS的响应报文可以不经过lvs,直接发送给client。
  • lvs-nat模型中,由于lvs既要处理响应报文,又要处理请求报文,lvs服务器任意成为性能瓶颈,但是在LVS-DR模型中,lvs服务器只处理请求报文,在平时的网站访问,请求报文一般都只有主机头,上传资源才会有报文实体,因此在lvs-dr模型中,lvs服务器的压力大大减少。

问题:基于以上描述,目前存在的问题:在lvs-dr模型中,①lvs服务收到请求的数据报文是如何处理数据报文的转发的呢?②RS如何将数据报文直接返回给client?

lvs-dr模型原理

②RS如何将数据报文直接响应给client?

◇ ②RS如何将数据报文直接响应给client?
   分析:client的请求报文: src ip 为cip;dst ip 为vip。因此RS要直接将响应报文传给client时,响应报文的src ip应该为vip,dst ip为cip。

  • 解决办法:在每个RS服务器均配置一个vip。但是配置一个vip将引发新的问题。
  • 新问题:lvs服务器和rs服务器在同一网段中时,这么多主机均配置vip涉及到地址冲突,ip地址的获取原理。==>现在RS配置vip就需要解决地址冲突问题。

◇ 什么原理导致的地址冲突?网络中通过ARP广播获取ip地址对应的MAC地址。

  • 地址冲突原理如下:
- hostA(假设ip为192.168.38.17)需要与ip为192.168.38.57通信,通信过程如下:
通信ARP:
①首先通过ARP广播询问:ARP数据报文如下:
    ARP, Request who-has 192.168.38.57 tell 192.168.38.17


②然后ip为192.168.38.57的主机将回复:
    ARP, Reply 192.168.38.17 is-at 00:0c:29:c0:a0:4d, length 28
    将自己ip对应的MAC地址回应给hostA


③地址冲突:当一个局域网内多台主机配置同一ip地址,那么通信方根据ip地址询问时,收到同一ip的多个主机MAC。


免费ARP:
    当配置ip地址时,此时会往局域网中发送免费ARP,
    询问网络中是否有主机使用此ip地址?连问好几次,然后才对外宣称本机的mac地址使用此ip地址。

◇ 解决地址冲突:(三种方式)
   (1) 在前端网关做静态绑定
   (2) 在各RS使用arptables
   (3)在各RS修改内核参数,来限制arp响应和通告的级别

◇ 在各RS修改内核参数,来限制arp响应和通告的级别

  限制响应级别:arp_ignore

  • 0:默认值,表示可使用本地任意接口上配置的任意地址进行响应
  • 1: 仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时,才给予响应

  限制通告级别:arp_announce

  • 0:默认值,把本机所有接口的所有信息向每个接口的网络进行通告
  • 1:尽量避免将接口信息向非直接连接网络进行通告
  • 2:必须避免将接口信息向非本网络进行通告

:修改内核参数的实现见实验部分

arp_ignore:相当于忽略网络中的ARP询问网络中的ARP广播:
    忽略这种信息:ARP, Request who-has 192.168.38.57 tell 192.168.38.17


arp_announce:相当于不对外宣称自己配置一个ip地址,即不发送免费ARP
①lvs服务收到请求的数据报文是如何处理数据报文的转发的呢?

◇ ①lvs服务收到请求的数据报文是如何处理数据报文的转发的呢?

  • 当lvs收到client的请求报文时,然后将请求报文中的dst ip的Mac地址改为RS的MAC。
  • :只修改请求报文中的Mac地址,不支持端口映射

LVS-DR体系结构

DR模式IP包调度过程

DR模式

lvs-dr模型的特点

◇ (1) Director和各RS都配置有VIP
◇ (2) 确保前端路由器将目标IP为VIP的请求报文发往Director
◇ (3)RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director
◇ (4)RS和Director要在同一个物理网络
◇ (5)请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client
◇ (6)不支持端口映射(端口不能修败)
◇ (7)RS可使用大多数OS系统

实验部分:lvs-dr的实现

lvs-dr实验拓扑图

lvs-dr实验准备

◇ 配置linux的网络环境

  • 按照拓扑图将对应的主机配置好对应的网卡模式和ip地址

lvs-dr实验规划

◇ 由实验拓扑图知实验需要5台linux,并将对应的网络作如下配置:

  • hostA
    client centos7 cip 仅主机模式:192.168.6.6
    默认路由:192.168.6.17

  • hostB
    route centos7 :
    仅主机ip:192.168.6.17
    NAT模式ip:192.168.38.17

  • hostC
    lvs centos7
    NAT dip:192.168.38.27
    默认路由:192.168.38.17(仅做转发时,默认路由可以随便设置,主要让数据报文能通过网卡转发出去)

  • hostD
    rs1 centos7
    rs1 NAT rip1:192.168.38.37
    默认路由:192.168.38.17

  • hostE
    rs2 centos7
    rs2 NAT rip2:192.168.38.47
    默认路由:192.168.38.17

RS配置

◇ ①提供web服务,安装httpd,并启动
◇ ②在各RS修改内核参数,来限制arp响应和通告的级别
◇ ③在RS网卡设备配置vip

  • :vip可配置在回环网卡上,但是回环网卡如果要与除本机外的设备通信,则需要在物理网卡配置一个与回环网卡配置的ip在同一网段才行,否则回环网卡配置的ip地址仅能在当前主机通信。
    ◇ ④配置路由表信息:指向路由器
②修改内核参数:
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore;echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore;echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce;echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
③在RS网卡设备上添加vip
# ip a a 192.168.38.27 dev eth0
④配置路由表信息:
[root@rs1 ~]# vim ifcfg-eth0
    GATEWAY=192.168.38.17


临时添加:
[root@rs1 ~] route add default gw 192.168.38.17
RS1主机上所有配置:
[root@RS1 ~]# yum install httpd -y
[root@RS1 ~]# echo RS1:192.168.38.37 > /var/www/html/index.html
[root@RS1 ~]# systemctl start httpd
[root@RS1 ~]# curl 192.168.38.37
RS1:192.168.38.37
[root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore;echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore;echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce;echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@rs1 ~]# ip a a 192.168.38.27/24 dev eth0
RS2主机所有配置
[root@RS2 ~]# yum install httpd -y
[root@RS2 ~]# echo RS2:192.168.38.47 > /var/www/html/index.html
[root@RS2 ~]# systemctl start httpd
[root@RS2 ~]# curl 127.0.0.1
RS1:192.168.38.47
[root@rs2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore;echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore;echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce;echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@rs2 ~]# ip a a 192.168.38.27/24 dev eth0

路由器配置

◇ 打开路由转发

临时有效:
[root@route ~]# echo 1 > /proc/sys/net/ipv4/ip_forward


永久生效:
[root@route ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@route ~]# sysctl -p

lvs服务器配置

◇ ①打开路由转发
◇ ②定义lvs调度策略
◇ ③配置路由

  • :lvs服务器必须配置路由信息,(只做调度功能时,可配任意路由设置),不配置路由信息,收到curl http://192.168.38.27 数据报文时,属于本机报文,然后mac转换后,数据报文不能从本主机转发出去。
②定义lvs策略:
[root@lvs ~]# ipvsadm -A -t 192.168.38.27:80 -s rr 
[root@lvs ~]# ipvsadm -a -t 192.168.38.27:80 -r 192.168.38.37 -g 
[root@lvs ~]# ipvsadm -a -t 192.168.38.27:80 -r 192.168.38.47 -g

LVS-DR模式案例

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值