一個(gè)域名對應(yīng)多個(gè) IP
DNS 解析策略
基于 DNS 實(shí)現(xiàn)負(fù)載均衡的優(yōu)缺點(diǎn)
字節(jié)二面:DNS 解析一個(gè)地址的時(shí)候會返回多個(gè) IP 嗎?
答案是不會。
本題的考察點(diǎn)其實(shí)就是 DNS 負(fù)載均衡。
一個(gè)域名對應(yīng)多個(gè) IP
從理論上講,一個(gè)域名是可以對應(yīng)多個(gè) IP 的,在這種情況下,當(dāng)不同的用戶訪問該域名時(shí),就會訪問到不同的 IP 地址。
要實(shí)現(xiàn)一個(gè)域名對應(yīng)多個(gè) IP 地址的效果,只需要在 DNS 解析操作平臺,添加一條解析記錄,將網(wǎng)站的域名指向服務(wù)器的 IP 地址。一般情況下,一個(gè)域名對應(yīng)一個(gè) IP 地址,也就只需添加一條解析記錄即可。
如我們想要將 www.itmtx.cn 這個(gè)域名分別指向 1.1.1.1(北京電信)、2.2.2.2(上海移動)、3.3.3.3(深圳聯(lián)通)三個(gè) IP。
那么我們就可以在 DNS 服務(wù)器中配置三個(gè) A 記錄,分別為:
www.itmtx.cn IN A 114.100.20.201;
www.itmtx.cn IN A 114.100.20.202;
www.itmtx.cn IN A 114.100.20.203;
如果現(xiàn)在北京用戶訪問 itmtx.cn 這個(gè)域名,上海用戶也在訪問,兩個(gè)用戶雖然都訪問同一個(gè)域名,但訪問的 IP 地址并不相同,而是會根據(jù) DNS 事先配置的「解析策略」將解析得到的那個(gè) IP 地址返回給對應(yīng)的訪客。
每次域名解析請求都會解析出一個(gè)不同的 IP 地址返回給訪客,這樣就構(gòu)成了一個(gè)服務(wù)器集群,并實(shí)現(xiàn)負(fù)載均衡的效果。不同用戶就近訪問不同的服務(wù)器 IP 地址,訪問速度大大提升,同時(shí)也減輕了單個(gè)服務(wù)器的訪問壓力。同時(shí),由于有多個(gè)備選 IP,當(dāng)其中一個(gè)出現(xiàn)問題時(shí),可以通過宕機(jī)切換,提高業(yè)務(wù)可用性。
基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能
項(xiàng)目地址:https://github.com/YunaiV/ruoyi-vue-pro
視頻教程:https://doc.iocoder.cn/video/
DNS 解析策略
常見的 DNS 解析策略包括:
輪詢(Round Robin):DNS 服務(wù)器按順序返回多個(gè)IP地址,實(shí)現(xiàn)請求的輪流分發(fā)到不同的服務(wù)器上。
權(quán)重(Weighted):為每個(gè) IP 地址分配不同的權(quán)重,權(quán)重越高的服務(wù)器被選中的概率越大。
響應(yīng)時(shí)間(Response Time):DNS 服務(wù)器可以通過測量服務(wù)器的響應(yīng)時(shí)間來選擇最快的服務(wù)器,將域名解析為對應(yīng)的 IP 地址。
各個(gè) DNS 解析產(chǎn)品可能采用的解析策略不一樣,以 DNSPod 解析為例,它采用的就是權(quán)重 + 隨機(jī)的策略:
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能
項(xiàng)目地址:https://github.com/YunaiV/yudao-cloud
視頻教程:https://doc.iocoder.cn/video/
基于 DNS 實(shí)現(xiàn)負(fù)載均衡的優(yōu)缺點(diǎn)
基于 DNS 實(shí)現(xiàn)負(fù)載均衡是十分簡單和有效的技術(shù)手段,它主要有以下幾點(diǎn)優(yōu)勢:
將負(fù)載均衡工作交給 DNS,省去了網(wǎng)站管理維護(hù)負(fù)載均衡服務(wù)器的麻煩;
技術(shù)實(shí)現(xiàn)比較靈活,操作簡單,成本低,適用于大多數(shù) TCP/IP 應(yīng)用;
對于部署在服務(wù)器上的應(yīng)用來說,不需要修改任何代碼就能實(shí)現(xiàn)不同機(jī)器上的應(yīng)用訪問;
很多 DNS 系統(tǒng)還支持基于地理位置的域名解析,可以將域名解析成距離用戶地理位置最近的服務(wù)器地址,加快用戶訪問速度。
但基于 DNS 的負(fù)載均衡同樣也存在一些弊端:
目前的 DNS 系統(tǒng)是需要經(jīng)過遞歸服務(wù)器、頂級服務(wù)器、權(quán)威服務(wù)器以及眾多緩存等多級解析的,在每一個(gè)環(huán)節(jié)都可能存在解析記錄緩存。如果服務(wù)器 IP 發(fā)生變動,即使修改了 A 記錄,也需要各級緩存失效后才能生效。而在解析生效前的這段時(shí)間,用戶可能就會根據(jù)緩存記錄訪問到已經(jīng)被更換過的服務(wù)器上,從而導(dǎo)致訪問失敗。
為了本地 DNS 服務(wù)器能夠及時(shí)同步權(quán)威服務(wù)器上的最新記錄,所以一般將 DNS 緩存刷新時(shí)間設(shè)置得比較小,這就會導(dǎo)致 DNS 頻繁發(fā)起解析請求,從而造成額外的網(wǎng)絡(luò)問題。
DNS 本身并不具備主動監(jiān)測服務(wù)器負(fù)載情況或動態(tài)調(diào)整權(quán)重的能力,不能區(qū)分不同服務(wù)器之間的性能和負(fù)載差異,不能反映服務(wù)器當(dāng)前的運(yùn)行狀態(tài),所以一些大型網(wǎng)站總是使用 DNS 域名解析作為第一級負(fù)載均衡手段,然后再通過負(fù)載均衡服務(wù)器提供更高級的負(fù)載均衡算法(比如最少連接:將請求發(fā)送到擁有最少開放連接的服務(wù)器),從而完成最終請求。
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
8958瀏覽量
85082 -
DNS
+關(guān)注
關(guān)注
0文章
215瀏覽量
19771 -
測量
+關(guān)注
關(guān)注
10文章
4732瀏覽量
111059
原文標(biāo)題:DNS 解析一個(gè)地址的時(shí)候會返回多個(gè) IP 嗎?
文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論