lvs-dr模型 : 直接路由
Director在實現轉發時不修改請求報文的IP首部,而是通過直接封裝MAC首部來完成轉發,目標MAC是Director根據調度方法挑選出的某RS的MAC地址
拓撲結構有別於NAT類型
架構特性:
(1) 保證前端路由器將目標地址爲VIP的請求報文通過ARP地址解析後送往Director
解決方案:
1、靜態綁定:在前端路由直接將VIP對應的目標MAC靜態配置爲Director的MAC地址,不靠譜也不常用
2、arptables:在各RS上,通過arptables規則拒絕其響應對VIP的ARP廣播請求
3、內核參數:在RS上修改內核參數,並結合地址的配置方式實現拒絕響應VIP對ARP的響應請求
(2) RS的RIP可以使用私有地址,但也可以使用公網地址,此時可通過互聯網上的主機直接對此RS發起管理操作
(3) 請求報文必須經由Director調度,但響應報文必須不能經由Director
(4) 各RIP必須與DIP在同一物理網絡中,就是不能通過路由器轉發否則會被修改MAC地址,可以通過交換機交換
(5) 不支持端口映射
(6) RS可以使用大多數的OS
(7) RS的網關一定不能指向Director
我們使用LVS配置,不懂的可以先看另一篇博客LVS基礎 http://kmk0226.blog.51cto.com/5975994/1717592
架設DR模式的LVS負載均衡主要的思路就是VIP只能Directory上能夠響應,RS上的VIP只能發送。
因此我們要先根據自己需要架設的服務拓撲圖來規劃IP地址以及測試。
1、根據上面的拓撲圖先規劃IP地址
注意:DR模式與NAT模式不同,DR模式所有的IP地址都爲公網地址並不是私有地址。
VIP:192.168.100.2
VIP爲公網地址,因此這個地址需要能連通外部網絡的。
DIP:192.168.100.3
DIP是公網地址
RIP:192.168.100.4-6
RIP爲Real server的IP地址,拓撲圖的三臺服務器依次設置IP地址從4到6
2、設置完成IP地址架設網絡以及對ARP廣播做限制,最後進行測試是否連通。
先配置各個服務器的IP地址:
(注意:本次IP地址配置是命令方式的並不能永久生效,如果需要永久生效的話要在配置文件中配置具體,本章不做描述,如果需要請留言)
(1) Directory:
DIP: ifconfig eth0 192.168.100.3 netmask 255.255.255.0 up
VIP:ifconfig eth0:0 192.168.100.2 netmask 255.255.255.255 broadcast 192.168.100.2 up
由於vip只是用於標記用的,所以掩碼設置爲32位的, 並且設置廣播域的範圍只有192.168.100.2
route add -host 192.168.100.2 dev eth0:0
如果主機的目標地址是192.168.100.2這個VIP就必須從eth0:0這個端口進出
開啓nat轉發功能
vim /etc/sysctl.conf
修改net.ipv4.if_forward = 1
1爲打開,0爲關閉
sysctl -p : 讓修改的配置立即生效
(2) Real Server:
RIP: ifconfig eth0 192.168.100.4 netmask 255.255.255.0 up
VIP: ifconfig lo:0 192.168.100.2 netmask 255.255.255.255 broadcast 192.168.100.2 up
DR模型中在RS中的VIP是放在本地端口的,不對外通信的,只做幀首部用,具體原因請學習網絡基礎。
RS還需要設置ARP限制,否則就算本地端口也會將自己的IP地址與外部通信。
route add -host 192.168.100.2 dev lo:0
如果主機的目標地址是192.168.100.2這個VIP就必須從lo:0這個端口進出
2.4.26,2.6.4 kernael引入兩個內核參數:
arp_announce: 定義arp限制通告級別
arp_ignore: 定義arp忽略arp請求級別或aro通告的級別
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
另外兩臺RS也做同樣的操作,不過RIP需要修改成192.168.100.5和192.168.100.6
(3) 全部設置完之後測試各個IP地址之間是否能夠正常通信,使用ping工具
在每個主機上都ping一下其他主機的IP地址
3、測試需要架設的服務是否能夠在Directory上正常訪問
本次以http爲例,在各個RS上安裝完http之後,在Directory使用curl http://192.168.100.4測試是否正常
測試完成之後就可以配置集羣了。
LVS集羣配置在Directory上配置:
ipvsadm -A -t 192.168.100.2:80 -s rr //設置VIP爲訪問集羣時候的IP地址,端口號爲80,-s 代表使用自定義集羣訪問模式,rr爲輪詢,代表每個服務器都會輪換着訪問 ipvsadm -a -t 192.168.100.2:80 -r 192.168.100.4 -g -w 1 //設置192.168.100.4爲一個RS服務器,-g代表是開啓DR模式, -w爲權重,1爲權重爲1 ipvsadm -a -t 192.168.100.2:80 -r 192.168.100.5 -g -w 2 //設置192.168.100.5爲一個RS服務器,-g代表是開啓DR模式, -w爲權重,2爲權重爲2 ipvsadm -a -t 192.168.100.2:80 -r 192.168.100.6 -g -w 3 //設置192.168.100.6爲一個RS服務器,-g代表是開啓DR模式, -w爲權重,3爲權重爲3 注意:權重越大代表被訪問到的機率越大,不過爲RR輪詢的時候是無效的。
配置完Directory之後集羣的配置就已經配置完成了。
測試集羣是否可以正常訪問:
1、實驗環境中先確保iptables防火牆爲關閉狀態
2、實驗環境中確保selinux爲關閉狀態或警告狀態
3、在RS服務器中建立http頁面,頁面內容最好是能區分每個主機的不通內容,例如:192.168.100.4這樣一個IP地址的內容
4、在本地物理機直接訪問VIP測試是否能夠正常訪問,並且是否是正常輪詢訪問的,如果都正常代表LVS集羣已經架設完成
總結:
LVS負載均衡集羣對網絡要求較高,如果內部網絡架設不完整或者不通都將會導致集羣無法正常訪問,重點只要所有IP地址都能ping通就能正常架設成功。