关于LVS的基本介绍--LVS/DR模型

1.LVS/DR模型的原理和特点

原理:
重点:将请求报文的目标MAC地址设定为挑选出的RS的MAC地址
关于LVS的基本介绍--LVS/DR模型_第1张图片关于LVS的基本介绍--LVS/DR模型_第2张图片

1、当用户请求到达Direector Server,此时请求的数据报文会先到内核空间的PREROUTING链,
此时报文的源IP为CIP,目标IP为VIP
2、PREROUTING检查发现数据包的目标IP是本机,将数据包发送到INPUT链
3、IPVS比对数据包请求的服务是否为集群服务,
若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改为DIP的MAC地址,
然后将数据包发至POSTROUTING链,
此时的源IP和目标IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址
4、由于DS和RS在同一个网络中,所以是通过二层来传输,
POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server
5、RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文,
处理完之后,将响应报文通过lo接口传送给eth0网卡然后向外发出,
此时的源IP地址为VIP,目标IP为CIP
6、响应报文最终送达至客户端

特点:

  • 保证前端路由将目标地址为VIP报文统统发送给Director Server,而不是RS
  • RS跟Director Server必须在同一个物理网络中
  • 所有的请求报文经由Director Server,但 响应报文必须不能经过Director Server
  • 不支持地址转换,也不支持端口映射
  • RS可以是大多数常见的操作系统
  • RS的网关绝不允许指向DIP(因为我们不允许它经过director)RS上的lo接口配置VIP的IP地址
  • 缺陷:RS和DS必须在同一机房中

2.ARP协议详解

关于LVS的基本介绍--LVS/DR模型_第3张图片
ARP请求

  • 任何时候,当主机需要找出这个网络中的另一个主机的物理地址时,
  • 它就可以发送一个ARP请求报文,
  • 这个报文包含了发送方的MAC地址和IP地址,以及接收方的IP地址
  • 因为发送方不知道接收方的物理地址,所以这个查询分组会在网络中进行广播

ARP响应

  • 局域网中的每一台主机都会接受并处理这个ARP请求报文
  • 然后进行验证,查看接收方的IP地址是不是自己的地址,
  • 只有验证成功的主机才会返回一个ARP响应报文,
  • 这个响应报文包含接收方的IP地址和物理地址
  • 这个报文利用收到的ARP请求报文中的请求方物理地址以单播的方式直接发送给ARP请求报文的请求方

参数arp_ignore和arp_announce

  • 参数arp_ignore和arp_announce都和ARP协议有关,主要用于控制系统返回arp响应和发送arp请求时的动作
  • 特别是在LVS的DR场景下,它们的配置直接影响到DR转发是否正确
  • arp_ignore参数 的作用是控制系统在收到外部的arp请求时,是否要返回arp响应
  • 1:只响应目的ip地址为接收网卡上的本地地址的arp请求
  • arp_announce参数 的作用是控制系统在对外发送arp请求时,如何选择arp请求数据包的源ip地址
  • 2:忽略ip数据包的源ip地址,选择该发送网卡上最合适的本地地址为arp请求的源ip地址

3.搭建DR模式

实验前的准备
一台客户端:hostname为foundation76.ilt.example.com
一台Real Server:hostname为number1
两台Director Server:hostname为number2和number3

1>Real Server的配置

  • yum install ipvsadm -y #安装ipvsadm
  • ipvsadm -l #查看编写策略
  • ipvsadm -ln #若使用-l 速度较慢,则可以使用-ln纯数字传输,速度较快
    关于LVS的基本介绍--LVS/DR模型_第4张图片关于LVS的基本介绍--LVS/DR模型_第5张图片
  • ipvsadm -A -t 172.25.254.100:80 -s rr #调度策略,rr轮询
-A:--add-server,添加一条新的虚拟服务
-t:TCP/UDP协议的虚拟服务
-s:调度算法(10种)
  • ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.2:80 -g #给ipvs后端的Real Server添加策略
  • ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.3:80 -g
-g:后端两个rs,指明为DR模式
-a:在一个虚拟服务器中添加一个真实的服务器
-g | -m | -i :LVS模式为DR | NAT | TUN
-t:说明虚拟服务器提供的是tcp的服务

