認(rèn)識負(fù)載均衡架設(shè)平臺LVS的三種機(jī)制
在Linux下設(shè)置集群是通過Linux virtual severr來完成的,當(dāng)然,負(fù)載平衡的建設(shè)前提也是在此之上的。那么,我們想要學(xué)會其中的設(shè)置過程,首先要了解它的基本構(gòu)成原理,那么現(xiàn)在我們要對其中的基本概念進(jìn)行一個(gè)介紹。希望對大家有所幫助。
LVS可稱為Linux虛擬服務(wù)器,它具備高可用性、可擴(kuò)充性和科學(xué)性的數(shù)學(xué)運(yùn)算,而這些也就是集群系統(tǒng) (Cluster System)的應(yīng)用。
高可用性High-Availability (HA) 不允許有服務(wù)中斷的情形發(fā)生時(shí)。由兩臺以上的計(jì)算機(jī)通過一定方式互相監(jiān)聽,當(dāng)主要服務(wù)器主機(jī)出現(xiàn)問題而無預(yù)警的停止服務(wù)時(shí),備份服務(wù)器能夠自動立即接替工作,使客戶端感覺不出有異。可擴(kuò)充性 (Scalability) 應(yīng)用在web 、ftp server上為多。當(dāng)用戶連結(jié)一個(gè)地址,但實(shí)際上是有若干臺服務(wù)器在提供服務(wù)。而當(dāng)服務(wù)請求達(dá)到飽和時(shí),還可以很容易地再添加新的節(jié)點(diǎn)而不用停掉整個(gè) cluster,實(shí)現(xiàn)所謂的"熱插拔",這也就是Cluster中的一個(gè)概念-Scalability (易擴(kuò)展性)。而且,cluster還會查詢真實(shí)節(jié)點(diǎn)的情況,當(dāng)某臺真實(shí)節(jié)點(diǎn)沒有響應(yīng)時(shí),就不再把任務(wù)分配到那里,直到這臺節(jié)點(diǎn)恢復(fù)正常。科學(xué)的數(shù)學(xué)運(yùn)算 (Scientific) 用于效能、圖像處理等計(jì)算。Cluster已經(jīng)發(fā)展多年,也比較成熟了。之前需要專業(yè)的軟/硬設(shè)備才能實(shí)現(xiàn)。所以只有少數(shù)公司才有能力用的起。現(xiàn)在Linux上的LVS就可以讓你在PC上架設(shè)Cluster的解決方案,使更多的人有機(jī)會構(gòu)建自己的cluster。LVS提供了三種轉(zhuǎn)發(fā)機(jī)制(Traffic Forward Mechanism)、四種分配方法(Load-balancing Methods),以下詳述
三轉(zhuǎn)發(fā)機(jī)制(Traffic Forward Mechanism)
三種不同的轉(zhuǎn)發(fā)機(jī)制分別將LVS主機(jī)建構(gòu)成
NAT虛擬主機(jī) Virtual Server via Network Address Translation
IP Tunneling虛擬主機(jī) Virtual Server via IP Tunneling
Direct Routing虛擬主機(jī) Virtual Server via Direct Routing
負(fù)載平衡主機(jī)可稱為Virtual Server ( 虛擬主機(jī) )、Load Balancer (負(fù)載平衡器)、Linux Director (導(dǎo)引主機(jī)),以下簡稱為LVS主機(jī)
NAT虛擬主機(jī) Virtual Server via Network Address Translation ( VS/NAT )
由于IPv4中IP地址空間的日益不足和安全方面的原因,很多網(wǎng)絡(luò)使用Internet上未被分配的私有IP地址(10.0.0.0/255.0.0.0、 172.16.0.0/255.128.0.0 和192.168.0.0/255.255.0.0)。當(dāng)內(nèi)部網(wǎng)絡(luò)中的主機(jī)要連結(jié)Internet或被Internet連結(jié)時(shí),就需要采用網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation, 以下簡稱NAT),可以用NAT方法將不同IP地址的并行網(wǎng)絡(luò)服務(wù)變成在一個(gè)IP 地址上的一個(gè)虛擬服務(wù)。
在一組服務(wù)器前有一個(gè)LVS主機(jī),用戶通過Virtual IP Address(即LVS主機(jī)的外部地址)連結(jié)服務(wù)時(shí),請求到達(dá)LVS主機(jī),LVS主機(jī)以負(fù)載平衡方法從一組真實(shí)服務(wù)器選出一個(gè),將目標(biāo)地址 Virtual IP Address重新指向內(nèi)部實(shí)際提供服務(wù)服務(wù)器的地址。同時(shí),LVS主機(jī)記錄這個(gè)連接,當(dāng)這個(gè)連接的真實(shí)服務(wù)器的響應(yīng)經(jīng)過LVS主機(jī)時(shí),LVS主機(jī)將來源地址和來源端口改?Virtual IP Address和相應(yīng)的埠,再把響應(yīng)發(fā)給用戶。當(dāng)連接終止或逾時(shí),LVS主機(jī)將這個(gè)連接從紀(jì)錄中刪除。這樣,用戶所看到的只是在Virtual IP Address 上提供的服務(wù)。
IP Tunneling 虛擬主機(jī) Virtual Server via IP Tunneling (VS/TUN)
在VS/NAT 的集群系統(tǒng)中,請求和應(yīng)答的封包都需要通過LVS主機(jī),當(dāng)實(shí)際服務(wù)器的數(shù)量超過20時(shí),LVS主機(jī)將成為集群系統(tǒng)的新瓶頸。利用IP隧道技術(shù)將請求封包封裝轉(zhuǎn)發(fā)給后端服務(wù)器,響應(yīng)封包能從后端服務(wù)器直接返回給客戶。但在這里,后端服務(wù)器有一組而非一個(gè),所以我們不可能靜態(tài)地建立一一對應(yīng)的隧道,而是動態(tài)地選擇一臺服務(wù)器,將請求封包封裝和轉(zhuǎn)發(fā)給選出的服務(wù)器。這樣,我們可以利用IP隧道的原理將一組服務(wù)器上的網(wǎng)絡(luò)服務(wù)組成在一個(gè)IP地址上的虛擬網(wǎng)絡(luò)服務(wù)。
各個(gè)服務(wù)器將 VIP地址配置在自己的IP隧道設(shè)備上。
VS/TUN 的連接分配和管理與VS/NAT中的一樣,只是它的封包轉(zhuǎn)發(fā)方法不同。負(fù)載平衡主機(jī)根據(jù)各個(gè)服務(wù)器的負(fù)載情況,動態(tài)地選擇一臺服務(wù)器,將請求封包封裝在另一個(gè)IP封包中,再將封裝后的IP封包轉(zhuǎn)發(fā)給選出的服務(wù)器;那臺服務(wù)器收到封包后,先將封包解封獲得原來目標(biāo)地址為VIP的封包,服務(wù)器發(fā)現(xiàn)VIP地址被配置在本地的IP隧道設(shè)備上,所以就處理這個(gè)請求,然后根據(jù)路由表將響應(yīng)封包直接返回給客戶。
Direct Routing 虛擬主機(jī) Virtual Server via Direct Routing (VS/DR)
這種IP層負(fù)載平衡方法與IBM的NetDispatcher中的方法類似。
LVS 主機(jī)和服務(wù)器組都必須在同一網(wǎng)絡(luò)區(qū)域中,如通過交換機(jī)或者高速的HUB相連。VIP地址為LVS主機(jī)和服務(wù)器組共享,LVS主機(jī)配置的VIP地址是對外可連結(jié)的,用于接收虛擬服務(wù)的請求封包;所有的服務(wù)器把VIP地址配置在各自的Non-ARP網(wǎng)絡(luò)設(shè)備上,它對外面是不可見的,只是用于處理目標(biāo)地址? VIP的網(wǎng)絡(luò)請求。
VS/DR的連接分配和管理與VS/NAT和VS/TUN中的一樣,它的封包轉(zhuǎn)發(fā)方法又有不同,將封包直接路由給目標(biāo)服務(wù)器。在VS/DR中,LVS主機(jī)根據(jù)各個(gè)服務(wù)器的負(fù)載情況,動態(tài)地選擇一臺服務(wù)器,不修改也不封裝IP封包,而是將資料封包的MAC地址改為選出服務(wù)器的MAC地址,再將修改后的資料封包在與服務(wù)器組的局域網(wǎng)上發(fā)送;因?yàn)橘Y料封包的MAC地址是選出的服務(wù)器,所以服務(wù)器肯定可以收到該封包,發(fā)現(xiàn)VIP 地址被配置在本地的網(wǎng)絡(luò)設(shè)備上,所以就處理這個(gè)請求,然后根據(jù)路由表將響應(yīng)封包直接返回給客戶。