負(fù)載均衡學(xué)習(xí)之DNS域名解析負(fù)載均衡
DNS域名解析負(fù)載均衡
DNS(Domain Name System)是因特網(wǎng)的一項(xiàng)服務(wù),它作為域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫(kù),能夠使人更方便的訪問(wèn)互聯(lián)網(wǎng)。人們?cè)谕ㄟ^(guò)瀏覽器訪問(wèn)網(wǎng)站時(shí)只需要記住網(wǎng)站的域名即可,而不需要記住那些不太容易理解的IP地址。
在DNS系統(tǒng)中有一個(gè)比較重要的的資源類型叫做主機(jī)記錄也稱為A記錄,A記錄是用于名稱解析的重要記錄,它將特定的主機(jī)名映射到對(duì)應(yīng)主機(jī)的IP地址上。
如果你有一個(gè)自己的域名,那么要想別人能訪問(wèn)到你的網(wǎng)站,你需要到特定的DNS解析服務(wù)商的服務(wù)器上填寫(xiě)A記錄,過(guò)一段時(shí)間后,別人就能通過(guò)你的域名訪問(wèn)你的網(wǎng)站了
Domain Name System
一種能進(jìn)行主機(jī)名到IP地址轉(zhuǎn)換的目錄服務(wù),這就是域名系統(tǒng)(Domain Name System),DNS協(xié)議運(yùn)行在UDP之上,使用端口53
DNS采用分布式設(shè)計(jì)方案,DNS服務(wù)器分為四類:
- 根DNS服務(wù)器。
- ***域DNS服務(wù)器。這些服務(wù)器負(fù)責(zé)***域名,如com,org,net,edu和gov以及國(guó)家的***域名,如uk,fr,ca,jp。
- 權(quán)威DNS服務(wù)器。這些服務(wù)器記錄了主機(jī)名到IP地址的映射關(guān)系。
- 本地DNS服務(wù)器(local DNS server)
DNS查詢有兩種方式:
- 遞歸查詢
- 迭代查詢
從請(qǐng)求主機(jī)到本地DNS服務(wù)器的查詢是遞歸的,其余的查詢是迭代的
DNS解析過(guò)程:
神奇的解釋權(quán)機(jī)制(SOA)
根服務(wù)器擁有一切域名的起始解釋權(quán),但是如果你去問(wèn)根服務(wù)器它是不會(huì)直接告訴你最終答案的。因?yàn)槿绻鎯?chǔ)所有的記錄,那它也太累了,這個(gè)負(fù)載和開(kāi)銷是驚人的。那它會(huì)告訴你什么呢?它會(huì)告訴你應(yīng)該去問(wèn)誰(shuí),也就是它授權(quán)下一級(jí)服務(wù)器來(lái)解答你的問(wèn)題。擬人化這個(gè)過(guò)程
- 我: root, root 告訴我, segmentfault.com 怎么走?
- root: 呵呵,你可以去問(wèn).com的dns服務(wù)器,地址是xxxxxx
- 我: .com, .com 告訴我,segmentfault.com 怎么走?
- .com: 呵呵,你可以去問(wèn)segmentfault.com的dns服務(wù)器(dnspod之類的),地址是xxxxxx
- 我: dnspod, dnspod 告訴我,segmentfault.com 怎么走?
- dnspod: 拿著 xxxxxx,走你
DNS負(fù)載均衡工作原理
利用DNS工作原理處理負(fù)載均衡的工作原理圖:
由上圖可以看出,在DNS服務(wù)器中應(yīng)該配置了多個(gè)A記錄,如:
- www.apusapp.com IN A 114.100.20.201;
- www.apusapp.com IN A 114.100.20.202;
- www.apusapp.com IN A 114.100.20.203;
每次域名解析請(qǐng)求都會(huì)根據(jù)對(duì)應(yīng)的負(fù)載均衡算法計(jì)算出一個(gè)不同的IP地址并返回,這樣A記錄中配置多個(gè)服務(wù)器就可以構(gòu)成一個(gè)集群,并可以實(shí)現(xiàn)負(fù)載均衡。上圖中,用戶請(qǐng)求www.apusapp.com,DNS根據(jù)A記錄和負(fù)載均衡算法計(jì)算得到一個(gè)IP地址114.100.20.203,并返回給瀏覽器,瀏覽器根據(jù)該IP地址,訪問(wèn)真實(shí)的物理服務(wù)器114.100.20.203。所有這些操作對(duì)用戶來(lái)說(shuō)都是透明的,用戶可能只知道www.apusapp.com這個(gè)域名
優(yōu)缺點(diǎn)
DNS域名解析負(fù)載均衡有如下優(yōu)點(diǎn):
- 將負(fù)載均衡的工作交給DNS,省去了網(wǎng)站管理維護(hù)負(fù)載均衡服務(wù)器的麻煩。
- 技術(shù)實(shí)現(xiàn)比較靈活、方便,簡(jiǎn)單易行,成本低,使用于大多數(shù)TCP/IP應(yīng)用。
- 對(duì)于部署在服務(wù)器上的應(yīng)用來(lái)說(shuō)不需要進(jìn)行任何的代碼修改即可實(shí)現(xiàn)不同機(jī)器上的應(yīng)用訪問(wèn)。
- 服務(wù)器可以位于互聯(lián)網(wǎng)的任意位置。
- 同時(shí)許多DNS還支持基于地理位置的域名解析,即會(huì)將域名解析成距離用戶地理最近的一個(gè)服務(wù)器地址,這樣就可以加速用戶訪問(wèn),改善性能。
DNS域名解析也存在如下缺點(diǎn):
- 目前的DNS是多級(jí)解析的,每一級(jí)DNS都可能緩存A記錄,當(dāng)某臺(tái)服務(wù)器下線之后,即使修改了A記錄,要使其生效也需要較長(zhǎng)的時(shí)間,這段時(shí)間,DNS仍然會(huì)將域名解析到已下線的服務(wù)器上,最終導(dǎo)致用戶訪問(wèn)失敗。
- 不能夠按服務(wù)器的處理能力來(lái)分配負(fù)載。DNS負(fù)載均衡采用的是簡(jiǎn)單的輪詢算法,不能區(qū)分服務(wù)器之間的差異,不能反映服務(wù)器當(dāng)前運(yùn)行狀態(tài),所以負(fù)載均衡效果并不是太好。
- 可能會(huì)造成額外的網(wǎng)絡(luò)問(wèn)題。為了使本DNS服務(wù)器和其他DNS服務(wù)器及時(shí)交互,保證DNS數(shù)據(jù)及時(shí)更新,使地址能隨機(jī)分配,一般都要將DNS的刷新時(shí)間設(shè)置的較小,但太小將會(huì)使DNS流量大增造成額外的網(wǎng)絡(luò)問(wèn)題。
有哪些DNS服務(wù)商支持負(fù)載均衡呢?
這是一種比較高級(jí)的服務(wù),一般域名注冊(cè)商的dns服務(wù)器不會(huì)支持,目前我已知支持它的服務(wù)商有
- AWS Route 53
- NSONE
- Dyn
- dnspod
- 萬(wàn)網(wǎng)