DNS:網(wǎng)絡(luò)世界的地址本

前面我們講了平時(shí)常見(jiàn)的看新聞败徊、支付、直播掏缎、下載等場(chǎng)景皱蹦,現(xiàn)在網(wǎng)站的數(shù)目非常多,常用的網(wǎng)站就有二三十個(gè)眷蜈,如果全部用 IP 地址進(jìn)行訪(fǎng)問(wèn)沪哺,恐怕很難記住。于是酌儒,就需要一個(gè)地址簿辜妓,根據(jù)名稱(chēng),就可以查看具體的地址忌怎。

例如籍滴,我要去西湖邊的“外婆家”,這就是名稱(chēng)榴啸,然后通過(guò)地址簿孽惰,查看到底是哪條路多少號(hào)。

DNS 服務(wù)器

在網(wǎng)絡(luò)世界鸥印,也是這樣的勋功。你肯定記得住網(wǎng)站的名稱(chēng),但是很難記住網(wǎng)站的 IP 地址库说,因而也需要一個(gè)地址簿狂鞋,就是 DNS 服務(wù)器。

由此可見(jiàn)潜的,DNS 在日常生活中多么重要骚揍。每個(gè)人上網(wǎng),都需要訪(fǎng)問(wèn)它夏块,但是同時(shí)疏咐,這對(duì)它來(lái)講也是非常大的挑戰(zhàn)。一旦它出了故障脐供,整個(gè)互聯(lián)網(wǎng)都將癱瘓。另外借跪,上網(wǎng)的人分布在全世界各地政己,如果大家都去同一個(gè)地方訪(fǎng)問(wèn)某一臺(tái)服務(wù)器,時(shí)延將會(huì)非常大。因而歇由,DNS 服務(wù)器卵牍,一定要設(shè)置成高可用、高并發(fā)和分布式的沦泌。

于是糊昙,就有了這樣樹(shù)狀的層次結(jié)構(gòu)。

-? 根 DNS 服務(wù)器 :返回頂級(jí)域 DNS 服務(wù)器的 IP 地址

頂級(jí)域 DNS 服務(wù)器:返回權(quán)威 DNS 服務(wù)器的 IP 地址

權(quán)威 DNS 服務(wù)器 :返回相應(yīng)主機(jī)的 IP 地址

DNS 解析流程

為了提高 DNS 的解析性能谢谦,很多網(wǎng)絡(luò)都會(huì)就近部署 DNS 緩存服務(wù)器释牺。于是,就有了以下的 DNS 解析流程回挽。

電腦客戶(hù)端會(huì)發(fā)出一個(gè) DNS 請(qǐng)求没咙,問(wèn) www.163.com 的 IP 是啥啊,并發(fā)給本地域名服務(wù)器 (本地 DNS)千劈。那本地域名服務(wù)器 (本地 DNS) 是什么呢祭刚?如果是通過(guò) DHCP 配置,本地 DNS 由你的網(wǎng)絡(luò)服務(wù)商(ISP)墙牌,如電信涡驮、移動(dòng)等自動(dòng)分配,它通常就在你網(wǎng)絡(luò)服務(wù)商的某個(gè)機(jī)房喜滨。

本地 DNS 收到來(lái)自客戶(hù)端的請(qǐng)求遮怜。你可以想象這臺(tái)服務(wù)器上緩存了一張域名與之對(duì)應(yīng) IP 地址的大表格。如果能找到 www.163.com鸿市,它就直接返回 IP 地址锯梁。如果沒(méi)有,本地 DNS 會(huì)去問(wèn)它的根域名服務(wù)器:“老大焰情,能告訴我 www.163.com 的 IP 地址嗎陌凳?”根域名服務(wù)器是最高層次的,全球共有 13 套内舟。它不直接用于域名解析合敦,但能指明一條道路。