在这里插入图片描述

  • ip addr add 172.25.254.100/32 dev eth0 #临时添加VIP
  • 32为D类IP地址,以一个字节(32)开头,是一个专门保留的地址,并不指向特定的网络,目前被用在多点广播中,多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机
  • ip addr show #查看是否添加成功
  • ipvsadm -ln #查看策略是否添加成功
    关于LVS的基本介绍--LVS/DR模型_第6张图片

2>Director Server的配置

两台主机配置相同

  • ip addr add 172.25.254.100/32 dev eth0 #临时添加VIP
  • ip addr show #查看是否添加成功
  • cd /var/www/html/ #切换到httpd服务的默认发布目录下
  • vim index.html #编写默认发布文件
  • systemctl start httpd #开启httpd服务
    关于LVS的基本介绍--LVS/DR模型_第7张图片关于LVS的基本介绍--LVS/DR模型_第8张图片
    关于LVS的基本介绍--LVS/DR模型_第9张图片
  • yum whatprovides */arptables #查询arptables的软件
  • yum install arptables-0.0.4-8.el7.x86_64 -y #安装
    关于LVS的基本介绍--LVS/DR模型_第10张图片关于LVS的基本介绍--LVS/DR模型_第11张图片
    在这里插入图片描述

方式一(建议使用)

  • arptables -nL #查看策略
  • arptables -A INPUT -d 172.25.254.100 -j DROP #添加策略,让目的地址为172.25.254.100的访问不能到达Real Server(来的arp,如果目的ip是vip,丢弃)
  • arptables -A OUTPUT -s 172.25.254.100 -j mangle --mangle-ip-s 172.25.254.2 #发出去的arp包,如果源ip是vip,就改成Real Server的ip
    关于LVS的基本介绍--LVS/DR模型_第12张图片关于LVS的基本介绍--LVS/DR模型_第13张图片
    方式二
sysctl -w net.ipv4.conf.lo.arg_ignore=1
sysctl -w net.ipv4.conf.lo.arg_announce=2
sysctl -w net.ipv4.conf.all.arg_ignore=1
sysctl -w net.ipv4.conf.all.arg_announce=2
sysctl -p:立即生效

3>客户端测试

  • arp -d 172.25.254.100 #清除缓存
  • arp -an | grep 100 #查看arp
  • curl 172.25.254.100
    关于LVS的基本介绍--LVS/DR模型_第14张图片

4.调度器的健康状况检查

  • 配置高可用的yum源解决软件的依赖性

关于LVS的基本介绍--LVS/DR模型_第15张图片
关于LVS的基本介绍--LVS/DR模型_第16张图片

  • yum install ldirectord-3.9.5-3.1.x86_64.rpm -y #安装软件
  • rpm -qpl ldirectord-3.9.5-3.1.x86_64.rpm #查看安装成功后生成文件的路径
  • cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/
  • cd /etc/ha.d/
  • vim ldirectord.cf #编辑此文件
  • 将规则写入服务中,这个服务会帮我们配置规则,会进行后端的健康状况检查
checktimeout=3 #等待健康状况检查的时间单位为秒
checkinterval=1 #每次检查相隔的时间为1秒
autoreload=yes #若后端的服务有改变,会自动的更改ipvs的规则
quiescent=no #将策略直接从ipvs的服务中移除,不是暂停
receive="Test Page" #指定请求和应答的字符串虚拟服务(需要注释)
virtualhost=www.x.y.z #虚拟服务器的名称(需要注释)

在这里插入图片描述关于LVS的基本介绍--LVS/DR模型_第17张图片
关于LVS的基本介绍--LVS/DR模型_第18张图片
关于LVS的基本介绍--LVS/DR模型_第19张图片
在这里插入图片描述
关于LVS的基本介绍--LVS/DR模型_第20张图片
测试:
关于LVS的基本介绍--LVS/DR模型_第21张图片
在这里插入图片描述
关于LVS的基本介绍--LVS/DR模型_第22张图片关于LVS的基本介绍--LVS/DR模型_第23张图片
在这里插入图片描述

你可能感兴趣的:(Linux企业实战)