演習 - 優先順位によるルーティングを使って自動フェールオーバーを有効にする
あなたの音楽ストリーミング アプリケーションのユーザーは、米国西部と西ヨーロッパに均等に分布していると仮定します。 1 つのリージョンにアプリのフェールオーバー バージョンを備えたいと考えています。
この演習で使用するサンプル アプリケーションでは、それが稼働しているリージョンが表示されます。 2 つのインスタンスのうち、優先順位の高い方がプライマリ エンドポイントです。 優先順位の低い方のインスタンスがフェールオーバー エンドポイントです。 プライマリ エンドポイントをオフラインにすると、すべてのトラフィックがフェールオーバー エンドポイントに自動的にルーティングされます。
この演習では、米国のエンドポイントをプライマリとして使用し、エラーが発生したらヨーロッパのエンドポイントにフェールオーバーするように Traffic Manager を設定します。
新しい Traffic Manager プロファイルを作成する
Cloud Shell で次のコマンドを実行し、新しい Traffic Manager プロファイルを作成します。
az network traffic-manager profile create \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name TM-MusicStream-Priority \ --routing-method Priority \ --unique-dns-name TM-MusicStream-Priority-$RANDOM
コマンドで、次のパラメーターを使用します。
- --routing-method Priority:優先順位によるルーティング方法を使用して Traffic Manager プロファイルを作成します。
- --unique-dns-name:グローバルに一意なドメイン名
<unique-dns-name>.trafficmanager.net
を作成します。 ここではランダムな整数を返す$RANDOM
Bash 関数を使って、名前が確実に一意になるようにします。
Web アプリケーションをデプロイする
次のコマンドを実行して、Resource Manager テンプレートをデプロイします。 このテンプレートでは、2 つのサーバーが作成されます。1 つは西ヨーロッパ リージョンに、もう 1 つは米国西部 2 リージョンにあります。 デプロイには数分かかることがあるため、待ちます。
az deployment group create \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --template-uri https://raw.githubusercontent.com/MicrosoftDocs/mslearn-distribute-load-with-traffic-manager/master/azuredeploy.json \ --parameters password="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)"
Traffic Manager にエンドポイントを追加する
Web アプリケーションが仮想マシン上で実行されるようになりました。 次のコマンドを実行して、仮想マシンのパブリック IP アドレス リソースをエンドポイントとして Traffic Manager プロファイルに追加します。
WestId=$(az network public-ip show \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name westus2-vm-nic-pip \ --query id \ --output tsv) az network traffic-manager endpoint create \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --profile-name TM-MusicStream-Priority \ --name "Primary-WestUS" \ --type azureEndpoints \ --priority 1 \ --target-resource-id $WestId
WestId=$(az network public-ip show \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name westeurope-vm-nic-pip \ --query id \ --output tsv) az network traffic-manager endpoint create \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --profile-name TM-MusicStream-Priority \ --name "Failover-WestEurope" \ --type azureEndpoints \ --priority 2 \ --target-resource-id $WestId
このコードは、両方の仮想マシンからリソース ID を取得します。 次に、コードは ID を使って、Traffic Manager プロファイルにそれらをエンドポイントとして追加します。 米国西部のアプリを最も高い優先順位に設定するために、コードでは
--priority
フラグが使われています。構成したエンドポイントを簡単に確認してみましょう。 次のコマンドを実行します。
az network traffic-manager endpoint list \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --profile-name TM-MusicStream-Priority \ --output table
アプリをテストする
DNS により、Web アプリと Traffic Manager プロファイルに対して何が示されるかを確認しましょう。 次のコマンドを実行して、作成した各リソースの IP アドレスを表示します。
米国西部 2 Web アプリのアドレスを取得します。
nslookup $(az network public-ip show \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name westus2-vm-nic-pip \ --query dnsSettings.fqdn \ --output tsv)
西ヨーロッパ Web アプリのアドレスを取得します。
nslookup $(az network public-ip show \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name westeurope-vm-nic-pip \ --query dnsSettings.fqdn \ --output tsv)
Traffic Manager プロファイルのアドレスを取得します。
# Retrieve the address for the Traffic Manager profile nslookup $(az network traffic-manager profile show \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name TM-MusicStream-Priority \ --query dnsConfig.fqdn \ --output tsv)
Traffic Manager プロファイルのアドレスは、westus2-vm 仮想マシンに割り当てられている westus2-vm-nic-pip パブリック IP の IP アドレスと一致している必要があります。
次のコマンドを実行して、Traffic Manager プロファイルの完全修飾ドメイン名 (FQDN) に移動します。 要求は、最も高い優先順位で応答するエンドポイントにルーティングされます。
echo http://$(az network traffic-manager profile show \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name TM-MusicStream-Priority \ --query dnsConfig.fqdn \ --output tsv)
コードによって FQDN が Cloud Shell に出力されます。 FQDN を選択して、新しいブラウザー ウィンドウまたはタブを開きます。
アプリケーションが動作しており、ページの下部に表示される場所が米国西部 2 であることを確認します。
次のコマンドを実行して、プライマリ エンドポイントを無効にします。
az network traffic-manager endpoint update \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name "Primary-WestUS" \ --profile-name TM-MusicStream-Priority \ --type azureEndpoints \ --endpoint-status Disabled
もう一度、DNS によって Web アプリと Traffic Manager プロファイルに対して何が表示されるかを確認しましょう。
米国西部 2 Web アプリのアドレスを取得します。
nslookup $(az network public-ip show \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name westus2-vm-nic-pip \ --query dnsSettings.fqdn \ --output tsv)
西ヨーロッパ Web アプリのアドレスを取得します。
nslookup $(az network public-ip show \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name westeurope-vm-nic-pip \ --query dnsSettings.fqdn \ --output tsv)
Traffic Manager プロファイルのアドレスを取得します。
nslookup $(az network traffic-manager profile show \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name TM-MusicStream-Priority \ --query dnsConfig.fqdn \ --output tsv)
今度は、Traffic Manager プロファイルのアドレスが西ヨーロッパの Web アプリと一致しているはずです。
Web ページを更新して、ご利用のブラウザーからもう一度アプリケーションをテストします。 Traffic Manager によって、トラフィックが自動的に西ヨーロッパのエンドポイントにリダイレクトされます。 ご利用のブラウザーによっては、ローカルにキャッシュされたアドレスの有効期限が切れるまでに数分かかる場合があります。 プライベート ウィンドウでサイトを開くとキャッシュが無視されるため、すぐに変更を確認できます。