DNS輪循
DNS輪循(英語:round-robin DNS)是一種用於負載分配、負載平衡或容錯配置多個冗餘網際協議(IP)服務主機(例如Web服務器、 FTP服務器)的技術,通過適當的統計模型管理域名系統 (DNS) 響應客戶端計算機對地址的請求。[1]
在其最簡單的實現中,DNS輪循響應DNS請求的返回結果是多個服務器對應的潛在IP地址列表,而不是單個潛在IP地址[2][3]。返回列表中IP地址的順序是術語輪循(英語:round robin)的基礎。對於每次DNS響應,列表中的IP地址的順序都會被置換。 [4]傳統上,IP客戶端最初嘗試使用從DNS查詢返回的第一個地址進行連接, [5]這樣在不同的連接嘗試中,客戶端將接收來自不同服務器的服務,從而將整體負載分配到不同服務器之間。
一些DNS解析器在實現上嘗試重新排序列表,以優先考慮IP地址在數字上「更接近」的網絡。這種行為在IPv6的定義過程中被標準化[6],但也被指責會破壞基於輪循的負載均衡[7][8]。一些桌面客戶端會在連接超時30秒後嘗試備用地址。[2]
DNS輪循通常用於在多個Web服務器之間對請求進行負載平衡。例如,一家公司擁有一個域名和相同網頁但部署在三個IP地址的三台服務器。這時,設置DNS服務使域名有多個A記錄,每個IP地址對應一個。當第一個用戶訪問網頁時,請求將被發送到第一個IP地址。第二個訪問主頁的用戶將被發送到下一個IP地址,第三個用戶將被發送到第三個IP地址。在每種情況下,一旦給出IP地址,它就會進入列表的末尾。因此,第四個用戶將被發送到第一個IP地址,依此類推。
缺點
[編輯]儘管易於實現,但DNS輪循有許多缺點,例如DNS的分層結構中的緩存記錄,以及客戶端地址的緩存和重用,這些缺點的組合可能難以管理。同時,不應僅依賴DNS輪循來保障服務的可用性。如果列表中某個地址的服務故障,DNS仍然會繼續分發該地址,客戶端仍將嘗試連接無法訪問的服務。
DNS輪循本身可能不是負載均衡的最佳選擇,因為只是在每次查詢名稱服務器時交替地址記錄的順序。由於DNS輪循不考慮業務時常、服務器負載和網絡擁塞,所以它最適將大量連接均勻分配到相同容量的服務器上。在其他情況下,它只會進行負載分配,而不是負載均衡。[9]
存在克服這些限制的方法。例如,修改過的DNS服務器(例如 lbnamed[10] )可以定期輪循鏡像服務器的可用性和負載因素。如果服務器的回覆不符合預設參數,則可以暫時從DNS池中移除該服務器,直到下次報告符合參數。
參見
[編輯]參考
[編輯]- ^ Round-Robin DNS. Cloudflare. Cloudflare, Inc. [16 August 2019]. (原始內容存檔於2023-01-15)."Round-Robin DNS" (頁面存檔備份,存於網際網路檔案館). Cloudflare. Cloudflare, Inc. Retrieved 16 August 2019.
- ^ 2.0 2.1 Feenberg, Daniel. DNS round robin for web server failover. July 25, 2016 [January 10, 2020]. (原始內容存檔於2020-08-06).Feenberg, Daniel (July 25, 2016). "DNS round robin for web server failover" (頁面存檔備份,存於網際網路檔案館). Retrieved January 10, 2020.
- ^ What is the difference among a multivalue answer routing policy and a simple routing policy?. Amazon Web Services, Inc. August 3, 2018 [January 10, 2020]. (原始內容存檔於2023-01-15).
- ^ Liska, A.; Stowe, G. Understanding DNS. 2016: 19.Liska, A.; Stowe, G. (2016). "Understanding DNS". DNS Security. p. 19.
- ^ Pan, Jianping; Hou, Y. Thomas; Li, Bo. An overview of DNS-based server selections in content distribution networks. Computer Networks. 2003, 43 (6): 695–711. doi:10.1016/S1389-1286(03)00293-7.Pan, Jianping; Hou, Y. Thomas; Li, Bo (2003). "An overview of DNS-based server selections in content distribution networks". Computer Networks. 43 (6): 695–711. doi:10.1016/S1389-1286(03)00293-7.
- ^ RFC 6724 - Default Address Selection for Internet Protocol Version 6 (IPv6). [2022-11-02]. (原始內容存檔於2021-02-17).
- ^ getaddrinfo with round robin DNS and happy eyeballs. [2022-11-02]. (原始內容存檔於2022-12-22).
- ^ Rule 9 for IPv4 caused serious operational problems ([the Debian Linux] ftp sites failed!. [2022-11-02]. (原始內容存檔於2022-11-02).
- ^ Brisco, Thomas P. RFC 1794 - DNS Support for Load Balancing. April 1995 [24 August 2019]. (原始內容存檔於2021-03-12).Brisco, Thomas P. (April 1995). [rfc:1794 "RFC 1794 - DNS Support for Load Balancing"]. Retrieved 24 August 2019.
- ^ lbnamed (頁面存檔備份,存於網際網路檔案館), a load-balanced DNS server implemented in the Perl programming language