根 DNS 收到來(lái)自本地 DNS 的請(qǐng)求验游,發(fā)現(xiàn)后綴是 .com充岛,說(shuō):“哦,www.163.com 啊耕蝉,這個(gè)域名是由.com 區(qū)域管理崔梗,我給你它的頂級(jí)域名服務(wù)器的地址,你去問(wèn)問(wèn)它吧垒在∷馄牵”

本地 DNS 轉(zhuǎn)向問(wèn)頂級(jí)域名服務(wù)器:“老二,你能告訴我 www.163.com 的 IP 地址嗎?”頂級(jí)域名服務(wù)器就是大名鼎鼎的比如 .com谈为、.net旅挤、 .org 這些一級(jí)域名,它負(fù)責(zé)管理二級(jí)域名伞鲫,比如 163.com粘茄,所以它能提供一條更清晰的方向。

頂級(jí)域名服務(wù)器說(shuō):“我給你負(fù)責(zé) www.163.com 區(qū)域的權(quán)威 DNS 服務(wù)器的地址秕脓,你去問(wèn)它應(yīng)該能問(wèn)到柒瓣。”

本地 DNS 轉(zhuǎn)向問(wèn)權(quán)威 DNS 服務(wù)器:“您好撒会,www.163.com 對(duì)應(yīng)的 IP 是啥呀嘹朗?”163.com 的權(quán)威 DNS 服務(wù)器,它是域名解析結(jié)果的原出處诵肛。為啥叫權(quán)威呢屹培?就是我的域名我做主。

權(quán)威 DNS 服務(wù)器查詢(xún)后將對(duì)應(yīng)的 IP 地址 X.X.X.X 告訴本地 DNS怔檩。

本地 DNS 再將 IP 地址返回客戶(hù)端褪秀,客戶(hù)端和目標(biāo)建立連接。

至此薛训,我們完成了 DNS 的解析過(guò)程∶铰穑現(xiàn)在總結(jié)一下,整個(gè)過(guò)程我畫(huà)成了一個(gè)圖乙埃。

負(fù)載均衡

站在客戶(hù)端角度闸英,這是一次 DNS 遞歸查詢(xún)過(guò)程。因?yàn)楸镜?DNS 全權(quán)為它效勞介袜,它只要坐等結(jié)果即可甫何。在這個(gè)過(guò)程中,DNS 除了可以通過(guò)名稱(chēng)映射為 IP 地址遇伞,它還可以做另外一件事辙喂,就是負(fù)載均衡。

還是以訪(fǎng)問(wèn)“外婆家”為例鸠珠,還是我們開(kāi)頭的“外婆家”巍耗,但是,它可能有很多地址渐排,因?yàn)樗诤贾菘梢杂泻芏嗉揖嫣K裕绻粋€(gè)人想去吃“外婆家”飞盆,他可以就近找一家店娄琉,而不用大家都去同一家次乓,這就是負(fù)載均衡吓歇。

DNS 首先可以做內(nèi)部負(fù)載均衡孽水。

例如,一個(gè)應(yīng)用要訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)城看,在這個(gè)應(yīng)用里面應(yīng)該配置這個(gè)數(shù)據(jù)庫(kù)的 IP 地址女气,還是應(yīng)該配置這個(gè)數(shù)據(jù)庫(kù)的域名呢?顯然應(yīng)該配置域名测柠,因?yàn)橐坏┻@個(gè)數(shù)據(jù)庫(kù)炼鞠,因?yàn)槟撤N原因,換到了另外一臺(tái)機(jī)器上轰胁,而如果有多個(gè)應(yīng)用都配置了這臺(tái)數(shù)據(jù)庫(kù)的話(huà)谒主,一換 IP 地址,就需要將這些應(yīng)用全部修改一遍赃阀。但是如果配置了域名霎肯,則只要在 DNS 服務(wù)器里,將域名映射為新的 IP 地址榛斯,這個(gè)工作就完成了观游,大大簡(jiǎn)化了運(yùn)維。

