利用Microsoft Azure Traffic Manager保證業務的可用性

  最近攜程事件致使攜程網站和APP中止服務長達將近9個小時。支付寶由於光纜被挖斷致使部分用戶服務不可用,藝龍遭到***致使網站崩潰,等等。企業中的業務安全和可用性又浮現了出來,回過頭來看,有哪些現有的技術可以避免此類情況,這篇文檔咱們先聊一聊如何利用Microsoft Azure Traffic Manager讓你的應用保持高可用狀態shell

  先來看下Microsoft Azure Traffic Manager 究竟是什麼東東。安全

  使用 Microsoft Azure Traffic Manager 能夠控制向指定的終結點(可能包括 Azure 雲服務、網站和其餘終結點)分配用戶流量。Traffic Manager 的工做原理是將智能策略引擎應用到對 Internet 資源域名執行的域名系統 (DNS) 查詢。Azure 雲服務或網站能夠在世界各地不一樣的數據中心內運行。bash

說的簡單易懂點Traffic Manager就是一個智能的DNS解析。架構

  能幫助咱們作什麼?app

  • 提升關鍵應用程序的可用性,當你的應用程序的某個節點出問題的時候,Traffic Manager能夠經過智能的監視你的終結點(雲服務、網站和其餘角色)的服務狀態,而後把流量遷移到正常的終結點。ide

  • 提升應用程序的響應性,當你的應用程序客戶遍及全國甚至是世界各地時,如何可以把流量引到離他們最近的數據中心,已達到最快的響應速度。這就是Traffic Manager須要作的事情。性能

  • 大型複雜的流量分配,若是你有像淘寶、京東等這類網站時,你須要複雜的流量分配規則來知足用戶的快速訪問需求,使用嵌套的 Traffic Manager 配置文件(在其中的一個 Traffic Manager 配置文件能夠將另外一個 Traffic Manager 配置文件做爲終結點),能夠建立配置來優化更大、更復雜部署的性能和分佈。測試

clip_p_w_picpath002

工做原理是啥?優化

clip_p_w_picpath004

我來根據這張圖來解釋下:網站

1. 首先客戶端須要知道IP地址才能去訪問應用,而後就發送域名解析請求到公網域名www.contoso.com(就是在公網域名服務商註冊的域名)。

2. 請求發到公網DNS上進行解析,而後公網DNS根據你的配置的CNAME記錄把請求發給Traffic Manager。

3. Traffic Manager會根據本身的配置文件(性能、循環法、故障轉移),肯定最佳終結點,選擇好終結點後,把終結點的IP信息返回給客戶端。

4. 客戶端根據解析到的IP地址信息,直接發送請求道終結點。

怎麼配置Traffic Manager?

Traffic Manager包含三種負載平衡方法:

  • 故障轉移:若是終結點位於相同或不一樣的 Azure 數據中心(在管理門戶中稱爲區域)內,而且你但願對全部流量使用一個主終結點,可是但願在主終結點或備用終結點不可用時提供備份,請選擇「故障轉移」。

  • 循環:若是要將負載分配到同一數據中心內的一組終結點或者分配到不一樣的數據中心,請選擇「循環」。

  • 性能:若是終結點位於不一樣的地理位置,而且你但願請求客戶端使用「最靠近的」終結點(由於延遲最低),請選擇「性能」。

三個不一樣的負載平衡方法,三個不一樣的選擇,下面我主要就故障轉移場景來演練,如何經過Powershell建立Traffic Manager,並進行基本的配置。

建立故障轉移的負載平衡器

New-AzureTrafficManagerProfile -Name "cloudvip" -DomainName "cloudvip.trafficmanager.net" -LoadBalancingMethod "Failover" -Ttl 30 -MonitorProtocol "Http" -MonitorPort 80 -MonitorRelativePath "/"

表示我要建立一個cloudvip的Profile,域名爲cloudvip.trafficmanager.net,負載平衡方法是故障轉移,監視內容:協議http 端口 80 默認路徑

clip_p_w_picpath006

咱們進入門戶能夠看到已經建立好該Traffic Manager。

clip_p_w_picpath008

加入終結點

這時咱們的Traffic Manager並無包含任何終結點,下面我開始經過Powershell把終結點加進來。

1.$TrafficManagerProfile = Get-AzureTrafficManagerProfile -Name "cloudvip"
2.Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $TrafficManagerProfile -DomainName "blog01.cloudapp.net" -Status "Enabled" -Type "CloudService" | Set-AzureTrafficManagerProfile

第一個命令是使用Get-AzureTrafficManagerProfile獲得cloudvip的參數而後存放在TrafficManagerProfile變量中。

第二個命令是添加域名爲blog01.cloudapp.net的雲服務,而後經過Set-AzureTrafficManagerProfile變動到azure中。

clip_p_w_picpath010

帶有權重參數加入終結點

使用一樣方法添加另一個終結點,此次加上權重的參數。

Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $TrafficManagerProfile -DomainName "blog02.cloudapp.net" -Status "Enabled" -Type "CloudService" -Weight 2 | Set-AzureTrafficManagerProfile

clip_p_w_picpath012

查看終結點詳細信息

$TrafficManagerProfile.Endpoints | Format-List

clip_p_w_picpath014

使用PowerShell修改權重

可使用Set-AzureTrafficManagerEndpoint從新設置終結點,我來演示把blog01節點的權重改爲3.

Set-AzureTrafficManagerEndpoint -TrafficManagerProfile $TrafficManagerProfile -DomainName "blog01.cloudapp.net" -Status "Enabled" -Type "CloudService" -Weight 3 | Set-AzureTrafficManagerProfile

clip_p_w_picpath016

查看結果

clip_p_w_picpath018

最後咱們在客戶端進行測試

clip_p_w_picpath019

clip_p_w_picpath020

clip_p_w_picpath021

這時咱們能夠看到Traffic Manager把流量引入到blog01上了,這時我若是想把節點2(blog02)做爲主節點,要怎麼設置呢?你能夠運行一下命令

1. $Profile = Get-AzureTrafficManagerProfile -Name "MyProfile"
2. $Profile.Endpoints[0],$Profile.Endpoints[1] = $Profile.Endpoints[1],$Profile.Endpoints[0]
3. Set-AzureTrafficManagerProfile -TrafficManagerProfile $PROFILE

clip_p_w_picpath023

clip_p_w_picpath025

從結果中咱們能夠看到,節點2變成了主節點,咱們再來ping一下試試。

clip_p_w_picpath026

如今是節點2在提供服務。

總結:從上面的示例中,咱們能夠看到,一個網站設計成一個高可用架構,若是一個站點遭到毀滅性的***和破壞,咱們能夠快速的切換到備用站點,以提供服務。從而避免相似攜程的事件發生。

相關文章
相關標籤/搜索