第8章

Webサーバ統合モジュールの使用

Novell exteNd Application Serverは、既存のWebサーバフレームワーク内のアプリケーションサーバを統合できるWSI(Webサーバ統合)モジュールを提供します。この章には、次のトピックが含まれています。

 
Top of page

WSIモジュールについて

WSIモジュールは、 Novell exteNd Application Serverの拡張機能として提供されます。 製品CDからNovell exteNd Application Serverをインストールした場合、WSIモジュールは含まれていません。 WSIモジュールを使用する場合は、Novell開発者Webサイトdeveloper.novell.com/ndk/wsi.htmからこれらのモジュールをダウンロードする必要があります。 指示に従ってモジュールをインストールおよび設定します。

NetWareユーザの場合   NetWareのインストール中に、Apache WSIが自動的にインストールされて設定されます。 NetWareをインストールすることで、基本的なApache WSI設定が含まれるAgWSI.confという名前の設定ファイルが生成されます。 したがって、開発者WebサイトからWSIモジュールをダウンロードする必要はありません。

 
Top of section

WSIモジュールの動作方法

WSIモジュールは、要求を処理するアプリケーションサーバに特定のURL (または複数のURLのセット)に対する要求を転送して、既存のWebサーバディレクトリ構造のURLネームスペースを拡張します。この動作は、次のとおりです。

  1. 指定されたURLへの要求を受け取ると、WSIモジュールは、アプリケーションサーバとのHTTP接続を開いて要求を転送します。

  2. アプリケーションサーバは要求を処理して、WSIに応答を返します。

  3. WSIは応答をWebサーバに返します。

ブラウザとアプリケーションサーバは直接通信しません。すべてのコールはWSIを介して渡されます。応答時間を向上させるには、アプリケーションサーバへの接続をプールするようWSIを設定できます。

 
Top of section

WSIモジュールサンプル設定

次の5つの例は、企業ネットワークでのWSI使用方法を示します。

例1: Webサーバと1つのアプリケーションサーバ   この単純な例では、WSIモジュールはWebサーバから単一のアプリケーションサーバに要求を転送します。

plugin1

注記:   環境のセットアップには、さまざまな方法があります。たとえば、次の4つの各例では、内部ファイアウォールの後方にデータベースを配置できます。企業データベースをDMZ外に配置すると、データベースを保護することができます。

例2: Webサーバとクラスタ化アプリケーションサーバ   この例では、WSIモジュールは単一のWebサーバからアプリケーションサーバのクラスタに要求を転送します。この方法は、データベースアクセスを向上させ、アプリケーションサーバが単一点障害になるリスクを低減します。

plugin2

例3:複数のWebサーバとアプリケーションサーバ   この例では、複数のWSIモジュールが複数のアプリケーションサーバに要求を転送するように設定されています。この方法では、大量の要求を処理する場合の信頼性が向上します。

plugin3

例4:負荷を分散するハードウェアディスパッチャ   この例でも、複数のWSIが、複数のWebサーバからの要求を複数のアプリケーションサーバに転送します。フロントエンドとバックエンドに複数のサーバがあり、両エンドでディスパッチャによる負荷分散が使用されているため、最大量の要求をより信頼性の高い方法で処理できます。

plugin4

例5: Webサーバと複数のアプリケーションサーバ   この例では、WSIモジュールは複数の設定でセットアップされており、着信URLに応じて異なるアプリケーションサーバに要求をルーティングできます。abc.comへの要求はserv1.myco.comに送信され、xyz.comへの要求はserv2.myco.comに送信されます。詳細については、複数アプリケーションサーバへの要求の送信を参照してください。

plugin5

 
Top of section

WSI設定要件

WSIモジュールをインストール、設定、および有効にする前に、次の点に注意してください。

アプリケーションサーバはリモートで実行できます。Webサーバコンピュータから実行する必要はありません。

 
Top of page

WSI設定のカスタマイズ

Novell開発者WebサイトからダウンロードしたWSIモジュールには、基本的なWSI設定の作成方法を説明したreadmeファイルが含まれています。

