LVS-DR : 模型如下:
优点是:返回的数据不需要经过调度器了,不会有瓶颈
有以下难点:
客户端CIP 10.30.56.190 发送数据到 调度器 VIP 172.31.0.1, 我们看到交换机后面的 RS 和 调度器 都具有IP 172.31.0.1
一般来说同一个局域网内是不允许 多台终端有相同IP的,之所以 调度器 和 RS都有相同的VIP,因为客户端数据报是发给调度器 VIP的。
但是调度器把数据包准发给RS后,真正干活的机器是RS,RS返回数据报给客户端,如果不使用和调度器VIP 相同的IP地址,客户端会觉得莫名其妙,会把返回数据包丢弃的。
但是当交换机后的所有终端都有 VIP 172.31.0.1这个地址的时候, 如何保证数据发送进来的时候是给到调度器 VIP 而不是被其他的RS接收了。
解决思想是 数据报进来的路由器 172.31.0.100 会进行局域网ARP广播, 他会向局域网询问 172.31.0.1 的mac地址是谁,之后才会发送数据报到调度器 VIP.
我们需要限制其他RS 不让他对 ARP地址广播做出回答,不理路由器的请求,只对 调度器请求做出响应,方法有下面三种。
1. 直接修改路由器 mac地址,把 VIP 的mac写死,就写成 调度器的mac (一般做不到这一点,因为路由器可能是运营商的路由器,咱们没权限)
2. 修改RS 的arptables , 让他不理会路由器的ARP请求
3. 修改RS的内核,将IP规则改为属于网卡接口,而不是属于RS,然后将VIP这个IP绑定到本机lo接口上, 当进入RS数据是通过eth接口但是访问的IP不是绑定在eth接口上的时候, 不对请求进行回应