公共接入層的DNS應(yīng)用

公司的域名zhuanjidata.kugou.com接入了公共接入層,一開始我不明白這個接入公共層流程是怎樣的,下面我就順藤摸瓜的把這個問題解答

DNS查詢的流程:

  1. local DNS作為客戶端發(fā)起查詢域名解析的請求
  2. 向誰請求?首先會查詢本地cache,如果本地有緩存這個域名的解析結(jié)果,那么直接返回
  3. 如果本地cache不存在,就逐層查詢,向根域名的解析服務(wù)器查詢,即 . 的 NS記錄,NS記錄非常重要,NS服務(wù)器知道下一級域名的各種記錄
  4. 域名分為根域名 . , 頂級域名(TLD),二級域名(SLD),三級域名(主機名),即主機名.二級域名.頂級域名.根域名
  5. 本地local DNS逐層查詢的時候,先到根域名.的ns記錄查詢它下面的頂級域名記錄,然后得到頂級域名后,又根據(jù)頂級域名NS查詢它下面的域名記錄,直到得到權(quán)威服務(wù)器的回答的IP ;比如:我要查詢zhuanjidata.kugou.com 首先local DNS會請求根域名.的NS記錄(由于不會變,基本寫死在各個DNS客戶端里面)根域名的NS服務(wù)器存儲著它下級的所有域名記錄,所以我們能查詢到頂級域名.com的信息,包括它的NS記錄,然后我們請求.com的NS服務(wù)器,那么它就能查詢到它的下級域名,即kugou.com的NS記錄。 kugou.com的NS記錄就掌握了所有*.kugou.com的域名記錄。那么我們就能得到zhuanjidata.kugou.com的記錄,得到的是CNAME的記錄。
  6. kugou.com的NS記錄,就是說這個NS服務(wù)器是負(fù)責(zé)解析kugou.com下面的域名,即.kugou.com的記錄,除非我們另外指定了子域名使用另外的NS記錄,否則所有.kugou.com都由kugou.com的NS記錄解析。 比如我配置了bb.kugou.com的NS記錄指向另外的記錄B1server,那么*.bb.kugou.com下面的域名才會給B1server解析。
  7. 一般一個二級域名都會需要設(shè)置多個NS記錄,主要作用是容災(zāi),客戶端其實請求隨便一個都是能得到它的子域名的記錄。如果返回的NS列表有一個掛了,可以給客戶端使用另外一個NS重試請求。
  8. CNAME是域名內(nèi)部跳轉(zhuǎn)記錄,CNAME記錄就是一個替換,所以域名一旦設(shè)置CNAME記錄以后,就不能再設(shè)置其他記錄了(比如A記錄和MX記錄),這是為了防止產(chǎn)生沖突。比如a.com CNAME b.com ,如果b.com有A,MX記錄,而a.com又設(shè)置了,就會沖突,所以CNAME設(shè)置了就要無條件轉(zhuǎn)發(fā)到指定的域名

層級查詢過程:

DNS服務(wù)器根據(jù)域名的層級,進(jìn)行分級查詢。

需要明確的是,每一級域名都有自己的NS記錄,NS記錄指向該級域名的域名服務(wù)器。這些服務(wù)器知道下一級域名的各種記錄。

所謂"分級查詢",就是從根域名開始,依次查詢每一級域名的NS記錄,直到查到最終的IP地址,過程大致如下。

  • 從"根域名服務(wù)器"查到"頂級域名服務(wù)器"的NS記錄和A記錄(IP地址)
  • 從"頂級域名服務(wù)器"查到"次級域名服務(wù)器"的NS記錄和A記錄(IP地址)
  • 從"次級域名服務(wù)器"查出"主機名"的IP地址

實踐分析