NetWareユーザの場合   NetWareユーザの場合、Apache WSIは、デフォルトのディレクィブのセットを使用してインストール、設定、および有効化されます。

この節では、WSI設定ファイルに他のディレクティブを追加することによってデフォルト設定をカスタマイズする方法について説明します。この節には、次のトピックが含まれます。

 
Top of section

NetWare上のApache WSIのカスタマイズ

Apache WSIモジュールを設定して有効にするには、Apacheサーバのhttpd.confファイルにディレクティブのセットを追加するか、またはhttpd.confファイルを含む個別の設定フィルディレクティブを追加します。どのディレクティブを選択するかによって、WSIが処理するURL、URLを処理するアプリケーションサーバ(およびポート)、WSIが接続プール、SSLなどを使用するかどうかといったWSIの機能が決まります。

NetWareユーザの場合   NetWareユーザがインストール済みの設定を使用する場合、特に必要なアクションはありません。 他のディレクティブの詳細については、を参照してください。

Procedure Apache WSIを設定する

  1. httpd.confファイルを開きます。

  2. Apache LocationMatchディレクティブを追加して、WSIで管理するURLを指定します。次のようになります。

      <LocationMatch /Root_URL_to_Forward>
    

    ここで、/Root_URL_to_Forwardは、WSIがアプリケーションサーバに転送するURLです。

    すべてのURLをアプリケーションサーバに転送するには、次のように指定します。

      <LocationMatch />
    
  3. LocationMatchの要素(次の行)内に、Apache SetHandler ディレクティブを追加して、wsi-handlerを指定します。例は次のとおりです。

      <LocationMatch /myURL>
         SetHandler wsi-handler
    
  4. WSIのアプリケーションサーバ接続タイプ(プールまたは非プール)を指定します。

    For more information    詳細については、Apache WSIの接続プールを参照してください。

  5. httpd.confファイルを保存します。

 
Top of section

複数アプリケーションサーバへの要求の送信

WSIモジュールでは、異なるクライアント要求を異なるアプリケーションサーバに送信できます。

Apache Webサーバの場合

Apache WSIの異なるアプリケーションサーバに異なるクライアント要求を送信するには、複数のLocationMatchセクションを定義します。各LocationMatchセクションには、要求と、要求のリダイレクト先のアプリケーションサーバを定義するディレクティブが含まれます。例は次のとおりです。

  <LocationMatch URL1>
     WSIHost     host1
     WSIPort     port1
  </LocationMatch>
  <LocationMatch URL2>
     WSIHost     host2
     WSIPort     port2
  </LocationMatch>

URL1で始まるすべてのURLは、host1:port1に送信されます。URL2で始まるすべてのURLは、host2:port2に送信されます。

IISおよびiPlanet Webサーバの場合

IISまたはiPlanet WSIの異なるアプリケーションサーバに異なるクライアント要求を送信するには、AgWSI.confファイルに複数のセクションを定義します。各設定セクションには、SECTIONステートメントのラベルが付けられ、どの要求がどのアプリケーションサーバにリダイレクトされるかを指定するステートメントが含まれます。各セクションには、AgWSI.confファイルリファレンスに必須としてリストされているステートメントをすべて含める必要があります。

さらに、Webサーバは、複数のホスト名をホストする「マルチホーム」にすることもできます。WSI.hostステートメントを使用して、ホスト名(およびオプションのポート)に基づいて要求を転送するようにWSIを設定できます。セクションにWSI.hostステートメントがない場合、要求のホストヘッダは無視され、一致するURLのみがフィルタとして使用されます。詳細については、WSIHostを参照してください。

Webサーバへの各着信要求に対し、WSIは、要求ヘッダ(WSI.hostで指定されている場合)のホスト名とポート、および要求のURLに基づいて一致するものが見つかるまで、すべての設定セクションを検索します。要求は、そのセクションで指定されたアプリケーションサーバに転送されます。

