任播與單播:在每種情況下選擇哪個更好

很多人可能都聽過 Anycast。 在這種網路尋址和路由方法中,單一 IP 位址被指派給網路上的多個伺服器。 這些伺服器甚至可以位於彼此遠端的資料中心。 Anycast的想法是,根據請求來源的位置,將資料傳送到最近的(根據網路拓撲,更準確地說是BGP路由協定)伺服器。 這樣,您可以減少網路躍點數和延遲。

本質上,相同的路由是從世界各地的多個資料中心發布的。 這樣,客戶端就會根據BGP路由被傳送到「最佳」和「最近」的資料中心。 為什麼選播? 為什麼要使用任播而不是單播?

任播與單播:在每種情況下選擇哪個更好
單播確實適合具有一台 Web 伺服器和中等流量的網站。 然而,如果一項服務擁有數百萬訂閱者,它通常會使用許多 Web 伺服器,每個伺服器都有相同的 IP 位址。 這些伺服器在地理上分佈,以最佳地服務請求。

在這種情況下,任播將提高效能(流量以最小的延遲發送給用戶),確保服務的可靠性(感謝備份伺服器)和負載平衡- 路由到多個伺服器將有效地在它們之間分配負載,從而提高速度網站的。

營運商為客戶提供基於Anycast和DNS的各種類型的負載平衡。 用戶端可以根據網站的地理位置指定將請求傳送到的 IP 位址。 這使得可以更靈活地分配用戶請求。

假設您需要在多個網站之間分配負載(使用者),例如,每天有 100 個請求的線上商店或熱門部落格。 若要限制使用者造訪特定網站的區域,您可以使用地理社群選項。 它允許您限制運營商公佈路線的區域。

任播與單播:在每種情況下選擇哪個更好

任播與單播:在每種情況下選擇哪個更好
任播和單播:差異

任播通常用於 DNS(網域名稱系統)和 CDN(內容分發網路)等應用程序,支援提高網路效能的路由決策。 內容交付網路使用 Anycast,因為它們處理大量流量,而 Anycast 在這種情況下提供了許多優勢(更多內容請見下文)。 在 DNS 中,任播可以顯著提高服務的可靠性和容錯水準。

任播與單播:在每種情況下選擇哪個更好
在Anycast IP中,當使用BGP時,有多個路由到特定主機。 這些實際上是多個資料中心中主機的副本,用於建立較低延遲的連線。

因此,在 Anycast 網路中,相同的 IP 位址從不同的地方發佈出去,網路根據路由的「成本」來決定將使用者的請求路由到哪裡。 例如,BGP經常被用來決定資料傳輸的最短路由。 當使用者傳送 Anycast 請求時,BGP 會確定網路上可用 Anycast 伺服器的最佳路由。

選播的好處

減少延遲
具有任播功能的系統可以減少處理使用者請求時的延遲,因為它們允許您從最近的伺服器接收資料。 也就是說,用戶將始終連接到「最近」(從路由協定的角度來看)的 DNS 伺服器。 因此,任播透過縮短客戶端和伺服器之間的網路距離來減少互動時間。 這不僅可以減少延遲,還可以提供負載平衡。

速度

由於流量被路由到最近的節點,並且客戶端和節點之間的延遲減少,因此無論客戶端從何處請求訊息,傳輸速度都會得到最佳化。

提高穩定性和容錯能力

如果世界各地的多台伺服器使用相同的IP,那麼如果其中一台伺服器發生故障或斷開連接,流量將被重定向到最近的伺服器。 因此,任播使服務更具彈性,並提供更好的網路存取/延遲/速度。 

因此,透過讓多個伺服器持續可供使用者使用,例如 Anycast,可以提高 DNS 穩定性。 如果某個節點發生故障,使用者請求將被重新導向到另一個 DNS 伺服器,無需任何手動幹預或重新配置。 任播只需刪除有問題網站的路由即可提供到其他網站的幾乎透明的切換。 

負載平衡

在任播中,網路流量分佈在不同的伺服器上。 也就是說,它充當負載平衡器,防止任何單一伺服器接收大量流量。 例如,當存在多個網路節點距請求來源的地理距離相同時,可以使用負載平衡。 在這種情況下,負載分佈在節點之間。

減少 DoS 攻擊的影響 