dig zhuanjidata.kugou.com的流程,按照下圖來說說:

  1. 通過層級查詢請求.com的NS記錄,查詢kugou.com的NS記錄,得到的是ns3.kugou.net, ns4.kugou.net, ns5.kugou.net等多個ns記錄,這里可以看到kugou.com配置多了個ns記錄,為的就是防止單點故障,可以容災(zāi)。
  2. local DNS請求nsX.kugou.net請求查詢zhuanjidata.kugou.com的記錄,得到zhuanjidata.kugou.com --> CNAME --> kgnopipv6.kugou.com的記錄,說明需要轉(zhuǎn)發(fā)到kgnopipv6.kugou.com,所以我們最終查詢的是 kgnopipv6.kugou.com 的IP。
  3. 那么我們需要重新走流程查詢 kgnopipv6.kugou.com 的記錄,既然上面都直到了kugou.com的NS記錄,而且kgnopipv6.kugou.com也是在這個NS服務(wù)器下解析的,所以我認(rèn)為不需要再從新從根域名開始查詢了
  4. 知道了kugou.com的NS服務(wù)器,local DNS就可以對這些NS列表挑選一個出來發(fā)起請求,要求查詢 kgnopipv6.kugou.com 的記錄,而就在此時,智能DNS的作用發(fā)揮了, 這些NS記錄即ns3.kugou.net 獲取local DNS的請求,就能根據(jù)local DNS的IP的地域性,判斷出返回就近區(qū)域的A記錄!
  5. 這也印證了智能DNS都是根據(jù)local DNS的IP來判斷的,而不是用戶的機器IP!因為請求DNS解析是在local DNS與 域名NS記錄之前發(fā)生的!!
image.png

接入公共層的作用?

公司的域名a.kugou.com, b.kugou.com, c.kugou.com都是通過CNAME到kgnop.kugou.com來達(dá)到接入公共層的作用,這樣的作用是什么呢?我總結(jié)一下:

  1. 由于kgnop.kugou.com已經(jīng)設(shè)置好了N個NS記錄,解析已經(jīng)非常完善,每個新增域名只要CNAME到它即可享受這樣完整的配置。如果每次新增域名都去配置NS記錄,那太麻煩了,而且如果有得NS記錄需要改變,所有的域名都要修改,耦合性太大!
  2. 各個域名只要CNAME了kgnop.kugou.com就相當(dāng)于接入了公共層,就能享受多個NS的解析集群,而且這些NS服務(wù)器還有一個重要特性,就是智能DNS,即根據(jù)用戶的地區(qū)返回就近的A記錄
  3. 有一個核心問題,這里返回的A記錄,是kgnop.kugou.com的A記錄,不是zhuanjidata.kugou.com的A記錄,即不會直接到達(dá)我們的業(yè)務(wù)機器的!而且kgnop.kugou.com被這么多業(yè)務(wù)域名接入了,那么得到kgnop.kugou.com的A記錄后,怎么能讓請求正確到達(dá)我們的業(yè)務(wù)接口機呢??
  4. 我們得到的A記錄,只是一個VIP,虛擬IP,可以認(rèn)為是LVS的服務(wù),然后LVS通過轉(zhuǎn)發(fā)請求到RS(realserver)來完成這個轉(zhuǎn)發(fā)的業(yè)務(wù)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 計算機網(wǎng)絡(luò)系列博文——目錄 DNS域名解析協(xié)議 因特網(wǎng)主機標(biāo)識 主機名 hostname IP地址 IP adre...
    疼呃閱讀 909評論 0 0
  • 轉(zhuǎn)載自阮一峰的博客作者:阮一峰鏈接:http://www.ruanyifeng.com/blog/2016/06/...
    西三旗靚仔閱讀 289評論 0 1
  • DNS 是互聯(lián)網(wǎng)核心協(xié)議之一。不管是上網(wǎng)瀏覽,還是編程開發(fā),都需要了解一點它的知識.本文詳細(xì)介紹DNS的原理,以及...
    Ly_Never閱讀 412評論 0 3
  • 作者:阮一峰原文地址:http://www.ruanyifeng.com/blog/2016/06/dns.htm...
    IT程序獅閱讀 913評論 0 6
  • 推薦指數(shù): 6.0 書籍主旨關(guān)鍵詞:特權(quán)、焦點、注意力、語言聯(lián)想、情景聯(lián)想 觀點: 1.統(tǒng)計學(xué)現(xiàn)在叫數(shù)據(jù)分析,社會...
    Jenaral閱讀 5,948評論 0 5

友情鏈接更多精彩內(nèi)容