1.DR模式的原理
其实就是在一台主机上面搭建lvs服务器,设置lvs的工作模式是DR模式,lvs仅仅是一个调度器,它会把客户端的请求转发给后备服务器
DR模式直接由后备服务器把数据返回给客户端,不需要逆向发送数据包,此时lvs专注做调度就可,效率很高
此时lvs调度器叫做DS调度器(director server),RS是真正的后端web服务器(real server)
Client发送请求 --> DS(调度器) -->prerouting --> INPUT -->postrouting -->RS(真正的服务器)–>lo回环接口 --> 网卡eth0 -->Client
整个过程的数据流向如下
用户(client)发送请求给调度器(DS),DS调度器先把请求发往prerouting链(内核空间kernal space),确定请求的是不是VIP
到了INPUT链之后,如果请求的是集群服务,会在这里修改MAC地址,把源MAC地址改为DS的MAC地址
把目的MAC地址改为RS的MAC地址,此时IP仍然不变,处理完成后把请求发往postrouting链
检测请求的是否为RS(会检测请求的MAC地址),如果是,接受请求,把请求通过回环接口发给出口的网卡,再发回给客户端
数据在系统内的交流用的是回环接口,与外部的交流用的是网卡eth0
DR模式高效的原因就是RS服务器会直接响应客户端的请求,发送的请求一直往前发送数据包,不会再返回数据包给调度器
注意:这里的prerouting,input,postrouting都是iptables防火墙里面的链,如果不懂先回去复习iptables
2.DR模式中的名词解释
DS | 调度器,lvs的前端设备 |
---|---|
RS | 真正提供服务的后端服务器 |
RIP | 后端服务器的ip地址 |
DIP | 调度器和后端服务器通信的ip |
源IP | CIP(客户端的IP) |
目的IP | VIP(设置的统一入口),对外公布的ip,客户请求进来的ip |
源MAC地址 | DS调度器的MAC地址 |
目的MAC地址 | RS真正服务器的MAC地址 |
3.DR模式的特点
所有的请求报文都是由调度器(DS)进行调度的
DR模式不支持端口映射
RS和DS必须在同一网络,可以不在同一网段,使用交换机即可
MAC地址在第二层,数据链路层,还没有到IP所在的网络层
realserver的RIP和Director的DIP必须处于同一网段中,以便使用MAC地址进行通信
realserver上必须配置VIP地址,以便接收director转发过来的数据包,以及作为响应报文的源IP
realserver响应给客户端的数据包的源和目的IP为VIP—>CIP
director只处理入站请求,响应请求由realserver完成
七层调度(负载均衡),4层分摊流量
LVS(Linux Virtual Server)Linux虚拟服务器
附着在netfilter上,有5个内置的钩子函数处理内置的请求,工作在4层模型上,会强行改变数据的流向
它不接受请求,只是一个调度器,把请求发给后端真正的服务器(RS)
LVS包括两个东西:
(1)IPVS:工作在INPUT链,依附于5个内置钩子函数,其实就是一段代码,已经集成在LInux的源码中
(2)IPVSADM:具体编写策略的工具
DR模式改变的是MAC地址
DR模式可能会有人恶意连接,一直发送数据包给一台后端服务器,不轮询,导致后端服务器瘫痪,可以解决
4.搭建实验环境
一共需要3台rhel7.5版本的虚拟机
主机信息 | 主机的功能(服务) |
---|---|
真机172.25.8.250 | 客户端client |
server1(172.25.8.1) | lvs调度器(DS) |
se |