Application Request Routing (ARR) を使用した共有ホスト
公開日: 2008 年 7 月 2 日 (作業者: pharr (英語))
更新日: 2009 年 5 月 12 日 (作業者: pharr (英語))
概要
Application Request Routing (ARR) を共有ホスト環境で使用することで、新しい展開アーキテクチャが導入され、共有ホスト提供者に多くのメリットと機会をもたらします。このシナリオは、Application Request Routing の "ホスト名アフィニティ" と呼ばれる機能によって有効になります。ホスト名アフィニティの機能および共有ホストとの関連性の詳細については、「Application Request Routing を使用した共有ホストの展開の概要」を参照してください。
このトピックでは、以下の図に示すように、Application Request Routing のホスト名アフィニティ機能を構成する手順について説明しています。
目標
共有ホスト環境で Application Request Routing を構成すること。
必要条件
このチュートリアルの必要条件は次のとおりです。
- Windows 2008 (任意の SKU) 以降の IIS 7.0。
- Microsoft Application Request Routing Version 1 および依存モジュール。
- 運用中のサイトとアプリケーションが含まれているアプリケーション サーバー (少なくとも 2 台)。
- 共有構成と共有コンテンツを使用するようにサーバーを構成する必要があります。共有構成の詳細については、この記事を参照してください。
- サーバー上のサイトでは、ホスト名バインディングを使用する必要があります。
Application Request Routing RC をインストールしていない場合は、以下の場所からダウンロードできます。
- Microsoft Application Request Routing Version 1 for IIS 7 (x86) をダウンロード(英語)。
- Microsoft Application Request Routing Version 1 for IIS 7 (x64) をダウンロード(英語)。
Application Request Routing をインストールするには、このドキュメントに記載されている手順に従います。
もう 1 つの必要条件として、「Application Request Routing サーバー グループの定義と構成」に記載されている手順に従って、サーバー ファームの定義と構成を済ませていることが必要です。
Step 1 – ホスト名アフィニティを有効にする
開始する前に、共有構成と共有コンテンツで構成されたアプリケーション サーバーを使用して、サーバー ファームが作成されていることを確認してください。また、アプリケーション サーバー上のサイトでは、ホスト名バインディングを使用する必要があります。
UI を使用して、ホスト名アフィニティを有効にするには
1. IIS マネージャーを起動します。
2. このチュートリアル用に作成されたサーバー ファームを選択します。
3. 以下のアイコンが表示されます。
4. [サーバー アフィニティ] をダブルクリックします。
5. ホスト名アフィニティを有効にするには、[ホスト名を使用する] チェック ボックスをオンにして、[適用] をクリックします。
ホスト名のアフィニティ化の対象となるサーバーを指定する 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. この機能を確認するには、[ルーティング テーブルを表示する] をクリックします。
7. ホストの名前を入力して、[ホスト名で検索する] をクリックします。表示されたサーバー アドレスは、ホスト名がアフィニティ化される場所となります。
コマンド ラインを使用して、ホスト名アフィニティを有効にするには
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. [サーバー アフィニティ] ページで、[詳細設定] をクリックします。
2. [ホスト名] 列に、ホスト名を入力します。このフィールドは必須です。
3. [割り当てられているサーバー数] 列に、このホスト名で使用できるサーバーの数を入力します。
4. [代替のホスト名] は、オプションのフィールドで、[ホスト名] 列の値と同じように扱われる必要があるホスト名を追加で指定する場合に使用できます。たとえば、サイトの所有者が同じサイトに対して複数の DNS エントリを設定している場合があります。この場合、サイトの所有者は、両方のドメイン名に対してアプリケーション サーバー上で起動するワーカー プロセスが 1 つのみとなるように、ARR で複数の DNS エントリが同じように扱われるように設定します。
5. 変更を保存するには、[OK] をクリックします。
6. この機能を確認するには、[ルーティング テーブルを表示する] をクリックします。
7. ホストの名前を入力して、[ホスト名で検索する] をクリックします。返されたサーバー アドレスの数は、[割り当てられているサーバー数] で指定した数と同じとなります。これらのサーバーが、ホスト名をアフィニティ化できる対象となります。
コマンド ラインを使用して、使用するサーバーの数を指定するには
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
まとめ
これで、共有ホスト シナリオ用に、Application Request Routing のホスト名アフィニティ機能を正常に構成できました。その他の Application Request Routing のプロパティおよび機能については、他の Application Request Routing のチュートリアルを参照してください。