DNS服務(wù)器
在現(xiàn)實(shí)世界中,當(dāng)您進(jìn)行閱覽新聞、在線下單、下載文件或觀看直播時(shí),您需要通過(guò)訪問(wèn)域名來(lái)訪問(wèn)目標(biāo)網(wǎng)站,例如 youtube.com、google.com 等。您只需記住這些網(wǎng)站的名稱(chēng),而非它們的 IP 地址,因?yàn)榕c網(wǎng)站名稱(chēng)相比,IP 地址是很難記住的。因此,您需要一個(gè)作為 DNS 服務(wù)器的網(wǎng)站/域名地址本。
DNS 在日常生活中非常重要。每個(gè)在線的人都需要訪問(wèn)它,但同時(shí),這對(duì)它來(lái)說(shuō)也是一個(gè)非常大的挑戰(zhàn)。如果 DNS 服務(wù)器出現(xiàn)故障,整個(gè) Internet 網(wǎng)絡(luò)都將關(guān)閉。
另外,上網(wǎng)的人分布在世界各地,如果每個(gè)人都去同一個(gè)地方訪問(wèn)某個(gè)服務(wù)器,延遲會(huì)非常大。因此,DNS 服務(wù)器必須設(shè)置為高可用、高并發(fā)和分布式的。
因此,它應(yīng)具有如下樹(shù)狀層次結(jié)構(gòu):
根 DNS 服務(wù)器:返回頂級(jí)域 DNS 服務(wù)器的 IP 地址。
頂級(jí)域 DNS 服務(wù)器:返回權(quán)威 DNS 服務(wù)器的 IP 地址。
權(quán)威 DNS 服務(wù)器:返回對(duì)應(yīng)主機(jī)的 IP 地址。
DNS 解析過(guò)程
為了提高 DNS 解析性能,許多網(wǎng)絡(luò)會(huì)根據(jù)位置部署DNS 緩存服務(wù)器。DNS 解析過(guò)程如下:(這里以訪問(wèn) google.com 為例)
客戶(hù)端會(huì)發(fā)出DNS 請(qǐng)求,詢(xún)問(wèn) google.com 的 IP 是什么,它會(huì)先在瀏覽器緩存中查找 google.com 的 IP 地址。
然后請(qǐng)求將被發(fā)送到本地 DNS 服務(wù)器。本地 DNS 服務(wù)器由您的網(wǎng)絡(luò)服務(wù)供應(yīng)商(ISP, Internet Service Provider) 自動(dòng)分配,這通常是您的 ISP 提供的路由器。
本地 DNS 服務(wù)器收到來(lái)自客戶(hù)端的 DNS 請(qǐng)求,它會(huì)在其緩存中查找 google.com 的 IP 地址。如果它可以找到對(duì)應(yīng)的條目,它將直接將 IP 地址返回給客戶(hù)端。否則,本地 DNS 服務(wù)器會(huì)詢(xún)問(wèn)它的根域名服務(wù)器:“你能告訴我 google.com 的 IP 地址嗎”?根域名服務(wù)器作為最高級(jí)別的 DNS 服務(wù)器,全球共 13 臺(tái)。它不會(huì)直接解析域名,而起到一個(gè)“指路”的作用。
根 DNS 服務(wù)器收到本地 DNS 的請(qǐng)求,發(fā)現(xiàn)要查找域名的后綴是 .com,然后告訴本地 DNS 服務(wù)器:“好的,你要找的既然是 .com 后綴的域名,它是由 .com 管理的。這里是 .com 區(qū)域的頂級(jí)域 DNS 服務(wù)器的 IP 地址,去找它問(wèn)吧”。
本地 DNS 服務(wù)器轉(zhuǎn)向 .com 區(qū)域的頂級(jí)域名服務(wù)器,并請(qǐng)求 google.com 的 IP 地址。頂級(jí) .com 區(qū)域 DNS 服務(wù)器再次為該請(qǐng)求指明了方向。它提供了負(fù)責(zé) google.com 的權(quán)威 DNS 服務(wù)器的 IP 地址。
本地 DNS 服務(wù)器然后轉(zhuǎn)向了權(quán)威 DNS 服務(wù)器并詢(xún)問(wèn) google.com 的 IP 地址。這次,google.com 的權(quán)威 DNS 服務(wù)器是域名解析結(jié)果的原始來(lái)源。它會(huì)將 google.com 的 IP 地址直接返回到本地 DNS 服務(wù)器。
然后本地 DNS 服務(wù)器將 IP返回給客戶(hù)端并將其緩存。至此,DNS 解析完成。
總結(jié)一下,我畫(huà)了下面這張圖:
DNS 負(fù)載均衡
內(nèi)部負(fù)載均衡
DNS 服務(wù)器首先進(jìn)行內(nèi)部負(fù)載均衡。比如,應(yīng)用要訪問(wèn)數(shù)據(jù)庫(kù),應(yīng)該在應(yīng)用中配置數(shù)據(jù)庫(kù)的 IP 地址,還是應(yīng)該配置數(shù)據(jù)庫(kù)的域名呢?
很明顯,應(yīng)該配置域名,因?yàn)橐坏?shù)據(jù)庫(kù)因?yàn)槟撤N原因換到另一臺(tái)機(jī)器上,如果多個(gè)應(yīng)用都配置了這個(gè)數(shù)據(jù)庫(kù),一旦 IP 地址改變了,所有這些應(yīng)用都需要重新修改。
但是,如果配置了域名,只要在 DNS 服務(wù)器中將域名映射到一個(gè)新的 IP 地址就完成了這項(xiàng)工作,如此大大簡(jiǎn)化了運(yùn)維工作。
在此基礎(chǔ)上,我們可以走得更遠(yuǎn)。例如,如何在訪問(wèn)它的多個(gè)應(yīng)用程序之間進(jìn)行負(fù)載均衡?只需將其配置為域名即可。在域名解析中,我們只需要配置策略,這次返回第一個(gè) IP,下次返回第二個(gè) IP,就可以實(shí)現(xiàn)負(fù)載均衡了。
全局負(fù)載均衡
為了保證我們的應(yīng)用程序的高可用性,它們經(jīng)常被部署在多個(gè)計(jì)算機(jī)數(shù)據(jù)中心,而每個(gè)地方都會(huì)有自己的 IP 地址。
當(dāng)用戶(hù)訪問(wèn)一個(gè)域名時(shí),這個(gè) IP 地址可以輪詢(xún)多個(gè)數(shù)據(jù)中心。如果某個(gè)數(shù)據(jù)中心由于某種原因宕機(jī)了,只要在 DNS 服務(wù)器中刪除該數(shù)據(jù)中心對(duì)應(yīng)的 IP 地址即可。這樣就可以實(shí)現(xiàn)一定程度的高可用。
另外,我們肯定希望紐約的用戶(hù)訪問(wèn)紐約的數(shù)據(jù)中心,西雅圖的用戶(hù)訪問(wèn)西雅圖的數(shù)據(jù)中心,這樣客戶(hù)體驗(yàn)會(huì)非常好,訪問(wèn)速度會(huì)超級(jí)快。這就是全局負(fù)載均衡的概念。
我們來(lái)看看它是如何工作的,假設(shè)全國(guó)有多個(gè)地區(qū),每個(gè)地區(qū)都有三個(gè)可用區(qū)域。
當(dāng)客戶(hù)端要訪問(wèn) app.metaleap.com 時(shí),需要將域名轉(zhuǎn)換為 IP 地址才能訪問(wèn),所以需要請(qǐng)求本地 DNS 解析器。
本地 DNS 解析器首先檢查本地緩存是否有此記錄。如果有,直接使用。
如果沒(méi)有本地緩存,則需要請(qǐng)求本地 DNS 服務(wù)器。
本地 DNS 服務(wù)器也需要檢查本地是否有緩存,如果有則返回。
如果沒(méi)有本地 DNS,需要從根 DNS 服務(wù)器遞歸查找 .com 的頂級(jí)域名服務(wù)器,直到找到 metaleap.com 的權(quán)威 DNS 服務(wù)器,交給本地 DNS 服務(wù)器。權(quán)威 DNS 服務(wù)器通常會(huì)返回真實(shí) IP 地址。
對(duì)于不需要全局負(fù)載均衡的簡(jiǎn)單應(yīng)用,metaleap.com 的權(quán)威 DNS 服務(wù)器可以直接將域名 app.metaleap.com 解析為一個(gè)或多個(gè) IP 地址,然后客戶(hù)端可以使用多個(gè) IP 地址進(jìn)行輪詢(xún)來(lái)實(shí)現(xiàn)簡(jiǎn)單的負(fù)載均衡。
但是對(duì)于復(fù)雜的應(yīng)用,尤其是跨區(qū)域、跨數(shù)據(jù)中心的大型應(yīng)用,需要更復(fù)雜的全局負(fù)載均衡機(jī)制,這需要專(zhuān)門(mén)的設(shè)備或服務(wù)器來(lái)做這件事——全局負(fù)載均衡器(GSLB,Global Load Balancer)。
在 metaleap.com 的 DNS 服務(wù)器中,一般通過(guò)配置CNAME,給 app.metaleap.com 起一個(gè)別名,如 app.vip.metaleap.com,然后告訴本地 DNS 服務(wù)器去請(qǐng)求GSLB來(lái)解析域名,GSLB在解析這個(gè)域名的過(guò)程中,可以通過(guò)自己的策略來(lái)實(shí)現(xiàn)負(fù)載均衡。
圖中繪制了兩層GSLB,分別為數(shù)據(jù)中心和區(qū)域。我們希望不同數(shù)據(jù)中心的客戶(hù)可以訪問(wèn)同一數(shù)據(jù)中心的資源,以提高吞吐量并減少延遲。
結(jié)論
DNS 是網(wǎng)絡(luò)世界的通訊錄,可以通過(guò)域名搜索地址,因?yàn)橛蛎?wù)器是按樹(shù)狀結(jié)構(gòu)組織的,所以域名搜索采用遞歸的方式,通過(guò)緩存來(lái)提升性能。
在域名和 IP 的映射過(guò)程中,應(yīng)用程序有機(jī)會(huì)進(jìn)行基于域名的負(fù)載均衡,可以是簡(jiǎn)單的負(fù)載均衡,也可以是基于地址、數(shù)據(jù)中心和區(qū)域的全局負(fù)載均衡。
審核編輯 :李倩
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
9308瀏覽量
86071 -
數(shù)據(jù)中心
+關(guān)注
關(guān)注
16文章
4860瀏覽量
72383 -
DNS
+關(guān)注
關(guān)注
0文章
219瀏覽量
19927
原文標(biāo)題:探討 DNS 解析
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論