VS/DR(直接路由)

通过改写请求报文的MAC地址,将请求发送到真是服务器,真实服务器将响应直接返回给用户,之际额路由模式可以极大的提高集群系统的伸缩性,这种方法没有IP隧道的开销,集群中真实的服务器也没有必要必须支持IP隧道协议,只是需要调度器与真实服务器有一块网卡连在同一物理网段上。

数据包、数据帧的大致流向是这样的:client --> DR --> RS --> client

几个要点:

  1. 如何修改MAC地址?

    DR根据算法选择一台RS,以选取这台RS的ip对应的mac地址作为目标mac,然后重新将IP包封装成帧转发给这台RS(不用改ip是因为DR不用管ip层以上的信息)。

  2. 为何DR和RS必须在同一网段?

    RS和client必须是在同一网段,因为转发数据包是在数据链路层进行。

  3. client的vip是否可以在真实网卡上?

    不能,否则会响应客户端的arp request,造成ARP表紊乱,以至于整个负载均衡都不能正常工作。


  4. ARP抑制的做法:

    wKiom1YedAzBxZSFAAC_VYuQ_0g276.jpg

    arp_ignore

    0 - (默认值): 回应任何网络接口上对任何本地IP地址的arp查询请求 

    1 - 只回答目标IP地址是来访网络接口本地地址的ARP查询请求 

    2 -只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内 

    3 - 不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应 

    4-7 - 保留未使用 

    8 -不回应所有(本地地址)的arp查询

    arp_announce

    0 - (默认在任意网络接口(eth0,eth1lo)上的任何本地地址 

    1 -尽量避免不在该网络接口子网段的本地地址做出arp回应当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.此时会检查来访IP是否为所有接口上的子网段内ip之一.如果改来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理

    2 - 对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送.