在這個(gè)基礎(chǔ)上驮俗,我們可以再進(jìn)一步懂缕。例如,某個(gè)應(yīng)用要訪(fǎng)問(wèn)另外一個(gè)應(yīng)用王凑,如果配置另外一個(gè)應(yīng)用的 IP 地址搪柑,那么這個(gè)訪(fǎng)問(wèn)就是一對(duì)一的。但是當(dāng)被訪(fǎng)問(wèn)的應(yīng)用撐不住的時(shí)候索烹,我們其實(shí)可以部署多個(gè)工碾。但是,訪(fǎng)問(wèn)它的應(yīng)用术荤,如何在多個(gè)之間進(jìn)行負(fù)載均衡倚喂?只要配置成為域名就可以了。在域名解析的時(shí)候瓣戚,我們只要配置策略端圈,這次返回第一個(gè) IP,下次返回第二個(gè) IP子库,就可以實(shí)現(xiàn)負(fù)載均衡了舱权。

另外一個(gè)更加重要的是,DNS 還可以做全局負(fù)載均衡仑嗅。

為了保證我們的應(yīng)用高可用宴倍,往往會(huì)部署在多個(gè)機(jī)房张症,每個(gè)地方都會(huì)有自己的 IP 地址。當(dāng)用戶(hù)訪(fǎng)問(wèn)某個(gè)域名的時(shí)候鸵贬,這個(gè) IP 地址可以輪詢(xún)?cè)L問(wèn)多個(gè)數(shù)據(jù)中心俗他。如果一個(gè)數(shù)據(jù)中心因?yàn)槟撤N原因掛了,只要在 DNS 服務(wù)器里面阔逼,將這個(gè)數(shù)據(jù)中心對(duì)應(yīng)的 IP 地址刪除兆衅,就可以實(shí)現(xiàn)一定的高可用。

另外嗜浮,我們肯定希望北京的用戶(hù)訪(fǎng)問(wèn)北京的數(shù)據(jù)中心羡亩,上海的用戶(hù)訪(fǎng)問(wèn)上海的數(shù)據(jù)中心,這樣危融,客戶(hù)體驗(yàn)就會(huì)非常好畏铆,訪(fǎng)問(wèn)速度就會(huì)超快。這就是全局負(fù)載均衡的概念吉殃。

示例:DNS 訪(fǎng)問(wèn)數(shù)據(jù)中心中對(duì)象存儲(chǔ)上的靜態(tài)資源

我們通過(guò) DNS 訪(fǎng)問(wèn)數(shù)據(jù)中心中對(duì)象存儲(chǔ)上的靜態(tài)資源為例辞居,看一看整個(gè)過(guò)程。

假設(shè)全國(guó)有多個(gè)數(shù)據(jù)中心寨腔,托管在多個(gè)運(yùn)營(yíng)商速侈,每個(gè)數(shù)據(jù)中心三個(gè)可用區(qū)(Available Zone)。對(duì)象存儲(chǔ)通過(guò)跨可用區(qū)部署迫卢,實(shí)現(xiàn)高可用性倚搬。在每個(gè)數(shù)據(jù)中心中,都至少部署兩個(gè)內(nèi)部負(fù)載均衡器乾蛤,內(nèi)部負(fù)載均衡器后面對(duì)接多個(gè)對(duì)象存儲(chǔ)的前置服務(wù)器(Proxy-server)每界。

當(dāng)一個(gè)客戶(hù)端要訪(fǎng)問(wèn) object.yourcompany.com 的時(shí)候,需要將域名轉(zhuǎn)換為 IP 地址進(jìn)行訪(fǎng)問(wèn)家卖,所以它要請(qǐng)求本地 DNS 解析器眨层。

本地 DNS 解析器先查看看本地的緩存是否有這個(gè)記錄。如果有則直接使用上荡,因?yàn)樯厦娴倪^(guò)程太復(fù)雜了趴樱,如果每次都要遞歸解析,就太麻煩了酪捡。

