LVS中DR類型集群實現
LVS負載均衡集群中DR類型的架構圖示如下:
圖中,客戶端發送的請求會由路由器和交換機轉發後直接達到director。再由director調度給指定的real server ,最後由real server直接響應給客戶端而不經過director,在此架構中director和real server的網絡架構是此類型的重點。所以,配置
(1) 各RS要直接響應Client,因此,各RS均得配置VIP;但僅能夠讓Director上的VIP能夠與本地路由直接通信;
(2) Director不會拆除或修改請求報文的IP首部,而是通過封閉新的幀首部(源MAC為Director的MAC,目標MAC為挑選出的RS的MAC)完成調度。
要完成上述的要求,著實很難,因為RS和DR都有VIP,而請求進入時必須最先發送給DR,所以,在DR類型中,首先通過ARP廣播確認DR主機,其他RS主機不響應,這就確定了哪一個是DR主機。
但是在linux主機中,IP地址不屬於網卡而是屬於內核,就是說無論一個linux主機有多少個IP地址,它在接入的各個網絡中都會公布它擁有的所有地址,這就給
#arp_announce:定義arp通知級別;
0:默認級別,在各個網絡中通告本機所含有的所有地址
1:盡量不在各個網絡中通告本機中含有的不屬於該網絡的地址
2:不在各個網絡中通告本機中含有的不屬於該網絡的地址
#arp_ignore:定義arp忽略arp請求或arp通告的級別;
0:(默認值): 回應任何網絡接口上對任何本地IP地址的arp查詢請求
1:只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求
2:只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求
3:不回應該網絡界面的arp請求,而只對設置的唯一和連接地址做出回應
4-7:保留未使用
8:不回應所有(本地地址)的arp查詢
舉例1:VIP、DIP、RIP在同一網段時的DR類型負載均衡
首先設計網絡拓撲,我在這裏準備三個虛擬機,V1作為director,V2、V3作為real server。
設計完拓撲,現在開始配置:
在V1上更改IP地址
Ifconfigeth0 172.16.50.11 up
Ifconfig eth0:0 172.16.50.12 netmask255.255.255.255 broadcast 172.16.50.12 up
Routeadd –host 172.16.50.12 dev eth0:0
在V2、V3上更改地址:
Ifconfigeth0 172.16.50.21 up
Ifconfiglo:0 172.16.50.12 netmask 255.255.255.255 broadcast 172.16.50.12 up
Route add –host 172.16.50.12 dev lo:0
Ifconfigeth0 172.16.50.31 up
Ifconfiglo:0 172.16.50.12 netmask 255.255.255.255 broadcast 172.16.50.12 up
Routeadd –host 172.16.50.12 dev lo:0
不留圖了
更改V2、V3的內核參數(不更改的話會ping不通)
echo1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo2 > /proc/sys/net/ipv4/conf/all/arp_announce
如果覺得不放心的話,還可以再執行兩個命令
echo1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo2 > /proc/sys/net/ipv4/conf/lo/arp_announce
現在就可以添加規則了
在V1上執行如下命令:
Ipvsadm–A –t 172.16.50.12:80 –s rr
Ipvsadm–a –t 172.16.50.12:80 –r 172.16.50.21 –g –w 1 這裏加權重是為了以後改算法省事
Ipvsadm–a –t 172.16.50.12:80 –r 172.16.50.31 –g –w 2
這樣就完成了同網段內DR類型的負載均衡配置。
舉例2:VIP、DIP、RIP在不在同一網段時的DR類型負載均衡
首先設計網絡拓撲,我在這裏準備三個虛擬機,V1作為director,V2、V3作為real server。環境中應有兩個網段172.16.0.1和192.168.0.254且打開了路由間轉發功能。
設計完拓撲,現在開始配置:
在V1上更改IP地址
Ifconfigeth0 192.18.0.11 up
Routeadd default gw 192.168.0.254
Ifconfigeth0:0 172.16.50.12 netmask 255.255.255.255 broadcast 172.16.50.12 up
Routeadd –host 172.16.50.12 dev eth0:0
在V2、V3上更改地址:
Ifconfigeth0 192.168.0.21 up
Routeadd default gw 192.168.0.254
Ifconfiglo:0 172.16.50.12 netmask 255.255.255.255 broadcast 172.16.50.12 up
Routeadd –host 172.16.50.12 dev lo:0
Ifconfigeth0 192.168.0.31 up
Routeadd default gw 192.168.0.254
Ifconfiglo:0 172.16.50.12 netmask 255.255.255.255 broadcast 172.16.50.12 up
Routeadd –host 172.16.50.12 dev lo:0
不留圖了
更改V2、V3的內核參數(不更改的話會ping不通)
echo1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo2 > /proc/sys/net/ipv4/conf/all/arp_announce
如果覺得不放心的話,還可以再執行兩個命令
echo1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo2 > /proc/sys/net/ipv4/conf/lo/arp_announce
現在就可以添加規則了
在V1上執行如下命令:
Ipvsadm–A –t 172.16.50.12:80 –s rr
Ipvsadm–a –t 172.16.50.12:80 –r 192.168.0.21:80 –g –w 1 這裏加權重是為了以後改算法省事
Ipvsadm–a –t 172.16.50.12:80 –r 192.168.0.31:80 –g –w 2
這樣就完成了不通網段內DR類型的負載均衡配置。
註意:在普通電腦上實現這個負載均衡,訪問頁面時會反應比較慢,不要以為沒成功,是慢!慢!慢!
LVS中DR類型集群實現