異なるアプリケーションサーバに送信するサンプル設定ファイル   次の設定ファイルには、2つの異なるWebサーバホスト名を指定して、2つの異なるアプリケーションサーバに要求を送信する3つのセクションがあります。このサンプルには、指定されたURLに安全な(HTTPS)接続によってのみアクセスできるようにWSIを設定する方法も示されています。

  SECTION=WWW_ABC_COM
  
  # www.abc.comのすべてのURLをserv1.myco.comにリダイレクトします
  # HTTP要求はアプリケーションサーバのポート80に転送されます
  # HTTPS要求はアプリケーションサーバのポート443に転送されます
  
      WSI.host=www.abc.com
      WSI.root.dir=/AgISAPI
  
      SilverServer.host=serv1.myco.com
      SilverServer.http.port=80
      SilverServer.https.port=443
      SilverServer.urls=/
  
      Connection.http.max=100
      Connection.https.max=100
      Connection.idle.time=25
  
  SECTION=WWW_XYZ_COM_SECURE
  
  # www.xyz.comの/db1/approot/secureで始まるURLを
  # serv2.myco.comにリダイレクトします
  # HTTPS(安全なポート)からのみ(SilverServer.http.ポートは0に設定されます)
  
      WSI.host=www.xyz.com
      WSI.root.dir=/AgISAPI
  
      SilverServer.host=serv2.myco.com
      SilverServer.http.port=0
      SilverServer.https.port=443
      SilverServer.urls=/db1/approot/secure
  
      Connection.http.max=100
      Connection.https.max=100
      Connection.idle.time=25
  
  SECTION=WWW_XYZ_COM_HTTP
  
  # www.xyz.comの他のすべてのURLを
  # すべてのポートでserv2.myco.comにリダイレクトします
  
      WSI.host=www.xyz.com
      WSI.root.dir=/AgISAPI
  
      SilverServer.host=serv2.myco.com
      SilverServer.http.port=80
      SilverServer.https.port=443
      SilverServer.urls=/
  
      Connection.http.max=100
      Connection.https.max=100
      Connection.idle.time=25

 
Top of section

接続プール

WSIモジュールは、接続プールを使用して応答時間を向上させます。Webサーバに接続される各クライアントにアプリケーションサーバへの接続を作成および管理する代わりに、WSIは、アプリケーションサーバへの接続を複数クライアントの接続に再使用します。WSIは、リクエストを同時に処理するために、必要に応じてアプリケーションサーバとの新しい接続を開きます。 この節には、次のトピックが含まれています。

Apache WSIの接続プール

非プール接続を使用するApache WSIの基本設定では、WSIは、各要求に対して新しい接続を作成し、要求を実行した後、サーバから切断します。アプリケーションサーバのホスト(WSIHost)およびアプリケーションサーバポートのディレクティブ(HTTP要求にはWSIPort、HTTPS要求にはWSISslPort)を指定します。プールされていない接続のLocationMatchディレクティブは次のようになります。

  <LocationMatch /myApp>
     SetHandler   wsi-handler
     WSIHost      alaska
     WSIPort      10080
     WSISslPort   10043
  </LocationMatch>

接続プールを定義すると、WSIは各要求に対して接続プールから接続を取得し、要求を実行してからプールに接続を返します。WSIを使用することで、接続を作成して閉じる際のオーバーヘッドが軽減されます。

接続プールを定義するには、WSIConnectionPoolコンテナ要素を使用して接続プール属性を指定してから、LocationMatchディレクティブ内で接続プール名(WSIConnPool)を指定します。

まず、WSIConnPoolコンテナを作成する必要があります(対応するLocationMatchコンテナの直前に作成します)。例は次のとおりです。

  <WSIConnPool cp01>
     WSIHost        alaska
     WSIPort        10080
     WSISslPort     10443
     WSIMaxConns    100
     WSIMaxSslConn  50
  </WSIConnPool>
  
  <LocationMatch /SilverStream40>
     SetHandler        wsi-handler
     WSIConnPool   cp01
  </LocationMatch>

