LVS-DR原理及实现

1 重在将请求报文的目标MAC地址设定为挑选出的RS的MAC地址

这里写图片描述
(a)当用户请求到达调度器时,请求报文会先进入到内核空间的PREROUTING链。此时报文的源IP为CIP,目标IP为VIP
(b)PREROUTING检查发现数据包的目标IP为本机,将数据包送至INPUT链
(c)工作在INPUT链上的IPVS会检查数据包请求是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改为RIP的MAC地址,然后将数据包发给POSTROUTING链。
(d)由于RS和DS在同一网络中,所以是通过二层传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,然后将数据包发至RS。
(e)RS发现请求MAC为自己,就会接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。此时的源IP为VIP,目标IP为CIP。

2 LVS-DR模型的特性

  • 保证前端路由将目标地址为VIP的报文统统发送给调度器,而不是RS
  • RS可以使用私有地址;也可以是公网地址,此时可以通过互联网对RIP进行直接访问。
  • RS和调度器必须在同一物理网络中。
  • 所有的请求报文经由调度器,但是响应报文必须不能经过调度器。
  • 不支持地址转换,也不会ichi端口映射
  • RS的网关决不允许指向DIP
  • 缺陷:RS和DS必须在同一机房中。

3 实现

Director:
ipvsadm -C   #清空 ipvs 转发表
ipvsadm -A -t 172.25.254.100:80 -s rr  
ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.2:80 -g
ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.3:80 -g

Real server2/3:
关闭arp响应
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce 
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore 
绑定vip(2,3都要有vip)
ifconfig lo:0 172.25.254.100 netmask 255.255.255.255 up
arp -a     #查看本地缓存的MAC地址
arp -d 172.25.254.100    #删除

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_36462472/article/details/80455323