天天看點

微軟公有雲魅力之Traffic Manager

Websites可以支援多執行個體擴充,也就實作了負載平衡功能,此外像Azure的虛拟機服務本身所在的雲服務其實也是一個負載平衡的形式存在着,那麼在Azure當中除了這些内置的負載平衡功能之外,還單獨的推出了一個叫做Traffic Manager的服務,那麼這個traffic manager到底是幹嘛用的呢?

從微軟官方的說明來看如下:

“使用 Azure Traffic Manager 可以控制向指定的終結點(可能包括 Azure 雲服務、網站和其他終結點)配置設定使用者流量。Traffic Manager 的工作原理是将智能政策引擎應用到對 Internet 資源域名執行的域名系統 (DNS) 查詢。Azure 雲服務或網站可以在世界各地不同的資料中心内運作。”

可以見得Traffic Manager是一個基于流量導向的負載平衡類服務,那它和傳統的NLB相比較有什麼差別呢?舉例如下幾個場景來看一看:

使用者的服務同時部署在“中國北部”和“中國東部”,希望北部作為active站點來提供服務,東部則為standby。

使用者的服務同時部署在“中國北部”和“中國東部”,希望内蒙的客戶通路應用時從北部擷取資料,浙江的客戶通路應用時從東部擷取資料。

使用者的服務同時部署在“中國北部”和“中國東部”,希望無論何地的客戶通路應用時,兩地資料中心輪詢響應。

如上這三類場景我相信傳統的NLB是不太适用的,而traffic manager恰恰解決了這種需求,它的工作機制大緻如下:

首先使用者需要在Azure當中建立一個Traffic Manager域名(唯一有效),然後通過營運商做别名綁定(CNAME),之後客戶對原有域名的DNS請求将會轉向Traffic Manager域名,接着根據Traffic Manger具體的配置政策來進行處理,是基于性能,還是基于輪詢,亦或是故障轉移:

<a href="http://s3.51cto.com/wyfs02/M00/4D/3A/wKioL1RN7dOyQA5zAAGkfpb-r0g230.jpg" target="_blank"></a>

####################################################################

Traffic Manager屬于網絡服務下的一個分支,登入門戶之後可以快速建立一個Traffic Manager服務,輸入一個唯一有效的DNS域名以及負載平衡的方式(本示例使用“性能”方法,建立之後可以修改),如下圖:

<a href="http://s3.51cto.com/wyfs02/M00/4D/3A/wKioL1RN5-uAZCbEAAIlVIP-mZ8922.jpg" target="_blank"></a>

我建立了一個叫“xieruitraffic01”的域名,進入之後可以點選配置,在配置頁中能看到三類負載平衡方法:

<a href="http://s3.51cto.com/wyfs02/M00/4D/39/wKiom1RN55jg1lIgAAMVswL9TRU141.jpg" target="_blank"></a>

除此之外,還可以選擇針對哪種協定、端口、或者相對路徑來進行負載平衡處理:

<a href="http://s3.51cto.com/wyfs02/M01/4D/3A/wKioL1RN5-2D1n9qAAJSJawihhM211.jpg" target="_blank"></a>

在配置檔案配置好之後,就該添加終結點了,所謂終結點就是你想要實作負載平衡的資源,如下圖:

<a href="http://s3.51cto.com/wyfs02/M01/4D/39/wKiom1RN55ny5r6IAAH2LwXWoWM100.jpg" target="_blank"></a>

服務的類型有多種,website,cloudservice等等,以下圖website為例,我将上次博文中建立的兩個站點作為端點進行添加,而且xieruitest02是在東部,xieruitest01是在北部,在下圖中還可以看到有一個警示“隻有标準模式的website才能夠支援traffic manager,此外每個區域隻對應一個website”

<a href="http://s3.51cto.com/wyfs02/M02/4D/3A/wKioL1RN5--ROMMyAAJ38d_REhE906.jpg" target="_blank"></a>

添加完成之後,兩個終結點進入到了聯機狀态,如下圖:

<a href="http://s3.51cto.com/wyfs02/M01/4D/39/wKiom1RN55vhWe9IAAIbKLYR9hI434.jpg" target="_blank"></a>

在traffic manager首頁中可以看到它的URL,之類可以複制下來用作測試通路:

<a href="http://s3.51cto.com/wyfs02/M02/4D/3A/wKioL1RN5_DwvwmBAAIreH9Q5sg799.jpg" target="_blank"></a>

此時檢視作為“終結點”的website,域名屬性下已經自動的添加了traffic manager的DNS連結:

<a href="http://s3.51cto.com/wyfs02/M02/4D/39/wKiom1RN55zywinOAAJVHuOFUf0274.jpg" target="_blank"></a>

以我的個人電腦為例,我的實體位置是在北京,進行nslookup查詢traffic manager的域名,多次傳回結果一樣,都是61.50.248.117這個IP,如下圖:

<a href="http://s3.51cto.com/wyfs02/M00/4D/3A/wKioL1RN5_DTjYD3AAONuF6mPk0783.jpg" target="_blank"></a>

查詢這個IP屬于北京市的一個位址,如下圖:

<a href="http://s3.51cto.com/wyfs02/M00/4D/39/wKiom1RN553jLEaWAAURziou4Ro516.jpg" target="_blank"></a>

為了更進一步驗證traffic manager的有效性,我找一台位于中國北部的虛拟機進行測試,如下圖:

<a href="http://s3.51cto.com/wyfs02/M01/4D/39/wKiom1RN552hb9qZAAJ2TSN8wDw492.jpg" target="_blank"></a>

用該虛拟機通路xieruitraffic01.trafficmanager.cn,傳回的是我唯一中國北部的website,也就是xieruitest01這個站點(上篇博文中所建立的,見篇首連結)

<a href="http://s3.51cto.com/wyfs02/M02/4D/3A/wKioL1RN5_Sig2k-AATiaWQdu1o315.jpg" target="_blank"></a>

這時候我再建立一台中國東部的VM來測試一下,如下圖:

<a href="http://s3.51cto.com/wyfs02/M02/4D/39/wKiom1RN56CzNcK2AAJbN4aNXWw403.jpg" target="_blank"></a>

建立完成,登入這台位于東部的虛拟機:

<a href="http://s3.51cto.com/wyfs02/M00/4D/3A/wKioL1RN5_WAEaexAAJBEotb9nQ623.jpg" target="_blank"></a>

同樣通路xieruitraffic01.trafficmanager.cn連結,傳回的卻是位于中國東部的website,也就是xieruitest02這個站點,也是在上篇博文中部署的node.js網站,如下圖:

<a href="http://s3.51cto.com/wyfs02/M00/4D/39/wKiom1RN56GC_qZIAAPZNzKHyvk547.jpg" target="_blank"></a>

######################################################################

從上述的實踐來看,traffic manger的效果達到了預期,那麼以性能方法為例,它的運作原理是怎樣的呢,見下圖:

<a href="http://s3.51cto.com/wyfs02/M02/4D/3A/wKiom1RN9vfzOg_vAAFLgbuSMmY048.jpg" target="_blank"></a>

簡單來說Azure維護着一個性能表,記錄着不同資料中心與終結點之間的響應時間,當接收到使用者查詢請求時,選擇一個最優條目傳回給DNS并告知用戶端以此查詢結果進行解析。

本文轉自maomaostyle 51CTO部落格,原文連結:http://blog.51cto.com/maomaostyle/1568489,如需轉載請自行聯系原作者

繼續閱讀