首页 > 代码库 > 02-LVS集群类型之lvs-dr

02-LVS集群类型之lvs-dr

通过修改请求报文的MAC地址实现转发:

请求报文源IP为CIP,目标IP为VIP,到达Directory后,修改源MAC地址为DIP的网卡MAC,目标MAC地址是挑选出来的后端RealServer的RIP接口的MAC地址;

IP首部不会改变,为了能够让RealServer能够接收报文,需要在RealServer的lo的子接口上配置vip地址;

Directory与RealServer在同一网络内,二层交换机通过MAC地址实现报文发送,所以中间不能出现路由器(路由器3层通过IP地址实现);

工作流程:

1>请求报文经过层层路由进入交换机,此时,源地址是CIP,目标地址是VIP。

2>Directory 和 RealServer 是同一物理网络内,且都有vip地址,通过特殊设置,使得RealServer 无法想应ARP广播,因为只有Directory可以相应ARP广播,所以请求报文只能发往Directory,源IP地址目标IP地址不变,帧首部的目标MAC地址为Directory网卡MAC地址,源MAC地址为交换机某接口MAC地址。

  如何禁止本机VIP地址响应ARP广播:

    <1>arptables工具实现

    <2>修改RealServer的内核,并把VIP绑定在本地回环lo接口上

内核参数为arp_ignore、arp_announce

 

3>到达Directory,拆开帧首部,通过查看IP及端口,发现是定义的集群应用,封装帧首部目标MAC地址为某个挑选出来的RealServer 网卡的MAC地址,发送给交换机,此时源IP地址目标IP地址不变,源MAC地址是Directory网卡MAC地址。

4>交换机转发报文给相应的RealServer,RealServer收到请求报文,拆开帧首部,发现目标IP地址是自己,接受请求并响应,响应报文源IP地址为VIP,目标IP为CIP。

补充:

VIP肯定为公网地址,DIP与RIP可以是公网(方便管理)也可以为私网。

RealServer与Directory必须在同一物理网络中,因为两者之间使用MAC地址进行通信。

不支持端口映射

响应报文不经过Directory。

02-LVS集群类型之lvs-dr