![]() ![]() ![]() ![]() ![]() ![]() | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
第8章
Novell exteNd Application Serverは、既存のWebサーバフレームワーク内のアプリケーションサーバを統合できるWSI(Webサーバ統合)モジュールを提供します。この章には、次のトピックが含まれています。
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モジュールをダウンロードする必要はありません。
WSIモジュールは、要求を処理するアプリケーションサーバに特定のURL (または複数のURLのセット)に対する要求を転送して、既存のWebサーバディレクトリ構造のURLネームスペースを拡張します。この動作は、次のとおりです。
ブラウザとアプリケーションサーバは直接通信しません。すべてのコールはWSIを介して渡されます。応答時間を向上させるには、アプリケーションサーバへの接続をプールするようWSIを設定できます。
次の5つの例は、企業ネットワークでのWSI使用方法を示します。
最初の4つの例で、WSIモジュールはURL http://www.ABC.com/daytime/schedule.htmlへのクライアント要求をhttp://sssw.ABC.com/daytime/schedule.html(クライアントのURLアドレスは変わりません)へ転送します。
例1: Webサーバと1つのアプリケーションサーバ この単純な例では、WSIモジュールはWebサーバから単一のアプリケーションサーバに要求を転送します。
注記: 環境のセットアップには、さまざまな方法があります。たとえば、次の4つの各例では、内部ファイアウォールの後方にデータベースを配置できます。企業データベースをDMZ外に配置すると、データベースを保護することができます。
例2: Webサーバとクラスタ化アプリケーションサーバ この例では、WSIモジュールは単一のWebサーバからアプリケーションサーバのクラスタに要求を転送します。この方法は、データベースアクセスを向上させ、アプリケーションサーバが単一点障害になるリスクを低減します。
例3:複数のWebサーバとアプリケーションサーバ この例では、複数のWSIモジュールが複数のアプリケーションサーバに要求を転送するように設定されています。この方法では、大量の要求を処理する場合の信頼性が向上します。
例4:負荷を分散するハードウェアディスパッチャ この例でも、複数のWSIが、複数のWebサーバからの要求を複数のアプリケーションサーバに転送します。フロントエンドとバックエンドに複数のサーバがあり、両エンドでディスパッチャによる負荷分散が使用されているため、最大量の要求をより信頼性の高い方法で処理できます。
例5: Webサーバと複数のアプリケーションサーバ この例では、WSIモジュールは複数の設定でセットアップされており、着信URLに応じて異なるアプリケーションサーバに要求をルーティングできます。abc.comへの要求はserv1.myco.comに送信され、xyz.comへの要求はserv2.myco.comに送信されます。詳細については、複数アプリケーションサーバへの要求の送信を参照してください。
WSIモジュールをインストール、設定、および有効にする前に、次の点に注意してください。
WSIは、認証にクライアント証明書を要求するよう設定されたアプリケーションサーバとは使用できません。
WSIモジュールは、ブラウザからアプリケーションサーバにクライアント証明書を転送できません。WSIはアプリケーションサーバとの新しいHTTPS接続を開くので、この接続にクライアント証明書を使用するために、クライアント証明書のプライベートキーにアクセスする必要があります。 しかし、プライベートキーはクライアントコンピュータのブラウザによって安全に保存されているため、使用できません。アプリケーションサーバにクライアント証明書を送信できないため、WSIは、認証にクライアント証明書を要求するよう設定されたアプリケーションサーバとは使用できません。
クラスタ化アプリケーションサーバに対しては、WSIでは、ファイアウォールの1つのポートを介してアプリケーションサーバに要求を安全にリダイレクトするため、サードパーティのハードウェアディスパッチャが必要です。
アプリケーションサーバのソフトウェアディスパッチャ(SilverDispatcher)は、URLをマスキングするのではなくリダイレクトすることでサーバクラスタを負荷分散するため、アプリケーションサーバに付属のWSIモジュールは、SilverDispatcherとは使用できません。
アプリケーションサーバはリモートで実行できます。Webサーバコンピュータから実行する必要はありません。
Novell開発者WebサイトからダウンロードしたWSIモジュールには、基本的なWSI設定の作成方法を説明したreadmeファイルが含まれています。
NetWareユーザの場合 NetWareユーザの場合、Apache WSIは、デフォルトのディレクィブのセットを使用してインストール、設定、および有効化されます。
この節では、WSI設定ファイルに他のディレクティブを追加することによってデフォルト設定をカスタマイズする方法について説明します。この節には、次のトピックが含まれます。
Apache WSIモジュールを設定して有効にするには、Apacheサーバのhttpd.confファイルにディレクティブのセットを追加するか、またはhttpd.confファイルを含む個別の設定フィルディレクティブを追加します。どのディレクティブを選択するかによって、WSIが処理するURL、URLを処理するアプリケーションサーバ(およびポート)、WSIが接続プール、SSLなどを使用するかどうかといったWSIの機能が決まります。
NetWareユーザの場合 NetWareユーザがインストール済みの設定を使用する場合、特に必要なアクションはありません。 他のディレクティブの詳細については、を参照してください。
Apache LocationMatchディレクティブを追加して、WSIで管理するURLを指定します。次のようになります。
<LocationMatch /Root_URL_to_Forward>
ここで、/Root_URL_to_Forwardは、WSIがアプリケーションサーバに転送するURLです。
すべてのURLをアプリケーションサーバに転送するには、次のように指定します。
<LocationMatch />
LocationMatchの要素(次の行)内に、Apache SetHandler ディレクティブを追加して、wsi-handlerを指定します。例は次のとおりです。
<LocationMatch /myURL> SetHandler wsi-handler
WSIのアプリケーションサーバ接続タイプ(プールまたは非プール)を指定します。
詳細については、Apache WSIの接続プールを参照してください。
WSIモジュールでは、異なるクライアント要求を異なるアプリケーションサーバに送信できます。
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 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
WSIモジュールは、接続プールを使用して応答時間を向上させます。Webサーバに接続される各クライアントにアプリケーションサーバへの接続を作成および管理する代わりに、WSIは、アプリケーションサーバへの接続を複数クライアントの接続に再使用します。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モジュールは、HTTPおよびHTTPSプロトコルに対して個別の接続プールを維持します。接続プールがシステムリソースを使いすぎないようにするために、WSIは定期的にプールをスキャンして、スキャンサイクル間に使用されなかった接続を閉じます。
接続の状況は次のうちいずれかです。
状態 |
説明 |
---|---|
Connected |
接続中でアクティブです |
Inactive |
接続されていますが、時間制限は切れていません |
Idle |
アクティブでなく、アイドル制限が切れています |
Not connected |
- |
接続されていても使用されていない接続を見つけるため、WSIは定期的にバックグランドスレッドを実行して、接続プールの非アクティブなアイドル接続をチェックします。WSIスレッドは、すべての非アクティブなスレッドにアイドルのマークを付け、すでにアイドルとしてマークされた接続を閉じます。アイドルとしてマークされると、接続は設定したアイドル時間制限(またはデフォルトの25分)に基づいて閉じられます。この間隔は、接続が作成されたときではなく、WSIモジュールがロードされたときから開始されます。
接続は、切断される前に2つのスキャンサイクルの間非アクティブのままであることが必要です。たとえば、指定された接続アイドル時間制限が15分に設定されている場合、非アクティブ接続は、非アクティブになってから15分から30分の間に切断されます(既存間隔の途中でWSIがプールを開始することがあるため)。スキャンサイクルの間隔中にアイドル接続が使用された場合、接続は非アクティブとマークされて接続プールに戻ります。
接続プール値の指定 接続プール値は、AgWSI.confファイルの3つのディレクティブConnection.http.max、Connection.https.max、および Connection.idle.timeを使用して指定できます。
サーバプラットフォーム、アーキテクチャ、およびサードパーティセキュリティプロバイダによって違いがあるため、WSIを使用する際には、次のセキュリティ上の考慮事項に注意する必要があります。
Microsoft Windows のNTLM (NT LAN Manager)認証を使用してWebサイトを保護すると、WSIのデフォルトヘッダ設定が機能しなくなります。着信要求の認証後、IISは各要求にNTLM HTTP認証ヘッダを追加します。NTLM HTTP認証ヘッダはアプリケーションサーバによってサポートされていないため、次のいずれかの方法でIISのWSIモジュールを設定しない限り、着信要求は拒否されます。
アプリケーションサーバに送信されたすべての要求からNTLM HTTP認証ヘッダを削除します。NTLMヘッダが削除されたら、AgWSI.confファイルのWSI.auth.NTLM.removeをtrueに設定することで、アプリケーションサーバにユーザの要求を正常に転送できます。詳細については、WSI.auth.NTLM.removeを参照してください。
AgWSIUserは、WSIユーザおよびパスワードを定義するためにAgWSI.confに必要なWSI.auth.userステートメントを生成するコマンドラインユーティリティです。AgWSIUserユーティリティは、WSIで読み込むことができる形式でユーザ名とパスワードを暗号化します。
詳細については、WSI.auth.userを参照してください。
AgWSIUser username password
パスワードが空白の場合は、ユーザ名のみ入力します。任意の有効なユーザを入力できます。AgWSIUserユーティリティによって、対応するWSI.auth.userステートメントがコマンドウィンドウに出力されます。
生成されたステートメントを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 ...