DNS 服務(wù)器
在現(xiàn)實(shí)世界中,當(dāng)您進(jìn)行閱覽新聞、在線下單、下載文件或觀看直播時(shí),您需要通過訪問域名來訪問目標(biāo)網(wǎng)站,例如 、 等。您只需記住這些網(wǎng)站的名稱,而非它們的 IP 地址通過 域名解析別名 進(jìn)入服務(wù)器,因?yàn)榕c網(wǎng)站名稱相比,IP 地址是很難記住的。因此,您需要一個(gè)作為 DNS 服務(wù)器的網(wǎng)站/域名地址本。
DNS 在日常生活中非常重要。每個(gè)在線的人都需要訪問它,但同時(shí),這對(duì)它來說也是一個(gè)非常大的挑戰(zhàn)。如果 DNS 服務(wù)器出現(xiàn)故障,整個(gè) 網(wǎng)絡(luò)都將關(guān)閉。
另外,上網(wǎng)的人分布在世界各地,如果每個(gè)人都去同一個(gè)地方訪問某個(gè)服務(wù)器,延遲會(huì)非常大。因此,DNS 服務(wù)器必須設(shè)置為高可用、高并發(fā)和分布式的。
因此,它應(yīng)具有如下樹狀層次結(jié)構(gòu):
DNS 解析過程
為了提高 DNS 解析性能,許多網(wǎng)絡(luò)會(huì)根據(jù)位置部署 DNS 緩存服務(wù)器。DNS 解析過程如下:(這里以訪問 為例)
總結(jié)一下,我畫了下面這張圖:
DNS 負(fù)載均衡內(nèi)部負(fù)載均衡
DNS 服務(wù)器首先進(jìn)行內(nèi)部負(fù)載均衡。比如,應(yīng)用要訪問數(shù)據(jù)庫,應(yīng)該在應(yīng)用中配置數(shù)據(jù)庫的 IP 地址,還是應(yīng)該配置數(shù)據(jù)庫的域名呢?
很明顯,應(yīng)該配置域名通過 域名解析別名 進(jìn)入服務(wù)器,因?yàn)橐坏?shù)據(jù)庫因?yàn)槟撤N原因換到另一臺(tái)機(jī)器上,如果多個(gè)應(yīng)用都配置了這個(gè)數(shù)據(jù)庫,一旦 IP 地址改變了,所有這些應(yīng)用都需要重新修改。
但是,如果配置了域名,只要在 DNS 服務(wù)器中將域名映射到一個(gè)新的 IP 地址就完成了這項(xiàng)工作,如此大大簡化了運(yùn)維工作。
在此基礎(chǔ)上,我們可以走得更遠(yuǎ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)用戶訪問一個(gè)域名時(shí),這個(gè) IP 地址可以輪詢多個(gè)數(shù)據(jù)中心。如果某個(gè)數(shù)據(jù)中心由于某種原因宕機(jī)了,只要在 DNS 服務(wù)器中刪除該數(shù)據(jù)中心對(duì)應(yīng)的 IP 地址即可。這樣就可以實(shí)現(xiàn)一定程度的高可用。
另外,我們肯定希望紐約的用戶訪問紐約的數(shù)據(jù)中心,西雅圖的用戶訪問西雅圖的數(shù)據(jù)中心,這樣客戶體驗(yàn)會(huì)非常好,訪問速度會(huì)超級(jí)快。這就是全局負(fù)載均衡的概念。
我們來看看它是如何工作的,假設(shè)全國有多個(gè)地區(qū),每個(gè)地區(qū)都有三個(gè)可用區(qū)域。
對(duì)于不需要全局負(fù)載均衡的簡單應(yīng)用, 的權(quán)威 DNS 服務(wù)器可以直接將域名 解析為一個(gè)或多個(gè) IP 地址,然后客戶端可以使用多個(gè) IP 地址進(jìn)行輪詢來實(shí)現(xiàn)簡單的負(fù)載均衡。
但是對(duì)于復(fù)雜的應(yīng)用,尤其是跨區(qū)域、跨數(shù)據(jù)中心的大型應(yīng)用,需要更復(fù)雜的全局負(fù)載均衡機(jī)制,這需要專門的設(shè)備或服務(wù)器來做這件事——全局負(fù)載均衡器(GSLB, Load )。
在 的 DNS 服務(wù)器中,一般通過配置 CNAME,給 起一個(gè)別名,如 ,然后告訴本地 DNS 服務(wù)器去請(qǐng)求 GSLB 來解析域名,GSLB 在解析這個(gè)域名的過程中,可以通過自己的策略來實(shí)現(xiàn)負(fù)載均衡。
圖中繪制了兩層 GSLB,分別為數(shù)據(jù)中心和區(qū)域。我們希望不同數(shù)據(jù)中心的客戶可以訪問同一數(shù)據(jù)中心的資源,以提高吞吐量并減少延遲。
結(jié)論
DNS 是網(wǎng)絡(luò)世界的通訊錄,可以通過域名搜索地址,因?yàn)橛蛎?wù)器是按樹狀結(jié)構(gòu)組織的,所以域名搜索采用遞歸的方式,通過緩存來提升性能。
在域名和 IP 的映射過程中,應(yīng)用程序有機(jī)會(huì)進(jìn)行基于域名的負(fù)載均衡,可以是簡單的負(fù)載均衡,也可以是基于地址、數(shù)據(jù)中心和區(qū)域的全局負(fù)載均衡。
鏈接://dns-deep-dive-