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