Anycast 的另一個特點是它的 DDoS 抵抗能力。 DDoS 攻擊不太可能摧毀 Anycast 系統,因為它們必須透過大量請求來壓垮此類網路中的所有伺服器。 

DDoS 攻擊通常使用殭屍網絡,殭屍網路會產生大量流量,導致受攻擊伺服器過載。 在這種情況下使用任播的優點是每個伺服器都能夠「吸收」部分攻擊,從而減少該特定伺服器上的負載。 拒絕服務攻擊很可能僅限於伺服器,不會影響整個服務。

高水準可擴展性

任播系統非常適合大流量的服務。 如果使用任播的服務需要新伺服器來處理增加的流量,則可以將新伺服器新增至網路來處理它。 它們可以放置在新的或現有的站點上。 

如果某個特定位置的流量大幅增加,那麼新增伺服器將有助於平衡該網站的負載。 在新網站新增伺服器將有助於透過為某些使用者建立新的最短路徑來減少等待時間。 當網路上有新伺服器可用時,這兩種方法也有助於提高服務的穩定性。 這樣,如果一台伺服器過載,您可以簡單地將另一台伺服器部署在允許其接受過載伺服器的部分請求的位置。 這不需要客戶端進行任何配置。 

只有這樣,在伺服器只有幾個10或25Gbps連接埠的情況下,才能服務太比特的流量和大量的使用者。 具有一個 IP 位址的 100 台主機將能夠處理太比特量的流量。

輕鬆的組態管理

如上所述,Anycast 的一個有趣用途是 DNS。 您可以在網路節點上放置多個不同的 DNS 伺服器,但使用一個 DNS 位址。 根據來源所在的位置,請求將路由到最近的節點。 這在 DNS 伺服器發生故障時提供了一定的流量平衡和冗餘。 這樣,就可以將一個 DNS 伺服器的設定傳播到所有節點,而不是根據其所在位置配置不同的 DNS 伺服器。

選播網路不僅可以根據距離進行配置,還可以根據伺服器是否存在、已建立連線的數量等參數來路由請求。 或響應時間。

客戶端不需要特殊的伺服器、網路或特殊元件即可使用任播技術。 但任播也有其缺點。 據信,其實施是一項複雜的任務,需要額外的設備、可靠的提供者和適當的流量路由。

遠離純粹的泉源和美麗

儘管任播根據最少的跳數路由用戶,但這並不一定意味著最低的延遲。 延遲是一個更複雜的指標,因為一次轉換的延遲可能比十次轉換的延遲更高。

任播與單播:在每種情況下選擇哪個更好
範例:洲際通訊可能涉及延遲非常高的單跳。

任播主要用於基於 UDP 的服務,例如 DNS。 使用者請求根據 BGP 路由路由到「最佳」和「最近」的資料中心。

任播與單播:在每種情況下選擇哪個更好
範例:任播 DNS IP 位址為 123.10.10.10 的 DNS 用戶端工作站對使用相同任播 IP 位址部署的三個 DNS 名稱伺服器中最近的一個執行 DNS 解析。 如果路由器 R1 或伺服器 A 發生故障,DNS 用戶端封包將透過路由器 R2 和 R3 自動轉送到下一個最近的 DNS 伺服器。 此外,到我們的伺服器 A 的路由將從路由表中刪除,從而防止進一步使用該名稱伺服器。

部署場景

有兩種通用方案用於確定使用者連接到哪個伺服器:

  • 選播網路層。 將用戶連接到最近的伺服器。 從用戶到伺服器的網路路徑在這裡很重要。
  • 應用層選播。 該方案有更多的計算指標,包括伺服器可用性、回應時間、連接數等。這取決於提供網路統計資料的外部監視器。

基於Anycast的CDN

現在讓我們回到在內容交付網路中使用任播。 任播無疑是一個有趣的網路概念,並且正在獲得越來越多的下一代 CDN 供應商的認可。

CDN 是一種分散式伺服器網絡,以高可用性和低延遲向最終用戶交付內容。 如今,內容交付網路作為許多線上媒體服務的支柱發揮著重要作用,而消費者越來越無法容忍緩慢的下載速度。 視訊和語音應用程式對網路抖動和延遲特別敏感。

CDN 將所有伺服器連接到一個網路中,並確保更快地載入內容。 有時可以減少使用者的等待時間5-6秒。 CDN 的目的是透過從最接近最終用戶的伺服器提供內容來優化交付。 這與 Anycast 非常相似,其中根據最終用戶的位置選擇最近的伺服器。 看起來每個 CDN 服務提供者都會預設使用 Anycast,但實際上並非如此。

