はじめに
IISのApplication Request Routing(アプリケーション要求ルーティング処理)は、Microsoftによって提供されている無償のモジュールです。モジュール名のとおりリクエストに対するルーティング機能のほか、負荷分散、ディスクキャッシュの機能を利用できます。
本稿では、IISサーバーから別のサーバーに代理アクセスできるプロキシサーバを作成する設定について紹介します。
対象読者
- IISの基本を理解している開発者
- ネットワークの基本を理解している開発者
動作確認した環境
当記事では以下の環境で動作確認を行っています。
- Application Request Routing 2.1
- IIS 8.0(Windows 8 64Bit)
今回は解説のため、日本語UIが提供されているバージョン2.1を使用します。本番環境では最新安定バージョンをインストールすることを推奨します。
Application Request Routing(ARR)とは
「Application Request Routing(以下ARR)」は、IIS7から登場したMicrosoft製のIISモジュールです。Webサーバーで受け付けたリクエストを、HTTP ヘッダー、サーバー変数、負荷分散アルゴリズムなどのルールに基づいて 別のサーバーに転送することができます。
これは、リバースプロキシ(逆プロキシ)と呼ばれ、特定のサーバーへの応答を代行することで背後にあるサーバーの負荷を軽減したり、アクセスを制限することによりセキュリティを高めたりすることができます。例えば、複数のWebサーバを1つのURLで公開したり、DMZ領域のサーバーに間接的にアクセスして公開したりすることが可能です。
IIS7.0で提供されたバージョン1に続いて、バージョン2では、ディスクベースのキャッシュ機能がサポートされました。バージョン2.1では日本語化が、バージョン2.5では性能改善が行われています。最新のバージョン3(執筆時点ではBeta)では、WebSocketの対応とヘルスチェック(ルーティング先の活性確認)機能が提供される予定です。
1. ARRのインストール
それでは、ARRをインストールしてみましょう。ここではWeb PI(Microsoft Web Platform Installer)を起動してARRを探します。
追加ボタンを押して終了をクリックすると、アイテム確認画面が表示されます。依存アイテムが自動的に選択されていることが分かります。
インストールが完了したら「インターネットインフォメーションサービス(IIS)マネージャー」を起動します。新しいアイコンが追加されていることが分かります。
IISのカテゴリに「アプリケーション要求ルーティング処理キャッシュ(Application Request Routing Cache)」が増えました。依存関係にある「URL書き換え(URL Rewrite Module)」も追加されます。また、左のビューにおいて「Server Farms」というサーバーのグループを管理できるようになりました。
インストールが完了するとIISの設定内容を示すapplicationHost.configファイル(C:\Windows\system32\inetsrv\config)に、applicationRequestRouting要素がwebFarms配下に追加されます。
<configuration> ~省略~ <system.webServer> <modules> ~省略~ <add name="RewriteModule" /> <add name="ApplicationRequestRouting" /> </modules> </system.webServer> </location> <webFarms> <applicationRequestRouting> <hostAffinityProviderList> <add name="Microsoft.Web.Arr.HostNameRoundRobin" /> <add name="Microsoft.Web.Arr.HostNameMemory" /> </hostAffinityProviderList> </applicationRequestRouting> </webFarms> </configuration>