Networking

Akamai CDN 如何從關閉邊緣伺服器向使用者提供內容?a

  • February 12, 2020

在瀏覽了 google 上的一些資源後,了解了 Akamai CDN 邊緣伺服器的工作原理,但遇到了一些關於內部的問題。

  1. 假設我的站點 xyz.com(YYY.YY.YYY.YYY) 的靜態內容記憶體在 Akamai CDN(XXX.XX.XXX.XXX 說在西雅圖)。在某些 Akamai 界面中,我會將呼叫路由到我的源 Web 伺服器 ip,並要求 Akamai 記憶體靜態內容。
  2. 現在,每當我在瀏覽器中輸入 www.xyz.com 時(對於任何資源,無論是靜態的還是動態的),呼叫都會轉到 DNS 伺服器以解析 domain 的 IP www.xyz.com
  3. DNS 伺服器將提供已配置的 Akamai Edge 伺服器的 IP 地址(例如 XXX.XX.XXX.XXX,在第 1 點中硬編碼)。我的問題是如何確保 DNS 伺服器提供最接近使用者的邊緣伺服器?無論使用者試圖從中國還是印度訪問該網站,它是否總是提供西雅圖 IP XXX.XX.XXX.XXX?

Akamai DNS 的“魔法”決定了將客戶端發送到何處以獲取請求。

據我了解(在 IP 對等會議上與 Akamai 網路架構師討論後)Akamai 的 DNS 使用來自查詢 DNS 客戶端的最短路徑路由(通常是 BGP)來確定最近的位置並提供該 IP 地址。

DNS 協議定義了客戶端如何請求地址以及伺服器如何提供地址。就像 Web 伺服器可以根據請求的客戶端提供不同的資源一樣,可以編寫一個 DNS 伺服器也可以做同樣的事情。

Internet 路由通常在邊界網關協議 (BGP) 上工作,其中自治系統(由 AS 編號標識)交換有關哪些子網由哪個系統控制的資訊。在確定如何路由到 IP 地址時,路由器通常會選擇通過最少數量的自治系統的路由。

因此,接收對 Akamai 託管資源的 DNS 請求的 Akamai DNS 伺服器具有請求客戶端的 IP 地址。這可以在其內部數據庫中查找以確定哪些 Akamai 伺服器與該地址“最近”(根據 IP 路由),因此客戶端可以返回“最近”伺服器的地址。

進行此對話後,我從不同的子網進行了一些試驗性查找,我注意到第一次查找通常比“正常”DNS 查找花費的時間要長得多。這大概是因為系統正在查找如何路由到該地址。隨後的查找和往常一樣快,大概是因為答案被記憶體了。


額外資訊(DNS 如何工作)

當 DNS 客戶端向 DNS 伺服器請求名稱時,如果伺服器對該域具有權威性,則伺服器將提供該名稱,或者它將在其他伺服器上查找它(如果它被配置為遞歸),或者它將提供以前的記憶體的答案。全域“根”伺服器允許 DNS 伺服器定位對任何特定域具有權威性的 DNS 伺服器,以便它們可以指導遞歸查詢。

DNS 伺服器不包含 Internet 上所有地址的映射 - 這將無法維護,並且操作域的人需要能夠更改自己的 DNS 記錄。

通常,DNS 伺服器要麼是權威的,要麼是遞歸的(通常不是兩者兼而有之)。在查找具有 CNAME 記錄的名稱的地址時,客戶端需要查找 CNAME 記錄指向的 A 記錄所具有的 IP 地址。因此,如果您有指向 Akamai 邊緣伺服器的 CNAME 記錄,則需要查詢 Akamai 域,因為 Akamai 域伺服器對該域具有權威性。

當請求到達 Akamai 伺服器時,它可以查找它想要的任何資訊,以便確定要返回的 IP 地址。由於他們擁有廣泛的對等互連(BGP 連接)網路,他們將根據邊緣伺服器和 DNS 查詢來源之間的最短路徑確定哪個邊緣伺服器最適合提供數據。

如果查詢是由執行遞歸查找的 DNS 伺服器進行的,那麼它可能會記憶體答案,但由於它將來會使用相同的 IP 地址請求結果,因此通常會得到相同的答案,所以這不是問題。Akamai 可以在提供地址的響應中設置記錄應記憶體多長時間(儘管伺服器可能選擇不遵循其關於記憶體壽命的指示)。

由於大多數客戶端都有由屬於同一 AS 的 DNS 伺服器為它們解析的地址,因此對於查找地址的 DNS 伺服器和想要該地址的實際客戶端電腦,路由長度(涉及的不同 AS 的數量)是相同的。

引用自:https://serverfault.com/questions/986101