Anycast over IPv4
Anycast的實現方式一般是在伺服器上起相同地址的環回口,透過等價路由的方式來實現,問題來了:
1。對網元需要怎樣的需求?
2。路由協議上是否只是簡單地宣告?
3。對不同協議(ospf,bgp)是否有差別?
4。路由收斂對服務的影響不吝賜教?
泛播技術
在以前的文章也有介紹,有興趣的讀者可以前去閱讀。
什麼是泛播Anycast?
先舉一個生活中的例子,最早某大型超市開在古北水城路上,只此一家,做為亞洲年銷售額第一的超市,常常被擠的水洩不通,連浦東的人也慕名遠道而來。沒多久時間,某大型超市就在全市各個區開了十多家,顧客通常去最近的一家,這樣客戶分流,就沒有那麼擁擠,使用者滿意度提高,銷售額也大幅增長。但如果附近的門店關門歇業,顧客則需要到稍遠的門店購物。
泛播也是採用以上的思路,將
相同的IP地址配置在不同地理位置的伺服器上
,每臺伺服器提供相同的服務,甚至資料都是同步的,伺服器服務範圍為以自己為原點,半徑在幾十到幾千公里不等的輻射圈,使用者
則依據路由表最近原則,選擇最靠近自己的伺服器來服務
,一旦附近的伺服器罷工,客戶的訪問流量會切換到稍遠一些的伺服器。
泛播,我們每天都在使用,但很多人沒有意識到,比如DNS域名解析,全球13個根域名伺服器幾乎都使用泛播,在各個大洲同時部署相同IP的伺服器,各個洲的使用者會自動選擇自己洲的伺服器,距離近,訪問延遲最小,使用者體驗會好得多。
但如果一個洲只有一臺伺服器,一旦掛了,會切換到其它洲的伺服器,如果希望切換永不發生,則需要在一個場點部署多臺伺服器,組成一個Cluster,不光可以負載均衡,還可以冗餘備份。
如果泛播IP面向全球使用者,IP地址需要透過IGP/BGP、或直接BGP通告出去,最終都會以一條BGP路由呈現在路由表裡,如果一個運營商泛播伺服器只給本運營商提供服務,則需要使用
BGP No_Export
屬性。
如果泛播面向企業網內使用者,使用IGP通告,使用者則認為Cost值小的,距離自己最近,所以需要把跨越遙遠距離(不同城市)的WAN鏈路Cost值修改的很巨大,比如1000,使得使用者會優先選擇相同城市的泛播伺服器。
如何防止流量黑洞?
一直沒有談一個問題,假定一個場點只有一臺泛播伺服器,突然崩潰了,而路由協議沒有意識到它掛了,依然把路由廣播出去,那附近的使用者依然會選擇它來服務,於是流量全部被丟
(流量黑洞)
,這不是我們希望看到的,最好伺服器上執行IGP/BGP,一旦掛了,其它
路由器能很快檢測到超時,然後撤銷路由通告
,附近的使用者就不會再訪問它。
但以上只能檢測到
鏈路失效(Down)
、伺服器宕機,但
無法檢測到服務程序停止工作
,所以最好還能有一種監控程序健康工作的機制,一旦程序停止工作,則停止泛播IP的通告。
環回口繫結泛播IP最大的好處
只要伺服器處於執行狀態,這個環回口就是UP狀態,如果有多個物理介面可以網路,則任何一個介面Down,都不妨礙泛播IP的可達,此外環回口可以配置/32位掩碼,不會有任何的浪費。
路由收斂對泛播的影響
至於路由收斂對泛播的影響,泛播IP與其它IP沒有本質區別,所以路由收斂期間可能會引起訪問中斷,一旦路由可達,訪問立馬恢復。
以上基本回答了題主的問題,至於泛播對網元的要求,泛播IP僅僅指把普通的IP配置在多個地方,所以它還是IP,對網元沒有特殊要求。
泛播IP不適應的場景
泛播適合DNS域名解析、線上影片CDN、入口網站,但卻不適合
Long-Lived TCP-Based 應用程式
,由於TCP狀態資訊不在泛播伺服器之間同步,一旦切換到其它伺服器,則連線狀態全部丟失。