Traffic ManagerにExternal Endpointを追加してみた
さて、GoAzureの現実逃避を兼ねて、 直前で、Traffic ManagerにExternal Endpointが追加したい件というのを 2、3年ぶりにBlog postしていて、その後触れていなかったので、備忘録も兼ねて、検証結果をpostしときます。
前回も記載していますが、基本的にやったことと言えば、 Azure Traffic Manager External Endpoints and Weighted Round Robin via PowerShellにある手順通りに PowerShellでぽちぽちっとコマンドを叩いただけです。 ※ 2015/3/22現在、Azure Traffic Managerに外部エンドポイントを追加/編集できるのは、PowerShellのみです。 ポータル上(Previewポータルからは使えない)からは、削除のみ可能です。
Azure PowerShellのInstall方法とか、AzureのCmdlet一覧が知りたい!とか、 サブスクリプションを大量に持ってて、(課金の関係上)今日はこのサブスクリプションしたい!とか、 Azure Officalやら田口さんBlogに載っているので、そちらをご参照あれ!
- How to install and configure Azure PowerShell
- Azure Cmdlet Reference
- Windows Azure PowerShell のサブスクリプション選択
あとは、手順通りに以下のコマンドを実行していきました。
- TrafficManager上で作成してあるProfile一覧(要は設定一覧)を取得します。
ここでは何にも作ってなければ、Tableも何も出ないで終わります。
--- PS C:\> $profiles = Get-AzureTrafficManagerProfile PS C:\> $profiles | Format-Table ---
- 続いてProfileを新規作成します。
Subscription内で重複していなければ使えるので、チュートリアル通りの名前でもお好きなのをつけてもらえればと。
今回は「sample20150322-profile」という何の捻りもないプロファイル名にします。
ちなみにプロファイルはポータルからぽちぽちっと作れるので、PowerShellが苦手だったらそっちでもOKです。
下記のPowerShellで設定した内容もポータル上の[構成]から変更可能となっています。
--- PS C:\> New-AzureTrafficManagerProfile -Name "sample20150322-profile" -DomainName "sample201 50322.trafficmanager.net" -LoadBalancingMethod "RoundRobin" -Ttl 30 -MonitorProtocol "Http" -MonitorPort 80 -MonitorRelativePath "/" TimeToLiveInSeconds : 30 MonitorRelativePath : / MonitorPort : 80 MonitorProtocol : Http LoadBalancingMethod : RoundRobin Endpoints : {} MonitorStatus : Inactive Name : sample20150322-profile DomainName : sample20150322.trafficmanager.net Status : Enabled ---
- Profileを作成すると、登録されているエンドポイントが1つもないので「非アクティブ」状態で作成されます。 外部エンドポイントだけでもよいのですが、せっかくなのでWebSitesを追加してみます。(面倒なのでGUIからぽちっと ちなみにWebSitesはTrafficManagerに登録できるのは、Standard以上になるので要注意。
- プロファイルを確認して、いよいよ外部エンドポイントの登録!
--- PS C:\> $profile = Get-AzureTrafficManagerProfile -Name "sample20150322-profile" PS C:\> $profile | Format-Table TimeToLiveI MonitorRela MonitorPort MonitorProt LoadBalanci Endpoints MonitorStat Name DomainName Status nSeconds tivePath ocol ngMethod us ----------- ----------- ----------- ----------- ----------- --------- ----------- ---- ---------- ------ 30 / 80 Http RoundRobin {sample-... Online sample20... sample20... Enabled PS C:\> Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $profile -DomainName "www.mic rosoft.com" -Status "Enabled" -Type "Any" -Location "North Europe" | Set-AzureTrafficManager Profile TimeToLiveInSeconds : 30 MonitorRelativePath : / MonitorPort : 80 MonitorProtocol : Http LoadBalancingMethod : RoundRobin Endpoints : {sample-20150111.azurewebsites.net, www.microsoft.com} MonitorStatus : Online Name : sample20150322-profile DomainName : sample20150322.trafficmanager.net Status : Enabled ---
とくに何のエラーもなく、サクッと登録できます。しめしめ。 無邪気にYahoo!さんとGoogleさんも登録してみました。--- PS C:\> Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $profile -DomainName "www.yah oo.co.jp" -Status "Enabled" -Type "Any" -Location "Japan East" | Set-AzureTrafficManagerProf ile TimeToLiveInSeconds : 30 MonitorRelativePath : / MonitorPort : 80 MonitorProtocol : Http LoadBalancingMethod : RoundRobin Endpoints : {sample-20150111.azurewebsites.net, www.microsoft.com, www.yahoo.co.jp} MonitorStatus : Degraded Name : sample20150322-profile DomainName : sample20150322.trafficmanager.net Status : Enabled PS C:\> Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $profile -DomainName "www.goo gle.co.jp" -Status "Enabled" -Type "Any" -Location "Japan East" | Set-AzureTrafficManagerProfile TimeToLiveInSeconds : 30 MonitorRelativePath : / MonitorPort : 80 MonitorProtocol : Http LoadBalancingMethod : RoundRobin Endpoints : {sample-20150111.azurewebsites.net, www.microsoft.com, www.yahoo.co.jp, www.goog le.co.jp} MonitorStatus : Degraded Name : sample20150322-profile DomainName : sample20150322.trafficmanager.net Status : Enabled ---
- 登録されている内容をポータルで確認してみます。 MSさんのチュートルアル通りに登録しているのに、MSサイトだけ「低下(Degraded)」状態です。 非常に残念な気持ちに…
- 残念な気持ちを抑えつつ、"Azure TrafficManager Degraded"という直球でググったところ、 トラシュー方法が公式に。 Troubleshooting Scenario 4 - Windows Azure Traffic Manager Degraded Status これによると、 "A 30x redirect (or any other non-200 response) will fail, even if the redirected URL returns a 200." だそうで。これでしょ。絶対原因これでしょ。と。
- せっかくなので、サイトにあるようにwgetコマンドで内容を確認してみます。 見た目には"200 OK"で返ってきているものの、 取得したページを確認すると、結局リダイレクトされるという(まー、ブラウザで見てもその挙動だし) …これが原因で登録した外部エンドポイントは低下(Degraded)となるのでした。
★おまけ これを回避しようと思って、リダイレクト先のパスを外部エンドポイントとして登録しようとしたところ、 「お前が登録したドメイン名は不正だZE★」と言われて登録できませんでした。 ルートじゃないと弾くのが仕様のようです。
--- PS C:\> Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $profile -DomainName "www.microso ft.com/en-us" -Status "Enabled" -Type "Any" -Location "North Central US" | Set-AzureTrafficManag erProfile Set-AzureTrafficManagerProfile : BadRequest: The domain name www.microsoft.com/en-us is invalid.発生場所 行:1 文字:164 + ... Central US" | Set-AzureTrafficManagerProfile + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : CloseError: (:) [Set-AzureTrafficManagerProfile]、CloudException + FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.TrafficManager.Profile.SetAzureTrafficManagerProfile ---
基本的には簡単に使えるTraffic Manager様なので、 ちょっと癖はありますが用途にあわせてご利用くださいませ〜!