LVS-DR原理解析【理论知识】
1、LVS DR模型原理
通过修改请求报文的目标 MAC 地址,然后根据算法挑选出合适的 RS 节点,进行转发。(请求进入 DS Server 时做 MAC 地址替换,后端返回数据报文时无需经过 DSServer 节点,直接返回给客户端即可。)
2、DR模型基础图解
3、DR模型底层实现
3.1、原理解析图
3.2、原理问题点
3.2.1、路由器如何找到 VIP 以及 MAC 地址呢?
路由器通过 ARP 广播获取 VMAC ,然后封装 CIP、VIP、CMAC、VMAC ,通过交换机转发至目标主机
3.2.2、RS 处理请求直接返回给 CIP ,不经过 DS ,那么 RS 如何将数据包回传给 CIP
由于 CIP 请求的是 VIP ,而响应是通过 RIP 响应给 CIP ,所以数据报文一定会被丢弃。那么就需要在所有的 RS 的接口上配置 VIP 的地址。由 RS 上的VIP 响应给 CIP 即可。
3.2.3、所有 RS 节点都配置 VIP ,那么路由器在广播的时候,岂不是所有的 VIP 都会响应?
方式1:在路由器上静态绑定 VIP 与 VMAC 的关系。(但可能没有操作权限)
方式2:在所有 RS 节点上配置 ARP 抑制,简单来说就是路由器广播获取VMAC 时,所有的 RS 都不应答,其次所有的 RS 都不对外宣布自己的 VIP
3.2.4、VIP、DIP、RIP 需要在同一网段中吗?
一般来说 DIP 和 RIP 在同一物理网络中,并不一定在同一网段中。
4、DR模型访问流程
1、当用户请求到达 DS节点 ,此时请求的数据报文会先到内核空间的PREROUTING 链。 此时报文的 源IP为CIP , 目标IP为VIP 。 2、PREROUTING 检查发现数据包的 目标IP 是本机,将数据包送至 INPUT 链。 3、IPVS 比对数据包请求的服务是否为集群服务,是则将请求报文中的 源MAC 修改为 DMAC ,将 目标MAC 修改 RMAC ,然后将数据包通过 POSTROUTING 链发出。此时的 源IP 和 目的IP 均未修改,仅将 源MAC 修改为 DMAC , 目标MAC 修改为 RMAC 4、由于 DS 和 RS 在同一个网络中,所以是通过二层来传输。 POSTROUTING 链检查 目标MAC 为 RIP的MAC 地址,那么此时数据包将通过 DIP 发送 RS 节点 5、RS 拆解数据报文发现请求的 IP 地址是本机,则会接收该数据报文,而后构建响应报文向外发出,此时的 源IP 是 VIP , 目标IP 是 CIP 6、响应报文最终送达至客户端
5、DR模型特性
1、请求报文必须由 DS 节点转发,但响应报文必须不经过 DS 节点 2、 RS 不能将网关指向 DS 节点的 DIP 3、 DS 和 RS 节点必须位于同一物理网络中 4、 DR 模型不支持地址转换,也不支持端口映射 5、 RS 可以是常见的操作系统 Windows、Linux、MacOS 6、 RS 在 lo 接口上配置 VIP eth1(arp)
6、DR模型ARP
6.1、arp_ignore
arp_ignore(控制系统在收到外部的 arp 请求时,是否需要应答。) 0 默认值,将本机所有接口的所有信息像每个连接的网络进行通告。 1 只应答本地主机访问网络接口( eth0-->lo ),才给予响应
6.2、arp_announce
arp_announce(控制系统是否对外宣布自己的地址。)
0 默认值,把本机所有接口的所有信息向每个接口的网络进行通告; 1 "尽量避免" 将接口信息向非直接连接网络进行通告; 2 "必须避免" 将接口信息向非本网络进行通告;