使用 HTTP/TCP 等協定的應用程式依賴正在建立的連線。 如果選擇新的 Anycast 節點(例如由於伺服器故障),服務可能會中斷。 這就是為什麼 Anycast 之前被推薦用於無連線服務(例如 UDP 和 DNS)的原因。 然而,Anycast 也適用於連接導向的協定;例如,TCP 在 Anycast 模式下也能很好地工作。

一些 CDN 供應商使用基於 Anycast 的路由,其他供應商更喜歡基於 DNS 的路由:根據用戶的 DNS 伺服器所在位置選擇最近的伺服器。

混合和多資料中心基礎設施是 Anycast 使用的另一個例子。 從提供者收到的負載平衡 IP 位址可讓您在提供者資料中心的不同用戶端服務的 IP 位址之間分配負載。 由於任意設備技術,它可以在大流量下提供更好的效能、容錯能力,並有助於在處理大量使用者時優化回應時間。

在混合多資料中心基礎架構中,您可以跨伺服器甚至專用伺服器上的虛擬機器分配流量。

因此,基礎設施建設有大量的技術解決方案可供選擇。 您也可以跨多個資料中心的 IP 位址配置負載平衡,以群組中的任何裝置為目標,以最佳化網站效能。

您可以根據自己的規則分配流量,定義每個資料中心中每個分散式伺服器的「權重」。 當存在分散式伺服器園區且服務效能參差不齊時,此配置特別有用。 這將允許更頻繁地分發流量以提高伺服器效能。

若要使用 ping 指令建立監控系統,可以設定探測器。 這使得管理員可以定義自己的監控程序,並更清楚地了解基礎架構中每個元件的狀態。 透過這種方式,可以定義可訪問性標準。

建立混合基礎設施是可能的:有時將後台辦公室留在企業網路中,並將介面部分外包給提供者會很方便。

可以新增 SSL 憑證以實現負載平衡、傳輸資料加密以及網站訪客和企業基礎設施之間的通訊安全。 如果資料中心之間進行負載平衡,也可以使用SSL。

可從您的提供者取得具有位址負載平衡功能的任播服務。 此功能將有助於改善用戶根據位置與應用程式互動的方式。 只要宣布資料中心有哪些服務可用,流量就會被重新導向到最近的基礎架構。 如果有專用伺服器(例如在法國或北美),則用戶端將被導向到網路上最近的伺服器。

使用任播的選項之一是營運商存取點 (PoP) 的最佳選擇。 讓我們給 例子。 LinkedIn(在俄羅斯被封鎖)不僅致力於提高其產品(行動和網路應用程式)的效能和速度,而且還致力於改善其網路基礎設施以實現更快的內容交付。 對於這種動態內容交付,LinkedIn 積極使用 PoP(存在點)。 任播用於將使用者定向到最近的 PoP。

原因是,對於 Unycast,每個 LinkedIn PoP 都有一個唯一的 IP 位址。 然後,使用 DNS 根據使用者的地理位置將使用者分配到 PoP。 問題是,在使用 DNS 時,大約 30% 的美國用戶被重定向到次優的 PoP。 隨著 Anycast 的分階段實施,次優 PoP 分配從 31% 下降到 10%。

任播與單播:在每種情況下選擇哪個更好
試點測試的結果如圖所示,其中 Y 軸是最佳 PoP 分配的百分比。 隨著 Anycast 的發展,美國許多州都看到了達到最佳 PoP 的流量百分比有所提高。

任播網路監控

任播網路理論上很簡單:多個實體伺服器被指派相同的 IP 位址,BGP 使用該位址來決定路由。 但Anycast平台的實現和設計很複雜,容錯Anycast網路尤其因此而聞名。 更具挑戰性的是有效監控任播網路以快速識別和隔離故障。

如果服務使用第三方 CDN 提供者來提供其內容,那麼監控和驗證網路效能對他們來說非常重要。 基於任播的 CDN 監控著重於測量端對端延遲和倒數第二跳效能,以了解哪個資料中心正在提供內容。 分析 HTTP 伺服器標頭是確定資料來源的另一種方法。

任播與單播:在每種情況下選擇哪個更好
範例:指示 CDN 伺服器位置的 HTTP 回應標頭。

