Direct Routing中关于Director又充当realserver的环路疑问

最近将网站前端由原来的DNS轮巡改用LVS集群方式。
环境如下:
Direct Routing模式 / wlc方式调度
---------------------------------------------------------------
VIP: 60.1.1.1(cnetIP) 60.2.2.1(cncIP)
RS1: 60.1.1.2 60.2.2.2 192.168.0.1 ha1.abc.com(主Director)
RS2: 60.1.1.3 60.2.2.3 192.168.0.2 ha2.abc.com(备Director)
RS3: 60.1.1.4 60.2.2.4 192.168.0.3
---------------------------------------------------------------

ipvsadm -l结果:
-----------------------------------------------------------------
IP Virtual Server version 1.2.0 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 60.1.1.1:http wlc
-> 60.1.1.2:http Local 1 80 7786
-> 60.1.1.3:http Route 1 80 7822
-> 60.1.1.4:http Route 1 81 7612
TCP 60.2.2.1:http wlc
-> 60.2.2.2:http Local 1 60 3521
-> 60.2.2.3:http Route 1 62 3756
-> 60.2.2.4:http Route 1 63 3488
-----------------------------------------------------------------

RS1既当Director又当realserver,但有朋友告诉我这种方式在NAT和TUN模式下没问题, DR模式中这样比较容易造成环路,比如一个访问:http://60.1.1.1/test.html , LB收到请求包后,将请求包中目标MAC地址转换为某个选定RS的MAC地址后将包转发出去,当选定RS1时,两个MAC地址是相同的,也就是又转发到RS1的60.1.1.1(也就是LB)上了,这样就又被LB抓到这个请求,在进行MAC地址转换,如此一直循环。不知道会不会出现这种环路的情况。

我在内部测试时一直很正常,但一直没找到这类的相应说明,看源码又看不出所以然,不知道LVS中对local的MAC是否有特殊处理。
所以生产环境中Director就不敢跑realserver服务,是否有朋友研究过这个问题,指点一二。

Forums:

你把其他RS关掉,只留Director,然后看访问是否正常了。

randomness