Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

IISのApplication Request Routing(ARR)でリバースプロキシを構築する

Windows ServerのWebサーバー「IIS」を高度に活用しよう

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2013/03/14 14:00

 この記事では、IISのApplication Request Routingと呼ばれる機能を活用して、IISから他のWebサーバーを呼び出して応答する、リバースプロキシサーバーを構築する方法を紹介します。

目次

はじめに

 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を探します。

図1. WebPIでARRを探す(ここでは検索文字にRoutingを入力)
図1. WebPIでARRを探す(ここでは検索文字にRoutingを入力)

 追加ボタンを押して終了をクリックすると、アイテム確認画面が表示されます。依存アイテムが自動的に選択されていることが分かります。

図2. インストール確認画面(依存するモジュールが表示される)
図2. インストール確認画面(依存するモジュールが表示される)

 インストールが完了したら「インターネットインフォメーションサービス(IIS)マネージャー」を起動します。新しいアイコンが追加されていることが分かります。

図3. インストール後のIIS管理画面(ARRのアイコンが増えている)
図3. インストール後のIIS管理画面(ARRのアイコンが増えている)

 IISのカテゴリに「アプリケーション要求ルーティング処理キャッシュ(Application Request Routing Cache)」が増えました。依存関係にある「URL書き換え(URL Rewrite Module)」も追加されます。また、左のビューにおいて「Server Farms」というサーバーのグループを管理できるようになりました。

 インストールが完了するとIISの設定内容を示すapplicationHost.configファイル(C:\Windows\system32\inetsrv\config)に、applicationRequestRouting要素がwebFarms配下に追加されます。

更新されたapplicationHost.configファイル
<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>

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5