例如,CloudFlare 在 HTTP 回應訊息中使用自己的 CF-Ray 標頭,其中包括向其發出請求的資料中心的指示。 對於 Zendesk,西雅圖地區的 CF-Ray 標頭是 CF-RAY:2a21675e65fd2a3d-SEA,阿姆斯特丹地區的 CF-RAY 標頭是 CF-RAY:2a216896b93a0c71-AMS。 您也可以使用 HTTP 回應中的 HTTP-X 標頭來確定內容所在的位置。

其他尋址方法

還有其他尋址方法可將使用者請求路由到特定網路端點:

單播

如今大多數網路都使用這種方法。 Unicast-單播傳輸,IP位址僅與網路上的一個特定節點相關聯。 這稱為一對一匹配。 

組播

群播使用一對多或多對多關係。 多播允許將來自發送方的請求同時傳送到不同的選取端點。 這使客戶端能夠同時從多個主機下載區塊檔案(這對於串流音訊或視訊很有用)。 群播經常與任播混淆,但主要區別在於任播將發送方定向到特定節點,即使有多個節點可用。

廣播

來自單一發送方的資料封包被轉送到與廣播位址關聯的所有端點。 網路會自動複製資料報,以便能夠到達廣播中的所有接收者(通常在同一子網路上)。

地理廣播

Geocast 與組播有些相似:來自發送方的請求同時傳送到多個端點。 但不同的是,收件人是根據其地理位置來決定的。 這是移動自組織網路的某些路由協定使用的一種特殊形式的多播。

地理路由器計算其服務區域並對其進行近似估計。 地理路由器,交換服務區域,建構路由表。 地理路由器系統具有層次結構。

任播與單播:在每種情況下選擇哪個更好
任播與單播:在每種情況下選擇哪個更好
任播與單播:在每種情況下選擇哪個更好
單播、組播和廣播。

使用 Anycast 技術可以提高 DNS 的可靠性、容錯性和安全性等級。 使用該技術,營運商可以為客戶提供基於 DNS 的各種類型的負載平衡服務。 在控制台中,您可以根據地理位置指定將請求傳送到的 IP 位址。 這將使客戶有機會更靈活地分配用戶請求。

一些營運商在每個存取點 (POP) 實施路由監控功能:系統自動分析存取點的最短本機和全域路由,並透過最低延遲的地理位置將其路由至零停機時間。

Anycast是目前建置高負載DNS服務最穩定可靠的解決方案,高負載DNS服務對穩定性和可靠性要求很高。

.ru 網域支援 35 個 Anycast DNS 伺服器,分為 20 個節點,分佈在五個 Anycast 雲端。 本案採用了基於地理特徵的建設原則,即地理廣播。 在放置 DNS 節點時,預計它們將被移動到地理上分散的位置,靠近最活躍的用戶、節點所在點的俄羅斯提供者的最大集中度、以及可用容量的可用性和易於使用的位置。與網站的互動。

如何搭建CDN?

CDN 是一個伺服器網絡,可加快向使用者交付內容的速度。 內容傳遞網絡 將所有伺服器整合到一個網路中,確保更快的內容載入。 伺服器到用戶的距離對載入速度起著重要作用。

CDN 可讓您使用最接近目標受眾的伺服器。 這減少了等待時間,並有助於加快所有訪客加載網站內容的速度,這對於具有大型檔案或多媒體服務的網站尤其重要。 CDN 的典型應用是電子商務和娛樂。

在 CDN 基礎架構中建立的附加伺服器網路盡可能靠近用戶,有助於更穩定、更快速的資料傳輸。 根據統計,使用CDN的站點造訪時延比沒有CDN的站點降低了70%以上。

使用 DNS 建立 CDN? 使用 Anycast 自己的解決方案設定 CDN 可能是一個相當昂貴的項目,但還有更便宜的選擇。 例如,您可以使用 GeoDNS 和具有唯一 IP 位址的常規伺服器。 使用 GeoDNS 服務,您可以建立具有地理定位功能的 CDN,其中根據訪客的實際位置而不是 DNS 解析器的位置做出決策。 您可以將 DNS 區域設定為向美國訪客顯示美國伺服器 IP 位址,但歐洲訪客將看到歐洲 IP 位址。