WSIIdleTimeoutディレクティブを使用して、接続プールの接続にアイドルタイムアウトを指定できます。指定しない場合、アイドルタイムアウトは10分に設定されます。WSIは、WSICleanupIntervalディレクティブに指定された間隔で、アイドル接続をチェックします。これらのディレクティブは接続プールごとに指定し、指定されていない場合はデフォルト値が使用されます。

IISおよびiPlanet WSIの接続プール

IISおよびiPlanet WSIモジュールは、HTTPおよびHTTPSプロトコルに対して個別の接続プールを維持します。接続プールがシステムリソースを使いすぎないようにするために、WSIは定期的にプールをスキャンして、スキャンサイクル間に使用されなかった接続を閉じます。

接続の状況は次のうちいずれかです。

状態

説明

Connected

接続中でアクティブです

Inactive

接続されていますが、時間制限は切れていません

Idle

アクティブでなく、アイドル制限が切れています

Not connected

-

接続されていても使用されていない接続を見つけるため、WSIは定期的にバックグランドスレッドを実行して、接続プールの非アクティブなアイドル接続をチェックします。WSIスレッドは、すべての非アクティブなスレッドにアイドルのマークを付け、すでにアイドルとしてマークされた接続を閉じます。アイドルとしてマークされると、接続は設定したアイドル時間制限(またはデフォルトの25分)に基づいて閉じられます。この間隔は、接続が作成されたときではなく、WSIモジュールがロードされたときから開始されます。

接続は、切断される前に2つのスキャンサイクルの間非アクティブのままであることが必要です。たとえば、指定された接続アイドル時間制限が15分に設定されている場合、非アクティブ接続は、非アクティブになってから15分から30分の間に切断されます(既存間隔の途中でWSIがプールを開始することがあるため)。スキャンサイクルの間隔中にアイドル接続が使用された場合、接続は非アクティブとマークされて接続プールに戻ります。

接続プール値の指定   接続プール値は、AgWSI.confファイルの3つのディレクティブConnection.http.maxConnection.https.max、および Connection.idle.timeを使用して指定できます。

 
Top of page

IISおよびiPlanetのセキュリティ上の考慮事項

サーバプラットフォーム、アーキテクチャ、およびサードパーティセキュリティプロバイダによって違いがあるため、WSIを使用する際には、次のセキュリティ上の考慮事項に注意する必要があります。

 
Top of section

WSIモジュールでのIIS NTLM認証の使用

Microsoft Windows のNTLM (NT LAN Manager)認証を使用してWebサイトを保護すると、WSIのデフォルトヘッダ設定が機能しなくなります。着信要求の認証後、IISは各要求にNTLM HTTP認証ヘッダを追加します。NTLM HTTP認証ヘッダはアプリケーションサーバによってサポートされていないため、次のいずれかの方法でIISのWSIモジュールを設定しない限り、着信要求は拒否されます。

 
Top of section

AgWSIUserユーティリティの使用

AgWSIUserは、WSIユーザおよびパスワードを定義するためにAgWSI.confに必要なWSI.auth.userステートメントを生成するコマンドラインユーティリティです。AgWSIUserユーティリティは、WSIで読み込むことができる形式でユーザ名とパスワードを暗号化します。

For more information    詳細については、WSI.auth.userを参照してください。

Procedure AgWSIUserユーティリティを使用する

  1. コマンドラインから、WSIのルートディレクトリに移動します。

  2. 次のコマンドを入力します。

      AgWSIUser username password 
    

    パスワードが空白の場合は、ユーザ名のみ入力します。任意の有効なユーザを入力できます。AgWSIUserユーティリティによって、対応するWSI.auth.userステートメントがコマンドウィンドウに出力されます。

  3. 生成されたステートメントをAgWSI.confファイルの適切なセクションに貼り付けます(セクションを使用していない場合は、ファイルの任意の場所に貼り付けます)。

    WSIモジュールは、起動時にユーザ名とパスワードを復号化して、アプリケーションサーバに転送するすべての要求に追加するHTTP認証ヘッダを生成します。



Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved.  more ...