如果本地?zé)o緩存叁征,則需要請(qǐng)求本地的 DNS 服務(wù)器。

本地的 DNS 服務(wù)器一般部署在你的數(shù)據(jù)中心或者你所在的運(yùn)營(yíng)商的網(wǎng)絡(luò)中逛薇,本地 DNS 服務(wù)器也需要看本地是否有緩存捺疼,如果有則返回,因?yàn)樗膊幌氚焉厦娴倪f歸過(guò)程再走一遍永罚。

至 7. 如果本地沒(méi)有啤呼,本地 DNS 才需要遞歸地從根 DNS 服務(wù)器卧秘,查到.com 的頂級(jí)域名服務(wù)器,最終查到 yourcompany.com 的權(quán)威 DNS 服務(wù)器官扣,給本地 DNS 服務(wù)器翅敌,權(quán)威 DNS 服務(wù)器按說(shuō)會(huì)返回真實(shí)要訪(fǎng)問(wèn)的 IP 地址。

對(duì)于不需要做全局負(fù)載均衡的簡(jiǎn)單應(yīng)用來(lái)講醇锚,yourcompany.com 的權(quán)威 DNS 服務(wù)器可以直接將 object.yourcompany.com 這個(gè)域名解析為一個(gè)或者多個(gè) IP 地址哼御,然后客戶(hù)端可以通過(guò)多個(gè) IP 地址坯临,進(jìn)行簡(jiǎn)單的輪詢(xún)焊唬,實(shí)現(xiàn)簡(jiǎn)單的負(fù)載均衡。

但是對(duì)于復(fù)雜的應(yīng)用看靠,尤其是跨地域跨運(yùn)營(yíng)商的大型應(yīng)用赶促,則需要更加復(fù)雜的全局負(fù)載均衡機(jī)制,因而需要專(zhuān)門(mén)的設(shè)備或者服務(wù)器來(lái)做這件事情挟炬,這就是全局負(fù)載均衡器(GSLB鸥滨,Global Server Load Balance)。

在 yourcompany.com 的 DNS 服務(wù)器中谤祖,一般是通過(guò)配置 CNAME 的方式婿滓,給 object.yourcompany.com 起一個(gè)別名,例如 object.vip.yourcomany.com粥喜,然后告訴本地 DNS 服務(wù)器凸主,讓它請(qǐng)求 GSLB 解析這個(gè)域名,GSLB 就可以在解析這個(gè)域名的過(guò)程中额湘,通過(guò)自己的策略實(shí)現(xiàn)負(fù)載均衡卿吐。

圖中畫(huà)了兩層的 GSLB,是因?yàn)榉诌\(yùn)營(yíng)商和地域锋华。我們希望不同運(yùn)營(yíng)商的客戶(hù)嗡官,可以訪(fǎng)問(wèn)相同運(yùn)營(yíng)商機(jī)房中的資源,這樣不跨運(yùn)營(yíng)商訪(fǎng)問(wèn)毯焕,有利于提高吞吐量衍腥,減少時(shí)延。

第一層 GSLB纳猫,通過(guò)查看請(qǐng)求它的本地 DNS 服務(wù)器所在的運(yùn)營(yíng)商婆咸,就知道用戶(hù)所在的運(yùn)營(yíng)商。假設(shè)是移動(dòng)续担,通過(guò) CNAME 的方式擅耽,通過(guò)另一個(gè)別名 object.yd.yourcompany.com,告訴本地 DNS 服務(wù)器去請(qǐng)求第二層的 GSLB物遇。

第二層 GSLB乖仇,通過(guò)查看請(qǐng)求它的本地 DNS 服務(wù)器所在的地址憾儒,就知道用戶(hù)所在的地理位置,然后將距離用戶(hù)位置比較近的 Region 里面乃沙,六個(gè)內(nèi)部負(fù)載均衡(SLB起趾,Server Load Balancer)的地址,返回給本地 DNS 服務(wù)器警儒。

