首页 > 代码库 > 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