アプリケーション要求ルーティング処理 (ARR) を使用した共有ホスティング

アプリケーション要求ルーティング処理 (ARR) を共有ホスティング環境で使用すると、共有ホストにとっての利点と機会を高める新たな展開アーキテクチャが可能となります。 このシナリオは、アプリケーション要求ルーティング処理のホスト名アフィニティと呼ばれる機能によって実現します。 ホスト名アフィニティ機能の詳細、および共有ホスティングとの関係の詳細については、アプリケーション要求ルーティング処理を使用した共有ホスティングの展開に関する記事を参照してください。

このトピックでは、次に示したように、アプリケーション要求ルーティング処理のホスト名アフィニティ機能を構成する手順について説明します。

R R がデプロイされている共有ホスティング環境を表す図。

目標

共有ホスティング環境でアプリケーション要求ルーティング処理を構成する。

前提条件

このチュートリアルでは、次の前提条件が必要です。

  • Windows 2008 (任意の SKU) 以降の IIS 7.0 以降のバージョン。

  • Microsoft アプリケーション要求ルーティング処理バージョン 1 と依存モジュール。

  • サイトとアプリケーションが正常に実行されているアプリケーション サーバー (2 台以上)。

    • サーバーは、共有構成と共有コンテンツを使用するように構成されている必要があります。 共有構成の詳細については、「共有構成」の記事を参照してください。
    • サーバー上のサイトは、ホスト名のバインドを使用している必要があります。

このドキュメントに記載されている手順に従って、アプリケーション要求ルーティング処理をインストールします。

もう 1 つの前提条件として、アプリケーション要求ルーティング処理 (ARR) サーバー グループの定義と構成に関するページで説明されている手順に従って、サーバー ファームを定義し、構成する必要があります。

手順 1 – ホスト名アフィニティを有効にする

先に進む前に、サーバー ファームが、共有構成と共有コンテンツで構成されているアプリケーション サーバーを使用して作成されていることを確認します。 アプリケーション サーバー上のサイトもホスト名バインドを使用している必要があります。

UI を使用してホスト名アフィニティを有効にするには

  1. IIS マネージャーを起動します。

  2. このチュートリアル用に作成されたサーバー ファームを選択します。

  3. 次のアイコンが表示されます。

    サーバー ファームアイコンを示す [I I S Manager] ウィンドウのスクリーンショット。

  4. [Server Affinity](サーバー アフィニティ) をダブルクリックします。

  5. ホスト名アフィニティを有効にするには、[Use host name](ホスト名を使用する) を選択し、[適用] をクリックします。

    [ホスト名のアフィニティ] ダイアログを示すスクリーンショット。[ホスト名の使用] がオンになっています。

    ホスト名をどのサーバーにアフィニタイズするかを決定するためのプロバイダーは 2 つあることに注意してください。 これは負荷分散アルゴリズムとは異なり、プロバイダーはホスト名アフィニティ機能にのみ使用されます。 この 2 つのプロバイダーを次に示します。

    • Microsoft.Web.Arr.HostNameRoundRobin
    • Microsoft.Web.Arr.HostNameMemory

    Microsoft.Web.Arr.HostNameRoundRobin は、アフィニタイズされたホスト名の数を、ラウンド ロビンで均等に分散することを試みます。 このプロバイダーを使用することでアプリケーション サーバーに課される要件はありません。

    Microsoft.Web.Arr.HostNameMemory は、アフィニタイズされるホスト名の数を、アプリケーション サーバー上の使用可能なメモリ量に応じて分散しようと試みます。使用可能なメモリ量が最も多いサーバーに次のホスト名が割り当てられます。 このプロバイダーは、使用可能な (コミット済みメモリ / 物理メモリとして定義される) メモリを WMI を使って照会します。 そのため、アプリケーション サーバーは Windows サーバーである必要があり、別途、リモート WMI クエリを許可するための構成をアプリケーション サーバーに対して行う必要があります。 詳細については、「HostNameMemory アフィニティ プロバイダー用のアプリケーション サーバーで WMI サービスを構成する方法」を参照してください。

    タイムアウト値は、同じホスト名での最後の要求からどれだけの時間が経過したらアフィニティをリセットするかを決定するために使用されます。 この値は、アプリケーション サーバー上のアプリケーション プールのアイドル タイムアウト値と同じ値に設定する必要があります。 既定値は 20 分です。

  6. この機能を確認するために、[Display Routing Table](ルーティング テーブルの表示) をクリックします。

    既定の [ルーティング テーブルの表示] ダイアログのスクリーンショット。サーバー アドレスは表示されません。

  7. ホストの名前を入力し、[Lookup by host name](ホスト名で検索) をクリックします。 表示されるサーバー アドレスは、ホスト名のアフィニタイズ先となるアドレスです。

