本記事はMicrosoft社が開催したハンズオン”Cosmos DB と App Service によるグローバル分散アプリ構築”のTrafficManagerの項目に対し、一部修正や加筆したものです。
対象ユーザー
- Azure WebAppをある程度理解している。
- ディザスタリカバリー対応したい or ユーザーに最適なリージョンにアクセスを振り分けたい
前提条件
- Azure WebAppをリージョンを分けて2つ作っている。
何がおいしいの?
ディザスタリカバリーとは災害復旧を意味します。(災害に限定されないと思いますが英語自信なし(;^_^A)
本記事ではWebAppをリージョンを分けて2つ用意しており、仮にいずれかのリージョンのWebAppに障害が発生しても、もう一方のリージョンにあるWebAppに誘導して、サービス提供を維持することが可能になります。
また、本記事ではルーティング方法にパフォーマンスを選択しているため、ユーザから最も近いリージョンにアクセスするよう、TrafficManagerがコントロールするため、パフォーマンス面でのメリットもあります。
(西日本と東日本だと距離がそんなに離れていないため、パフォーマンスのメリットは小さいはず)
手順
Traffic Managerの作成
- Azureポータルにて、[リソースの作成] - [ネットワーキング] - [Traffic Manager プロファイル] をクリックします。
- Traffic Manager プロファイル作成画面では以下のように設定して下さい。
3. 名前: 任意の文字列(半角英数小文字とハイフンのみ)
4. ルーティング方法: パフォーマンス - [作成] をクリックします。
Traffic Managerエンドポイントの設定
以下の手順でWeb Appのプライマリリージョンとセカンダリリージョンをエンドポイントとしてそれぞれ追加します。
- Traffic Manager プロファイルのブレードから、[エンドポイント] - [追加] をクリックします。
2. 種類: Azureエンドポイント
3. 名前: 任意の文字列(半角英数小文字とハイフンのみ)
4. ターゲットリソースの種類: App Service
5. ターゲットリソース: プライマリリージョンとセカンダリリージョンのWebAppどちらかを選択 - [OK] をクリックします。
Traffic Managerを経由したアプリケーションへのアクセス
- Traffic Manager プロファイル のブレードから [概要] を選択します。
- エンドポイントが両方ともオンラインになっていることを確認します。
- [DNS 名] のURLをクリックして、アプリケーションにアクセスします。
- App Service個別の URLにアクセスした時と同じ画面が表示されればOK。
障害発生のシミュレーションをやってみた
App Serviceのプライマリリージョンまたはセカンダリリージョンのどちらかを停止/削除しても、Traffic Manager 経由でのアプリケーション利用に問題がないことを確認します。
下図では東日本リージョンを障害発生中としてシミュレーションしているため、モニター状態が低下となっています。
一方、米国中部は正常に動作しているため、モニター状態はオンラインとなっています。
この状態でTrafficManagerのDNSのURLにアクセスすると、通常は東日本へアクセスするのですが、障害発生中のため米国中部へ誘導されてアプリの動作が継続できるようになっています。
複数リージョンにWebAppを展開済みであれば導入は非常に簡単なので、ぜひ試してみてください。