GCP的負載均衡,你需要了解一點Anycast技術(shù)

最近作者在閱讀Google云平臺的技術(shù)文檔時,在與負載均衡相關(guān)的內(nèi)容中,經(jīng)常會遇到一個概念,Anycast。那什么是Anycast?它之于負載均衡又有何作用?本文通過對一篇英文文章的翻譯和提煉來進行解釋。

當(dāng)我們在瀏覽器的地址欄里輸入www.someplace.com并按下回車,該網(wǎng)站的網(wǎng)頁通常在幾秒中會被展示出來。而在這個場景的背后,為了把我們的網(wǎng)頁請求路由到該網(wǎng)站地址以便讓我們最終能夠看到頁面的內(nèi)容,其實還發(fā)生了一系列的事情,其中的一個重要協(xié)議便是BGP協(xié)議。BGP協(xié)議保證了瀏覽器發(fā)出的請求報文經(jīng)由最佳的路由轉(zhuǎn)發(fā)到該網(wǎng)站的服務(wù)器。

在網(wǎng)絡(luò)中,有多種方法可以對目標(biāo)服務(wù)器進行尋址,而在本文中,我們重點討論其中的一種,它就是Anycast。

什么是Anycast?

在Anycast技術(shù)中,一組服務(wù)器在網(wǎng)絡(luò)中共享一個相同的IP地址。當(dāng)一個客戶端A想要訪問后臺服務(wù)時,它的請求會被路由到離A「邏輯上最近」的服務(wù)器上,這樣可以降低時延并節(jié)約帶寬,減少網(wǎng)頁加載的時間,并能夠提高可用性。值得注意的是,「邏輯上最近」并不等同于「地理上最近」,只不過在大多數(shù)情況下兩者確實是等同的。

Anycast之所以與BGP協(xié)議聯(lián)系緊密,是因為在BGP協(xié)議中,一個路由器的所有「鄰居」都知道通過該路由器所能夠到達的網(wǎng)絡(luò),以及到達這些網(wǎng)絡(luò)所需要走的距離。(譯者注:所謂的「距離」在路由器的世界中通常指「跳數(shù)」,報文每被路由器轉(zhuǎn)發(fā)一次就代表一跳)。這其中的主要原理是:路由器之間的BGP報文會將其自身攜帶的IP地址范圍信息在網(wǎng)絡(luò)中傳播開來,最終網(wǎng)絡(luò)中的所有路由器都學(xué)習(xí)到通往某一個IP地址的最短距離。

其他的地址分配方式

這里列舉一些其他常用的尋址方式,它們用于支持流量在網(wǎng)絡(luò)中的轉(zhuǎn)發(fā)

單播(Unicast Addressing)意味著一個IP地址只標(biāo)識一臺服務(wù)器的端點,在傳統(tǒng)的DNS部署中會使用這種方式。


單播

組播(MulticastAddressing)表示一個報文可以通過組播組地址被路由到一組特定的服務(wù)器端點,是一種「一對『特定多』?的映射關(guān)系,多用于流媒體的場景。


組播

廣播(Broadcast?Addressing)廣播報文使用廣播地址,從發(fā)送者被路由到所有可達的服務(wù)器端點。在連接了服務(wù)器端點的網(wǎng)段中,網(wǎng)絡(luò)會自動將報文進行復(fù)制和轉(zhuǎn)發(fā)。


廣播

DNS Anycast

在使用單播的方式時,DNS解析客戶端可以配置一個包含多個DNS域名服務(wù)器的列表。假設(shè)列表中第一臺域名服務(wù)器因某些原因掛掉,DNS解析客戶端將不會收到它對解析請求的響應(yīng),通常在等待一段時間后(與操作系統(tǒng)相關(guān),通常1到5秒),DNS解析客戶端會轉(zhuǎn)向列表中第二臺域名服務(wù)器進行解析,以此類推。但是當(dāng)DNS解析客戶端再次需要解析域名時,它并沒記住「第一臺域名服務(wù)器已經(jīng)不再正常工作」這件事情,而還是會從列表中第一臺域名服務(wù)器開始輪詢,而這顯然會使最終域名解析的時間變慢。

而配置Anycast地址的DNS解析客戶端,則可以減小這樣的解析延遲,這背后其實是路由協(xié)議的功勞。下圖中,三臺DNS域名服務(wù)器共享一個IP地址 123.10.10.10,在DNS客戶端中也配置這一個地址。


DNS Anycast

在這樣的配置中,當(dāng)三臺 Server 對解析客戶端都可達時,根據(jù)路徑最近原則,三層路由會將DNS客戶端的報文通過路由器 R1 轉(zhuǎn)發(fā)給 ServerA,。如果 ServerA 不再可達,則報文會通過路由器R2和R3被轉(zhuǎn)發(fā)給 ServerB,而且轉(zhuǎn)發(fā)給A的路由將會從路由表中被清除,以便后續(xù)的報文都不再往ServerA轉(zhuǎn)發(fā),直到ServerA恢復(fù)正常后,它的路由才會重新加入網(wǎng)絡(luò)。

舉一個生活中的例子來幫助理解,如果Kane想喝星巴克,那他可以在百度地圖上進行搜索。百度地圖會給他導(dǎo)航到離他最近的星巴克。如果剛好離他最近的星巴克倒閉了(假設(shè)百度地圖知道這件事),百度地圖會給他導(dǎo)航到當(dāng)前離他最近的其他星巴克門店。

何時使用Anycast技術(shù)?

很多網(wǎng)站訪問量,并發(fā)量不大,只有一臺服務(wù)器,這種情況下是不需要用到anycast技術(shù)的。Anycast更適合于那些訪問量和并發(fā)量很大的網(wǎng)站,有多臺服務(wù)器,分布在不同的地址位置,最典型的例子之一,我想就是谷歌,在全球不同的地方都有節(jié)點,不同地域的用戶即使訪問相同的域名,請求也會被路由到與之最近的服務(wù)器。


DNS Anycast


最后我們來總結(jié)一下Anycast技術(shù)的優(yōu)勢:

性能更優(yōu):因為流量總是被路由到就近的節(jié)點,因此時延更低

更高的可用性:通過多臺服務(wù)器做到冗余備份,即使某臺服務(wù)器掛掉,服務(wù)依然可用。

負載均衡:很顯然,處于不同位置用戶的流量根據(jù)就近原則轉(zhuǎn)發(fā)到相應(yīng)的服務(wù)器節(jié)點,這也是一種負載均衡

降低Dos攻擊的影響:Dos攻擊可以被限制在局部的服務(wù)器上,而非同時影響所有的服務(wù)。

本次的技術(shù)分享就是這樣,感謝閱讀。

英文原文鏈接:https://www.imperva.com/blog/how-anycast-works/

參考:https://www.cnblogs.com/zafu/p/9168617.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容