コマンドラインを使用してホスト名アフィニティを有効にするには

  1. 管理者特権でコマンド プロンプトを開きます。

  2. %windir%\system32\inetsrv に移動します。

  3. ホスト名アフィニティを有効にするには、次のように入力します (次の例では、サーバー ファームの名前として myServerFarm を使用します)。

    appcmd.exe set config  -section:webFarms /[name='myServerFarm'].applicationRequestRouting.affinity.useHostName:"True"  /commit:apphost
    

手順 2 - ホスト名ごとに使用するサーバーの数を指定する

既定では、すべてのホスト名で 1 つのアプリケーション サーバーを使用できます。 ただし、サイト所有者から容量の増加を求められた場合、サイトがホスト名ごとに使用できるアプリケーション サーバーの数をホスト側が指定できます。

使用するサーバーの数を UI から指定するには

  1. [Server Affinity ](サーバー アフィニティ) ページで [Advanced Settings](高度な設定) をクリックします。

    既定の [詳細設定] ダイアログのスクリーンショット。ホスト名の行が空です。

  2. [Host Name](ホスト名) 列にホスト名を入力します。 これは必須フィールドです。

  3. [Number of Allocated Servers](割り当てられたサーバーの数) 列に、このホスト名で使用できるサーバーの数を入力します。

  4. [Alternate Host Names](代替ホスト名) はオプション フィールドです。[Host Name](ホスト名) 列の値と同じように扱うべきホスト名を追加指定する際に使用できます。 たとえば、サイト所有者は、同じサイトに対して複数の DNS エントリを持つ場合があります。 この場合、ARR が複数の DNS エントリを同じ方法で処理し、両方のドメイン名に対してアプリケーション サーバー上の 1 つのワーカー プロセスのみが開始されるのが望ましいでしょう。

  5. 変更を保存するために、[OK] をクリックします。

  6. この機能を確認するために、[Display Routing Table](ルーティング テーブルの表示) をクリックします。

    設定されていない [ルーティング テーブルの表示] ダイアログを示すスクリーンショット。

  7. ホストの名前を入力し、[Lookup by host name](ホスト名で検索) をクリックします。 返されるサーバー アドレスの数は、[Number of Allocated Servers](割り当てられたサーバーの数) に指定した数と一致します。 これらが、ホスト名をアフィニタイズできるサーバーになります。

使用するサーバーの数をコマンドラインから指定するには

  1. 管理者特権でコマンド プロンプトを開きます。

  2. %windir%\system32\inetsrv に移動します。

  3. ホスト名ごとにサーバーの数を指定するには、次のように入力します (次の例では、サーバー ファームの名前として myServerFarm を使用し、www.contoso.com というホスト名に対してサーバー数を 2 に設定しています)。

    appcmd.exe set config  -section:webFarms /+"[name='myServerFarm'].applicationRequestRouting.affinity.[name='www.contoso.com',servers='2']" /commit:apphost
    

まとめ

これで、共有ホスティング シナリオ向けにアプリケーション要求ルーティングのホスト名アフィニティ機能が正しく構成されました。 その他のアプリケーション要求ルーティング処理のプロパティと機能については、他のアプリケーション要求ルーティング処理のチュートリアルを参照してください。