關(guān)于DNS負(fù)載均衡技術(shù)
在學(xué)習(xí)負(fù)載均衡技術(shù)的時(shí)候,我們肯定會(huì)學(xué)到DNS負(fù)載均衡的相關(guān)內(nèi)容,因?yàn)檫@個(gè)是負(fù)載均衡的一個(gè)代表應(yīng)用。那么說到應(yīng)用,到底是如何進(jìn)行使用,改善網(wǎng)絡(luò)問題的呢?那么本文就將為大家詳細(xì)介紹一下其中的原理。
為了建立一個(gè)高負(fù)載的Web站點(diǎn),必須使用多服務(wù)器的分布式結(jié)構(gòu)。上面提到的使用代理服務(wù)器和Web服務(wù)器相結(jié)合,或者兩個(gè)Web服務(wù)器相互協(xié)作的方式也屬于多服務(wù)器的結(jié)構(gòu),但在這些多服務(wù)器的結(jié)構(gòu)中,每個(gè)服務(wù)器所起到的作用是不同的,屬于非對(duì)稱的體系結(jié)構(gòu)。非對(duì)稱的服務(wù)器結(jié)構(gòu)中每個(gè)服務(wù)器起到的作用是不同的,例如一個(gè)服務(wù)器用于提供靜態(tài)網(wǎng)頁,而另一個(gè)用于提供動(dòng)態(tài)網(wǎng)頁等等,這樣就使得網(wǎng)頁設(shè)計(jì)時(shí)就需要考慮不同服務(wù)器之間的關(guān)系,一旦要改變服務(wù)器之間的關(guān)系,就會(huì)使得某些網(wǎng)頁出現(xiàn)連接錯(cuò)誤,不利于維護(hù),可擴(kuò)展性也差。
另外一種多服務(wù)器的設(shè)計(jì)結(jié)構(gòu)為對(duì)稱結(jié)構(gòu),在對(duì)稱結(jié)構(gòu)中每臺(tái)服務(wù)器都具備等價(jià)的地位,都可以單獨(dú)對(duì)外提供服務(wù)而無須其他服務(wù)器的輔助。然后,可以通過某種技術(shù),將外部發(fā)送來的請(qǐng)求均勻分配到對(duì)稱結(jié)構(gòu)中的每臺(tái)服務(wù)器上,接收到連接請(qǐng)求的服務(wù)器都獨(dú)立回應(yīng)客戶的請(qǐng)求。在這種結(jié)構(gòu)中,將外部請(qǐng)求均勻分配到服務(wù)器上的技術(shù)稱為負(fù)載均衡技術(shù),由于建立內(nèi)容完全一致的Web服務(wù)器并不困難,因此負(fù)載均衡技術(shù)就成為建立一個(gè)高負(fù)載Web站點(diǎn)的關(guān)鍵性技術(shù)。
基于DNS負(fù)載均衡
最早的負(fù)載均衡技術(shù)是通過DNS服務(wù)中的隨機(jī)名字解析來實(shí)現(xiàn)的。在DNS服務(wù)器中,可以為多個(gè)不同的地址配置同一個(gè)名字,這個(gè)數(shù)據(jù)被發(fā)送給其他名字服務(wù)器,而最終查詢這個(gè)名字的客戶機(jī)將在解析這個(gè)名字時(shí)隨機(jī)使用其中一個(gè)地址?因此,對(duì)于同一個(gè)名字,不同的客戶機(jī)會(huì)得到不同的地址,因此不同的客戶訪問的也就是不同地址的Web服務(wù)器,從而達(dá)到負(fù)載均衡的目的。
例如如果希望使用三個(gè)Web服務(wù)器來回應(yīng)對(duì)www.exampleorg.org.cn的HTTP請(qǐng)求,就可以設(shè)置該域的DNS服務(wù)器中關(guān)于該域的數(shù)據(jù)包括與下面例子類似的結(jié)果: www1 IN A 192.168.1.1
www2 IN A 192.168.1.2
www3 IN A 192.168.1.3
www IN CNAME www1
www IN CNAME www2
www IN CNAME www3
這里先為每個(gè)計(jì)算機(jī)定義一個(gè)真實(shí)名字,然后再為它們定義同一個(gè)別名。直接針對(duì)不同地址設(shè)置同一個(gè)真實(shí)名字(A記錄)也是可行的,但使用別名的方法易于管理一些。
由于此時(shí)反向解析只能針對(duì)一臺(tái)計(jì)算機(jī),那么每個(gè)Web服務(wù)器都需要使用ServerName重新定義同一個(gè)名字,或者設(shè)置名字解析的順序?yàn)閔osts文件優(yōu)先,并在hosts文件中定義本身為www,以保證每個(gè)服務(wù)器的名字設(shè)置保持一致。
此后外部的客戶機(jī)就可能隨機(jī)的得到對(duì)應(yīng)www的不同地址,那么隨后的HTTP請(qǐng)求也就會(huì)發(fā)送給不同地址了。
當(dāng)使用DNS負(fù)載均衡的時(shí)候,必須盡量保證不同的客戶計(jì)算機(jī)能均勻獲得不同的地址。由于DNS數(shù)據(jù)是具備一個(gè)刷新時(shí)間的標(biāo)志的,一旦超過這個(gè)時(shí)間限制過期,其他DNS服務(wù)器就需要和這個(gè)服務(wù)器交談以重新獲得地址數(shù)據(jù),就有可能獲得不同IP地址。因此為了使得地址能隨機(jī)分配,就應(yīng)該使得刷新時(shí)間盡量短,不同地方的DNS服務(wù)器能更新對(duì)應(yīng)的地址,使得地址獲得能隨機(jī)一些。然而將過期時(shí)間設(shè)置的過低將使得DNS流量大增,而造成額外的網(wǎng)絡(luò)問題。出于折衷的考慮,一般將刷新時(shí)間設(shè)置為1個(gè)小時(shí)。
DNS負(fù)載均衡的一個(gè)問題是一旦某個(gè)服務(wù)器出現(xiàn)故障,即使及時(shí)修改了DNS設(shè)置,還是要等待足夠的時(shí)間(刷新時(shí)間)才能發(fā)揮作用,在此期間保存了故障服務(wù)器地址的客戶計(jì)算機(jī)將不能正常訪問服務(wù)器。盡管存在多種問題,然而它還是一種非常有效的做法,當(dāng)前使用在包括Yahoo在內(nèi)的很多Web站點(diǎn)上。