基於 NAT 的負載機制其實是經過修改數據包中的目的 IP 地址,將用戶的請求轉發給 Real Server 。算法
可是在這種機制下,Director Server 即接收請求報文,同時也接收響應報文,每每會成爲瓶頸的存在。後端
vip=192.168.0.200 rip1=10.10.0.1 rip2=10.10.0.2 ipvsadm -E -t $vip:80 -s wrr ipvsadm -e -t $vip:80 -r $rip1 -m -w 3 ipvsadm -e -t $vip:80 -r $rip2 -m -w 1
只需在 Director Server 使用 ipvsadm 工具配置便可bash
# 查看配置的 LVS 規則 ipvsadm -L -n
LVS 經常使用的負載機制,配合 keepalive 使用能夠做爲一個高吞吐量的集羣。服務器
那麼其中關鍵的一環就是讓請求報文只能到達 Director Server,一般用到的方法是修改內核參數:arp_ignore、arp_announce網絡
arp_ignore: INTEGER(整數) 定義對目標地址爲本地 IP 的 ARP 詢問不一樣的應答模式 0 - 默認:迴應任何網絡接口上對任何本地 IP 地址的 arp 查詢請求; 1 - :只回答目標 IP 地址是來訪問網絡接口自身地址的 arp 查詢請求(0 和 1 不一樣在於,假設有 eth0:192.168.0.1/2四、eth1:10.10.0.1/24,那麼 eth0 網卡收到 10.10.0.1 的 arp 查詢,只有設置爲 0 時纔會迴應,1 只有在查詢 192.168.0.1 時纔回應) 2 -:只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求,且來訪IP必須在該網絡接口的子網段內 3 -: 不迴應該網絡界面的arp請求,而只對設置的惟一和鏈接地址作出迴應 4-7: 保留未使用 8 -:不迴應全部(本地地址)的arp查詢 arp_announce:INTEGER(整數) 對網絡接口上本地 IP 地址發出的 ARP 迴應做出相應級別的限制: 肯定不一樣程度的限制,宣佈對來自本地源 IP 地址發出 Arp 請求的接口 0 - (默認) 在任意網絡接口上的任何本地地址 1 -儘可能避免不在該網絡接口子網段的本地地址. 當發起ARP請求的源 IP 地址是被設置應該經由路由達到此網絡接口的時候頗有用.此時會檢查來訪IP是否爲全部接口上的子網段內 ip 之一.若是改來訪IP 不屬於各個網絡接口上的子網段內,那麼將採用級別2的方式來進行處理. 2 - 對查詢目標使用最適當的本地地址.在此模式下將忽略這個 IP 數據包的源地址並嘗試選擇與能與該地址通訊的本地地址.首要是選擇全部的網絡接口的子網中外出訪問子網中包含該目標 IP 地址的本地地址. 若是沒有合適的地址被發現,將選擇當前的發送網絡接口或其餘的有可能接受到該 ARP 迴應的網絡接口來進行發送
經過在 Real Server 執行:併發
vip=192.168.0.38 ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip lo:0 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
添加 VIP 到 lo,這樣就保證了 Real Server 的 eth0 網口收到 arp 查詢時不會響應,同時 vip 也綁定到 Real Server 上了。工具
機制跟 DR 同樣,只是在轉發的時候,它須要從新包裝IP報文。這裏的real server(圖中爲RIP)離得都比較遠。spa
用戶請求之後,到director上的VIP上,它跟DR模型同樣,每一個realserver上既有RIP又有VIP,Director就挑選一個real server進行響應,但director和real server並不在同一個網絡上,這時候就用到隧道了,Director進行轉發的時候,必定要記得CIP和VIP不能動。code
咱們轉發是這樣的,讓它的CIP和VIP不動,在它上面再加一個IP首部,再加的IP首部源地址是DIP,目標地址的RIP的IP地址。收到報文的RIP,拆掉報文之後發現了裏面還有一個封裝,它就知道了,這就是隧道。server
其實數據轉發原理和DR是同樣的,不過這個我我的認爲主要是位於不一樣位置(不一樣機房);LB是經過隧道進行了信息傳輸,雖然增長了負載,但是由於地理位置不一樣的優點,仍是能夠參考的一種方案;