傳統的虛擬主機及機房管理,在遇到了不同地區、國家的網站服務上,必須要就近選擇當地的機房、或是在不同的國家中建置機器以便提供快速的服務
Azure上的WebApp也會有相同的問題,所以可以在WebApp建立時選擇不同的地區與國家。可是當網站是使用同一個網域名稱時,又該如何導流到離使用者最近的WebApp?
流量管理員設定檔(Traffic Manager profile)提供了這樣的一個服務,當然,也可以透過流量管理員設定檔,達成WebApp負載平衡的功效
要開始使用流量管理員設定檔之前,要先瞭解一下它的功能與架構。
簡單來說,可以將這個服務視為是一個簡單的負載平衡,也可以把它視為是一個針對使用者所在地區進行DNS解析後,找出最短路徑並進行導流到最近的WebApp的功能
其架構圖如下所示圖片來源:流量管理員概觀
所以,可以知道的是,將流量管理員設定檔作為服務的一個入口,再透過它將流量分別導入到不同的位置,以達到真正分流的效果
要完成流量管理員設定很簡單,照著下面的步驟進行就可以了
1.首先,我們先在Azure上建立三個不同的WebApp,分別位在東亞、美國東部及美國西部
2.佈署一個簡單的網站到這三個WebApp中,這三個WebApp上只會顯示目前網頁所在區域的文字,如下圖所示這樣一來,我們要模擬的環境就已經準備好了
3.在Azure Portal中,新增一個新的服務,流量管理員設定檔(Traffic Manager profile)
4.建立流量管理員設定檔時,名稱將會作為這個流量管理的入口,所以會跟domain有關係,在這裡我先給他一個名稱,TrafficWebApp.trafficmanager.net。路由方法有分很多種
[效能]的方法會依據使用者端DNS解析的結果,找出離使用者最近的WebApp
[優先順序]則是可以手動定義流入的WebApp的排序。
在這裡我就先選擇效能這個路由方法。
5.建立完成後,先進入到流量管理員設定的[端點]
6.在端點的設定中,點選新增,並在新增端點的頁面中,將剛剛建立完成的三個WebApp新增到端點的清單之中最後可以得到這樣的結果,三個WebApp都已經新增到端點的清單中,且狀態都成為[線上]
7.這時,我們只要打開流量管理員設定的網址,流量管理員就會依據所在地區,找出離使用者最近的WebApp,並讓使用者直接連入到該WebApp我目前的所在區域是台灣,所以會連到East Asia的站台沒錯,透過nslookup指令的解析,也會解析出eastasiatrafficweb.azurewebsites.net的網址
8.接下來我在美國中部開了一台虛擬機,並打開了流量管理員設定的網址,可以看到,在美國中部的虛擬機器,連到了美國西部的WebApp,DNS解析出來的結果就跟我本機的結果不一樣,代表流量管理員設定有確實的發揮了它的作用
前面還有提到,流量管理員設定,除了可以作為不同地區及國家進行導流外,還可以手動設定WebApp的優先順序,要設定優先順序的功能也是很簡單的
1.進入到流量管理員設定檔中,點選[組態],並在組態頁面中,將[路由方法]改變為[優先順序]
2.此時再回到[端點]的畫面中,可以看到端點上出現了優先順序的設定值,當然點進去也可以進行修改
3.接下來,我將美國東部的優先權設定為1,東亞為2,而美國西部為3設定完成後,我再重新連上流量管理員設定的網址,可以看到開啟的網頁及nslookup解析出來的結果,都會導入到美國東部了,這代表流量管理員設定有確實的將優先權調整成為美國東部為優先
4.如果有需要針對某個指定的domain,可以連入到流量管理員設定的話,也只要在DNS中增加一個CNAME即可。在這裡,我加了一個自訂的網域名稱,traffic.maduka.idv.tw,並將CNAME指定到流量管理員設定的網域中
5.在WebApp上,加入自訂的網域名稱。從新增主機名稱的清單中可以發現,當我們設定完成流量管理員設定檔時,這個WebApp就已經自動加入流量管理員設定的網域了。
6.在瀏覽器上打開指定的網域,可以發現有連到優先順序為1的WebApp,而nslookup解析出來的結果也是一樣的
透過流量管理員設定檔的處理,可以帶來不同區域之間以及不同站台之間分流的管理,可以有效的降低網站的負載量並提高不同區域間網站資料傳輸與反應的速度。當然透過流量管理員設定檔也可以進行巢狀的設定,也就是先透過最上層的流量管理員設定,先將流量導入到不同區的流量管理員中,再針對該區域的WebApp服務進行權重的分流,其架構可以參考下面這張圖圖片來源:巢狀流量管理員設定檔
分流的效果,若是使用實體設備就可以輕易的達到,但是在PaaS的服務上較為人詬病的就是無法像實體設備一樣,有效的將流量進行分流。不過在Azure上透過流量管理員設定檔,就可以輕鬆的完成不同區域、國家及指定站台優先的導流功能了。