Azure設計プラクティス3: Traffic ManagerによるApp ServiceとVM間での負荷分散

前回に引き続き設計プラクティスです。

今回は前々回にLoadBalancerで複数のVMの負荷分散を行ったのに対し、TrafficManagerというものを利用してApp ServiceとVirtualMachine間で負荷分散を行います。

今回の構成はこのようになっています。

WebAppsとVirtualMachineの2つのWebホストへのアクセスをTrafficManagerによって分散します。

TrafficManagerはDNSレベルで動作し、*.trafficmanager.netに来たDNS要求に対し、ルールに基づいて決定したCNAMEを返します。

例えばgariweb1.azurewebsites.netにトラフィックをさばくべきだとTrafficManagerが判断すれば、DNSの名前解決要求が来た時にCNAMEレコードにgariweb1.azurewebsites.netを入れて返信します。

TrafficManagerの分散ルールは公式サイトにあるとおりです。

  • 優先順位: すべてのトラフィックにプライマリ サービス エンドポイントを使用し、プライマリ エンドポイントまたはバックアップ エンドポイントが使用できない場合に備えてバックアップを用意する場合は、”優先順位” を選択します。
  • 重み付け: 一連のエンドポイントに、均等にまたは定義した重みに従ってトラフィックを分散させる場合は、”重み付け” を選択します。
  • パフォーマンス: 複数のエンドポイントが地理的に異なる場所にあり、エンド ユーザーが、ネットワーク待ち時間が最も短いという意味で “最も近い” エンドポイントを使用できるようにする場合は、”パフォーマンス” を選択します。
  • 地理的: DNS クエリの発信元の地理的な場所に基づいてユーザーを特定のエンドポイント (Azure、外部または入れ子になっている) に割り当てる場合に “地理的” を選択します。 こうすることで、Traffic Manager の利用者は、ユーザーのリージョンを把握し、そのリージョンに基づいてユーザーをルーティングすることが重要なシナリオを実現できます。 データ主権規制、コンテンツおよびユーザー エクスペリエンスのローカライズ、さまざまなリージョンからのトラフィックの測定がその例に挙げられます。

今回は優先順位のルールを用いて負荷分散を行います。

AppServiceを作る

負荷分散されるインスタンスの1つを作ります。

今回はWebAppsにPHPのアプリを作るということとします。

Virtual Machineを作る

続いて負荷分散されるもう片方のインスタンスであるVirtualMachineを作成します。

UbuntuのVirtualMachineを作成します。

LoadBalancerではVirtualMachineのスペックは負荷分散が書いてあるものでないとダメでしたがTrafficManagerでは必要ありません。

今回はA0としました。

仮想ネットワーク、セキュリティグループ等、デフォルトでOKです。

VirtualMachineを作成できたら、紐付いているパブリックIPにDNS名をつけましょう。

パブリックIPの構成から好きなDNS名をつけます。

さらに紐付いているネットワークセキュリティグループの受信ルールからhttpの80番ポートを許可します。

TrafficManagerを作成する

続いて上記の2つのインスタンスの負荷分散を行うTrafficManagerを作成しましょう。

TrafficManagerはAzureで「TrafficManagerプロファイル」と検索すると出てきます。

ルーティング方法は今回は「優先度」とします。

TrafficManagerを作成することができたら、エンドポイントを追加します。

エンドポイントとはTrafficManagerが負荷分散した先のインスタンスとなります。

ですので作成したWebAppsとVirtualMachineを指定しましょう。

ターゲットリソースはWebAppsの場合「AppService」

VirtualMachineの場合、VMに紐付いているパブリックIPとしましょう。

(TrafficManagerはDNSレベルで動作するため、パブリックIPにDNS名をつけていないとここで指定することができません)

以上でTrafficManagerの設定は完了です。

アプリをデプロイする

ではWebアプリを配置していきましょう。

まずはAppServiceからです。

AppServiceの場合、様々なデプロイ方法がありますが今回はローカルgitリポジトリから配置します。

WebAppsの「デプロイオプション」からローカルGitリポジトリを選択します。

するとWebAppsの「概要」の部分にGitクローンURLというものができるのでこのURLをgit cloneしましょう。

その上にあるGit/デプロイメントユーザー名が何も表示されていない人は資格情報からデプロイユーザーを作成しましょう。

クローンできたら中にindex.phpを作成し、中身をこのようにしましょう。

index.phpを作成できたら git pushします。

WebAppsにアクセスしてこのように表示されればOKです。

つづいてVMに同じアプリをデプロイしましょう。

VMにsshでログインし、下記のコマンドを実行し、lamp環境を整えましょう。

lamp環境を整えることができたらindex.phpを作成しましょう。

index.phpの中身は以下のようにします。

VMのDNS名にアクセスすると以下のように表示されたらOKです。

TrafficManagerにアクセスする

ではアプリを配置できたので負荷分散ができているか試してみましょう。

VMの方のページが表示されました。

これは現在のTrafficManagerのルーティングルールが「優先度」であり、WebAppsの優先度が1、VMの優先度が2であるため、優先度が高いVMのほうが表示されています。

 




No Comments


You can leave the first : )



Leave a Reply

Your email address will not be published. Required fields are marked *