使用 GeoDNS,您可以根據使用者的 IP 位址傳回不同的 DNS 回應。 為此,DNS 伺服器被配置為根據請求中的來源 IP 位址傳回不同的 IP 位址。 通常,GeoIP 資料庫用於確定發出請求的區域。 使用 DNS 進行地理定位可讓您從附近的網站向使用者發送內容。

GeoDNS 決定發送 DNS 請求的用戶端的 IP 位址,或處理用戶端請求時所使用的提供者的遞歸 DNS 伺服器的 IP 位址。 國家由客戶的IP和GeoIP資料庫決定。 然後客戶端取得最近的CDN伺服器的IP位址。 您可以閱讀有關設定 GeoDNS 的更多信息 這裡.

任播還是 GeoDNS?

雖然任播是在全球範圍內提供內容的好方法,但它缺乏特異性。 這就是 GeoDNS 的用武之地。 此服務可讓您建立規則,根據使用者的位置將使用者傳送到唯一的端點。

任播與單播:在每種情況下選擇哪個更好
範例:來自歐洲的使用者被導向到不同的端點。

您也可以透過丟棄所有請求來拒絕對網域的存取。 尤其是,這是一種切斷入侵者的快速方法。

GeoDNS 提供比 Anycast 更準確的答案。 如果在 Anycast 的情況下,最短路由是由跳數決定的,那麼在 GeoDNS 中,最終使用者的路由取決於他們的實體位置。 這可以減少創建精細路由規則時的延遲並提高準確性。

導覽至某個網域時,瀏覽器會聯絡最近的 DNS 伺服器,該伺服器會根據網域的不同發出一個 IP 位址來載入網站。 假設某線上商店在美國和歐洲很受歡迎,但其 DNS 伺服器僅在歐洲可用。 然後,想要使用該商店服務的美國用戶將被迫向最近的伺服器發送請求,由於距離很遠,他們將不得不等待很長時間才能回應——網站加載速度不會很快。

當 GeoDNS 伺服器位於美國時,使用者已經可以存取它。 回應會很快,這會影響網站的載入速度。

在美國現有 DNS 伺服器的情況下,當來自美國的使用者導航到給定網域時,他將聯繫最近的可提供所需 IP 的伺服器。 用戶將被定向到包含該網站內容的伺服器,但由於包含該內容的伺服器距離較遠,因此他不會很快收到該內容。

如果您在美國託管具有快取資料的 CDN 伺服器,則載入後用戶端瀏覽器將向最近的 DNS 伺服器發送請求,該伺服器將發送回所需的 IP 位址。 收到IP的瀏覽器聯絡最近的CDN伺服器和主伺服器,CDN伺服器將快取的內容提供給瀏覽器。 在載入快取內容時,將從主伺服器接收載入完整網站時缺少的檔案。 結果,網站載入時間減少,因為從主伺服器發送的檔案少得多。

確定特定 IP 位址的確切位置並不總是一件容易的事:有很多因素在起作用,並且一系列 IP 位址的所有者可能決定在世界的另一端對其進行廣告(然後您將不得不等待資料庫更新以獲得正確的位置)。 有時,VPS 提供者會將據稱位於美國的地址分配給新加坡的 VPS。

與使用任播位址不同,分發是在名稱解析期間完成的,而不是在連接到快取伺服器時完成的。 如果遞迴伺服器不支援 EDNS 客戶端子網,則使用該遞迴伺服器的位置,而不是連接到快取伺服器的使用者。

DNS 中的客戶端子網路是 DNS (RFC7871) 的擴展,它定義了遞歸 DNS 伺服器如何將用戶端資訊傳送到 DNS 伺服器,特別是 GeoDNS 伺服器可以用來更準確地確定用戶端位置的網路資訊。

大多數人使用其 ISP 的 DNS 伺服器或地理位置靠近他們的 DNS 伺服器,但如果美國某人出於某種原因決定使用位於澳洲的 DNS 解析器,他們最終可能會得到最接近澳洲的 IP 伺服器位址。

如果您想使用 GeoDNS,了解這些功能很重要,因為在某些情況下它會增加快取伺服器和用戶端之間的距離。

摘要:如果您想將多個 VPS 組合成一個 CDN,那麼最好的部署選項是使用開箱即用且具有 GeoDNS + Anycast 功能的 DNS 伺服器套件。

任播與單播:在每種情況下選擇哪個更好

來源: www.habr.com

添加評論