我(wǒ)(wǒ)們在之前的文章中(zhōng)簡單提到過,一(yī)個IP可以對應多個域名,那麽一(yī)個域名可以對應多個IP嗎(ma)?如果我(wǒ)(wǒ)們想要達成這種效果,需要通過什麽技術手段來實現?
從理論上講,一(yī)個域名是可以對應多個IP的,在這種情況下(xià),當不同的用戶訪問該域名時,就會訪問到不同的IP地址。比如,現在北(běi)京用戶在訪問example.com這個域名,上海用戶也在訪問,兩個用戶雖然都訪問同一(yī)個域名,但訪問的IP地址并不一(yī)定相同,而是會根據負載均衡調度系統将距離(lí)訪客路由跳數最小(xiǎo)的那個IP地址返回給對應的訪客。這樣就能保證不同地區和線路的用戶都能獲得最快速穩定的訪問體(tǐ)驗。同時,由于有多個備選IP,當其中(zhōng)一(yī)個出現問題時,可以通過宕機切換,提高業務可用性。
要實現一(yī)個域名對應多個IP地址的效果,首先需要了解DNS(域名系統)的工(gōng)作原理。
DNS(Domain Name System)是因特網的一(yī)項服務,它作爲域名和IP地址相互映射的一(yī)個分(fēn)布式數據庫,能夠使人們更方便地訪問互聯網。我(wǒ)(wǒ)們平時訪問網站更多的是通過域名而非IP地址去(qù)觸達,但域名并不能被計算機直接識别,所以需要通過DNS将域名“翻譯”稱可由計算機直接識别的IP地址。具體(tǐ)的操作方式,是在DNS解析操作平台,添加一(yī)條解析記錄(A記錄或AAAA記錄),将網站的域名指向服務器的IP地址。一(yī)般情況下(xià),一(yī)個域名對應一(yī)個IP地址,也就隻需添加一(yī)條解析記錄即可。如果想要實現一(yī)個域名對應多個IP地址,就需要添加多條解析記錄,這也是通過DNS實現負載均衡的簡單原理。
如我(wǒ)(wǒ)們想要将www.example.com這個域名分(fēn)别指向1.1.1.1(北(běi)京電(diàn)信)、2.2.2.2(上海移動)、3.3.3.3(深圳聯通)三個IP。
那麽我(wǒ)(wǒ)們就可以在DNS服務器中(zhōng)配置三個A記錄,分(fēn)别爲
www.example.com IN A 114.100.20.201;
www.example.com IN A 114.100.20.202;
www.example.com IN A 114.100.20.203;
這樣,每次域名解析請求都會根據對應的負載均衡算法計算出一(yī)個不同的IP地址返回給訪客,這樣就構成了一(yī)個服務器集群,并實現負載均衡的效果。在實際場景中(zhōng),當北(běi)京用戶訪問www.example.com域名時,DNS會根據負載均衡算法和A記錄得出一(yī)個就近IP地址1.1.1.1返回給客戶端,當上海用戶訪問www.example.com域名時,DNS就會返回給2.2.2.2的服務器地址,深圳用戶返回3.3.3.3。
不同用戶就近訪問不同的服務器IP地址,訪問速度大(dà)大(dà)提升,同時也減輕了單個服務器的訪問壓力。
實現負載均衡的方式有很多種,其中(zhōng)DNS是一(yī)種十分(fēn)簡單和有效的技術手段,它主要有以下(xià)幾點優勢:
(1)将負載均衡工(gōng)作交給DNS,省去(qù)了網站管理維護負載均衡服務器的麻煩;
(2)技術實現比較靈活,操作簡單,成本低,适用于大(dà)多數TCP/IP應用;
(3)對于部署在服務器上的應用來說,不需要修改任何代碼就能實現不同機器上的應用訪問;
(4)很多DNS系統還支持基于地理位置的域名解析,可以将域名解析成距離(lí)用戶地理位置最近的服務器地址,加快用戶訪問速度。
但基于DNS的負載均衡同樣也存在一(yī)些弊端:
1.目前的DNS系統是需要經過遞歸服務器、頂級服務器、權威服務器以及衆多緩存等多級解析的,在每一(yī)個環節都可能存在解析記錄緩存。如果服務器IP發生(shēng)變動,即使修改了A記錄,也需要各級緩存失效後才能生(shēng)效。而在解析生(shēng)效前的這段時間,用戶可能就會根據緩存記錄訪問到已經被更換過的服務器上,從而導緻訪問失敗。
2. DNS負載均衡采用的是簡單的輪詢算法,不能區分(fēn)不同服務器之間的性能和負載差異,不能反映服務器當前的運行狀态,所以負載均衡效果并不太好。
3.爲了本地DNS服務器能夠及時同步權威服務器上的最新記錄,所以一(yī)般将DNS緩存刷新時間設置得比較小(xiǎo),這就會導緻DNS頻(pín)繁發起解析請求,從而造成額外(wài)的網絡問題。
所以一(yī)些大(dà)型網站總是使用DNS域名解析作爲第一(yī)級負載均衡手段,然後在通過提供負載均衡服務的内容部服務器再進行負載均衡,将最終請求發到真實的服務器上,從而完成最終請求。