应用于CDN的GSLB系统
目前已有多種調(diào)度機(jī)制應(yīng)用于CDN的GSLB系統(tǒng),其中最常見的就是基于DNS解析方式的GSLB,同時還有基于應(yīng)用層協(xié)議重定向的GSLB,基于路由協(xié)議的GSLB,本篇我們先來看一下基于DNS解析方式的GSLB。
首先,我們還是看一下傳統(tǒng)網(wǎng)絡(luò)的訪問形式和使用CDN緩存的區(qū)別:
1 傳統(tǒng)網(wǎng)絡(luò)訪問形式
 1.用戶再自己的瀏覽器中輸入要訪問的網(wǎng)站域名www.tencent.com,瀏覽器向本地DNS服務(wù)器請求對該域名的解析:
2.瀏覽器得到域名解析結(jié)果,就是該域名相應(yīng)的服務(wù)設(shè)備的IP地址“1.1.1.1”
3.瀏覽器向服務(wù)器請求內(nèi)容
4.服務(wù)器將用戶請求內(nèi)容傳送給瀏覽器
2.使用CDN進(jìn)行訪問
 01.用戶在自己的瀏覽器中輸入要訪問的網(wǎng)站域名tencent.com, 瀏覽器向本地DNS服務(wù)器 對該域名的解析
02.DNS 系統(tǒng)會最終將域名的解析權(quán)交給CNAME 指向的 CDN 專用 DNS 服務(wù)器tencent.cdn.dnsv1.com
03.CDN 的 DNS 服務(wù)器將 CDN 的全局負(fù)載均衡設(shè)備 IP地址“2.2.2.2”返回用戶
04.用戶向 CDN 的全局負(fù)載均衡設(shè)備發(fā)起內(nèi)容 URL 訪問請求
05.CDN 全局負(fù)載均衡設(shè)備根據(jù)用戶 IP 地址,以及用戶請求的內(nèi)容URL,選擇一臺用戶所屬區(qū)域的區(qū)域負(fù)載均衡設(shè)備,告訴用戶向這臺設(shè)備發(fā)起請求
06.基于以下這些條件的綜合分析之后,區(qū)域負(fù)載均衡設(shè)備會向全局負(fù)載均衡設(shè)備返回一臺緩存服務(wù)器的IP地址:
◎根據(jù)用戶 IP 地址,判斷哪一臺服務(wù)器距用戶最近; ◎根據(jù)用戶所請求的 URL 中攜帶的內(nèi)容名稱,判斷哪一臺服務(wù)器上有用戶所需內(nèi)容; ◎查詢各個服務(wù)器當(dāng)前的負(fù)載情況,判斷哪一臺服務(wù)器尚有服務(wù)能力;07.全局負(fù)載均衡設(shè)備把服務(wù)器的 IP 地址”3.3.3.3”返回給用戶
08.用戶向緩存服務(wù)器發(fā)起請求,緩存服務(wù)器響應(yīng)用戶請求,將用戶所需內(nèi)容傳送到用戶終端。如果這臺緩存服務(wù)器上并沒有用戶想要的內(nèi)容,而區(qū)域均衡設(shè)備依然將它分配給了用戶,那么這臺服務(wù)器就要向它的上一級緩存服務(wù)器請求內(nèi)容,直至追溯到網(wǎng)站的源服務(wù)器將內(nèi)容拉到本地。
為了更好的了解使用CDN訪問和傳統(tǒng)網(wǎng)絡(luò)訪問的區(qū)別,可以思考以下兩個問題:
1.為什么要使用CNAME這樣的別名機(jī)制?好處是什么?
 2.能否直接使用CNAME后的別名直接訪問?