本地 DNS 服務(wù)器將結(jié)果返回給本地 DNS 解析器训裆。

本地 DNS 解析器將結(jié)果緩存后,返回給客戶(hù)端蜀铲。

客戶(hù)端開(kāi)始訪(fǎng)問(wèn)屬于相同運(yùn)營(yíng)商的距離較近的 Region 1 中的對(duì)象存儲(chǔ)边琉,當(dāng)然客戶(hù)端得到了六個(gè) IP 地址,它可以通過(guò)負(fù)載均衡的方式记劝,隨機(jī)或者輪詢(xún)選擇一個(gè)可用區(qū)進(jìn)行訪(fǎng)問(wèn)变姨。對(duì)象存儲(chǔ)一般會(huì)有三個(gè)備份,從而可以實(shí)現(xiàn)對(duì)存儲(chǔ)讀寫(xiě)的負(fù)載均衡厌丑。

小結(jié)

好了定欧,這節(jié)內(nèi)容就到這里了,我們來(lái)總結(jié)一下:

DNS 是網(wǎng)絡(luò)世界的地址簿怒竿,可以通過(guò)域名查地址砍鸠,因?yàn)橛蛎?wù)器是按照樹(shù)狀結(jié)構(gòu)組織的,因而域名查找是使用遞歸的方法耕驰,并通過(guò)緩存的方式增強(qiáng)性能爷辱;

在域名和 IP 的映射過(guò)程中,給了應(yīng)用基于域名做負(fù)載均衡的機(jī)會(huì)耍属,可以是簡(jiǎn)單的負(fù)載均衡托嚣,也可以根據(jù)地址和運(yùn)營(yíng)商做全局的負(fù)載均衡。

最后厚骗,給你留兩個(gè)思考題:

全局負(fù)載均衡為什么要分地址和運(yùn)營(yíng)商呢示启?

全局負(fù)載均衡使用過(guò)程中,常常遇到失靈的情況领舰,你知道具體有哪些情況嗎夫嗓?對(duì)應(yīng)應(yīng)該怎么來(lái)解決呢?

歡迎給我留言3寤唷舍咖!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市锉桑,隨后出現(xiàn)的幾起案子排霉,更是在濱河造成了極大的恐慌,老刑警劉巖民轴,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件攻柠,死亡現(xiàn)場(chǎng)離奇詭異球订,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)瑰钮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)冒滩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人浪谴,你說(shuō)我怎么就攤上這事开睡。” “怎么了苟耻?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵篇恒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我梁呈,道長(zhǎng)婚度,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任官卡,我火速辦了婚禮,結(jié)果婚禮上醋虏,老公的妹妹穿的比我還像新娘寻咒。我一直安慰自己,他們只是感情好颈嚼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布毛秘。 她就那樣靜靜地躺著,像睡著了一般阻课。 火紅的嫁衣襯著肌膚如雪叫挟。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天限煞,我揣著相機(jī)與錄音抹恳,去河邊找鬼。 笑死署驻,一個(gè)胖子當(dāng)著我的面吹牛奋献,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播旺上,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼瓶蚂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了宣吱?” 一聲冷哼從身側(cè)響起窃这,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎征候,沒(méi)想到半個(gè)月后杭攻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體洒试,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年朴上,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了垒棋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡痪宰,死狀恐怖叼架,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情衣撬,我是刑警寧澤乖订,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站具练,受9級(jí)特大地震影響乍构,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扛点,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一哥遮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧陵究,春花似錦眠饮、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至松蒜,卻和暖如春扔茅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背秸苗。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工召娜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人难述。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓萤晴,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親胁后。 傳聞我的和親對(duì)象是個(gè)殘疾皇子店读,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容