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