帶著這樣的問題,我們先來了解以下應(yīng)用于CDN的GSLB系統(tǒng)。
3.DNS產(chǎn)生背景
Internet將網(wǎng)絡(luò)中的主機(jī)連接在一起需要有一套自己的規(guī)則,主機(jī)在互聯(lián)網(wǎng)上的位置靠IP來標(biāo)識,每一個主機(jī)都需要擁有一個唯一不重復(fù)的IP地址,不同的主機(jī)通過這個唯一的IP來進(jìn)行辨識。
但是我們在現(xiàn)實生活中很少會通過輸入IP來訪問的原因是很難記憶,比如你要訪問騰訊的主頁你會去輸入www.tencent.com而不是1.1.1.1這樣的IP。所以就出現(xiàn)了主機(jī)名識別碼,比如www.tencent.com這種形式。
機(jī)器喜歡簡單的數(shù)字IP,人們就使用主機(jī)名這樣的方式,而這兩者之間的轉(zhuǎn)換,就是主機(jī)名于IP地址的映射關(guān)系。
為了實現(xiàn)這個功能,每臺主機(jī)都將這個主機(jī)標(biāo)識符到IP地址的轉(zhuǎn)換表存儲在一個叫hosts的數(shù)據(jù)庫文件中。幾乎所有的現(xiàn)代操作系統(tǒng)中,還仍然存在這個hosts文件,只是其中的內(nèi)容變少了(因為其大部分職能都被DNS服務(wù)器替代了)。
我們現(xiàn)在依然可以查詢自己的host文件。
然而,隨著網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)大、接入主機(jī)的個數(shù)不斷增加,使得這種集中式管理主機(jī)名和IP地址映射關(guān)系的方案可行性逐漸降低。
為了便于維護(hù)和管理,及時全網(wǎng)更新和同步映射關(guān)系,提出了DNS規(guī)范,最后演變成我們所說的DNS系統(tǒng)。
4.基于DNS解析的GSLB工作方式
基于DNS解析的GSLB方案實際上就是把負(fù)載均衡設(shè)備部署在DNS系統(tǒng)中,在用戶發(fā)出任何應(yīng)用連接請求時,首先必須通過DNS系統(tǒng)來請求獲得服務(wù)器的IP地址,基于DNS的GSLB就是在返回DNS的過程中進(jìn)行只能決策,給用戶返回一個最佳的服務(wù)器IP的地址。從用戶角度來看,整個應(yīng)用流于沒有GSLB參與是沒有發(fā)生任何變化。
基于DNS解析來實現(xiàn)GSLB的方法有多種,常見的就是下面三種:
通過CNAME方式實現(xiàn)負(fù)載均衡
 CNAME是描述一個域名的別名,服務(wù)器獲得CNAME記錄后就會用記錄中的別名來替換查找的域名,然后通過查詢這個別名的A記錄來獲得相應(yīng)的IP地址。
 它是這樣操作的,先將GSLB的主機(jī)名定義為所查詢域名的權(quán)威DNS服務(wù)器的別名,然后將GSLB主機(jī)名添加多條A記錄,分別對應(yīng)于多個服務(wù)器的IP地址。
 這樣本地服務(wù)器會向客戶端返回多個IP地址作為域名的查詢結(jié)果,并且輪詢這些IP,比如DNS返回兩個IP,5.5.5.5(深圳)、6.6.6.6(北京),首先嘗試訪問深圳IP,如果請求失敗才會向北京IP發(fā)起請求,下一個用戶請求同樣的域名的解析是,權(quán)威域名服務(wù)器會在響應(yīng)信息中將北京IP放在首位,客戶端首先嘗試向北京發(fā)起請求,以此來達(dá)到兩臺服務(wù)器之間的負(fù)載均衡。
負(fù)載均衡器作為權(quán)威DNS服務(wù)器
 這種方式是把負(fù)載均衡器作為一個域名空間的權(quán)威DNS服務(wù)器,這樣負(fù)載均衡器就會接受所有對這個域的DNS請求(負(fù)載均衡器代替權(quán)威DNS服務(wù)器進(jìn)行解析,無論用戶訪問的網(wǎng)站是否是需要進(jìn)行解析的域名,其DNS請求都會被發(fā)送到負(fù)載均衡器上),從而可以通過預(yù)置策略對域名進(jìn)行解析來達(dá)到負(fù)載均衡。
負(fù)載均衡器作為代理DNS服務(wù)器
 這種方式是把負(fù)載均衡器注冊為一個域名空間的權(quán)威DNS服務(wù)器,而真正的權(quán)威域名服務(wù)器則部署在負(fù)載均衡器后面,所有的DNS請求都會先到達(dá)負(fù)載均衡器,由負(fù)載均衡器轉(zhuǎn)發(fā)至真正的權(quán)威DNS服務(wù)器,然后修改權(quán)威DNS服務(wù)器返回的響應(yīng)信息,從而實現(xiàn)負(fù)載均衡。
我們再回到提出的問題
1.為什么要使用CNAME這樣的別名機(jī)制?好處是什么?
實際上在cdn業(yè)務(wù)場景下通常需要設(shè)置CNAME是因為采用了智能解析,不同地區(qū)解析的IP不一樣,試想一下你再使用cdn服務(wù)時,服務(wù)商給你一個IP,如果有一天服務(wù)商修改了IP地址,這個IP上對應(yīng)的域名是要一起修改的,如果使用了CNAME則只需要重新解析一下就行。
所以我個人認(rèn)為經(jīng)常換IP,建議用CNAME別名解析,不經(jīng)常換IP,可以使用A記錄直接解析到IP。
2.能否直接使用CNAME后的別名直接訪問?
這個是不可以的,是因為CNAME后的域名是用于找到IP的,不能直接訪問,如果直接訪問CNAME域名,則可能會顯示504頁面。
一個關(guān)于CNAME的誤解
 很多站長認(rèn)為將一個域名(sub.domain1.com)CNAME到另外一個域名(domain2.com)之后就可以實現(xiàn):訪問sub.domain1.com得到domain2.com的內(nèi)容.這個混淆了解析和綁定的區(qū)別,把 CNAME 和轉(zhuǎn)向功能混為一談了。CNAME只能保證sub.domain1.com的解析和domain2.com同步起來,如果是共享ip的主機(jī),不綁定還是訪問不到網(wǎng)站內(nèi)容!
關(guān)注騰訊云CDN公眾號,技術(shù)干貨一手掌握!
 
總結(jié)
以上是生活随笔為你收集整理的应用于CDN的GSLB系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 三种CDN调度系统实现原理详解
- 下一篇: QUIC的前世今生——HTTP演变史
