エンタープライズ:ニュース 2002/09/03 22:46:00 更新


.Net Serverの「目玉」になるIIS 6.0[1]

マイクロソフトはInternet Information Server(IIS)の6.0における機能向上には、セキュリティ強化を柱にかなり力を入れたようだ。インターネットをベースとする.Net構想実現には、IISへの評価を高めることは必須になる。

 マイクロソフトはWindows .Net Server RC1(Release Candidate 1)についてのプレス向けセミナーを開催した。セキュリティの脆弱性を指摘されることが多かったWebサーバ、Internet Information Server(IIS)の6.0では、セキュリティ最優先のポリシーの下、信頼性、パフォーマンス、管理性能の向上のために大幅な再設計が行われ、新規のソースコードも多く追加されたようだ。

 インターネットを大前提とするWebサービス、.Net構想を展開する同社としては、Webサーバのイメージの悪化は避けなくてはいけないことは明らかで、実際に、.Net FrameworkとASP.Netの統合はIIS 6.0の開発目標の柱になっているのだ。性能向上が期待できそうだが、再設計されているということは、ユーザー企業は導入前に既存システムとの互換性などのテストをしっかりしなくてはならないことを意味する。

 最初に触れるべきなのは、パフォーマンスの改善点。IIS 6.0では、HTTP(Hyper Text Transfer Protocol)を処理するコードをWindowsカーネルに移した。HTTPリクエスト(Webページや画像の表示要求)はカーネルモード、つまりHTTP.SYSと直接通信するため、パフォーマンスが向上する。ユーザーが記述したリクエスト処理用コードに含まれるバグの影響も受けない仕様になる。

bbb.gif
IIS 6.0のプロセスモデル。 aaa.gif
IIS 5.0のモデル。INETIFO.EXEの機能は6.0で3つに分離された。

 具体的には、IIS 6.0では、IIS 5.0のINETIFO.EXEを3つに分離した。HTTPリクエストを受け取って適切なWebアプリケーションに渡す機能「HTTP.SYS」、HTTP.SYSの設定やWebアプリケーションの制御/監視を行う「WAS(Web Administration Services)」、Webアプリケーションの実行環境「W3 CORE」の3つだ。

 HTTP.SYSは前述の通り、「高速なカーネルモードドライバ」だ。URL応答キャッシュにより、HTTPリクエストをカーネルモードで処理する。そして、応答キャッシュにヒットしない場合は、HTTPリクエストを適切なHTTPアプリケーションに直接ルーティングするする。

httpsys.gif
HTTP.SYSのアーキテクチャー。Webアプリケーションとは独立したキューイング方式を採用している。

ワーカープロセス分離モード

 一方、Webアプリケーションの実行環境であるW3 COREの特徴となる機能は、ワーカープロセス分離モードだ。ワーカープロセス分離モードは、ユーザーコードとIISのコアプロセスを完全に分離する技術として注目される。

ws.gif
ワーカープロセス分離モードのアーキテクチャー

 ワーカープロセス分離モードは、Webアプリケーションプールごとに個別のワーカープロセス(W3WP.EXE)を立ち上げて、ユーザーが記述したアプリケーショコードを隔離する。各アプリケーションは別のプロセス空間で実行されるため、質の悪いアプリケーションが別のアプリケーションやWebサイトに影響を及ぼすことを防止することが可能になるという。また、管理タスクも各アプリケーションごとに実行できる。

 例えば、2種類のASP.NetベースのWebアプリケーションが起動している場合は、「それぞれの」Webアプリケーションが、ISAPIエクステンション(Internet Server Application Programming Interface)、CLR(共通言語ランタイム)、ユーザーが記述したアプリケーションコードで構成されるワーカープロセスを持つという状態になっている。

 また、Webガーデンは、複数のワーカープロセスを持つアプリケーション。ワーカープロセスのアプリケーションがフリーズしても、ほかのワーカープロセスがサービスの提供を続けることができる。

 ちなみに、ワーカープロセスは、ISAPIフィルターとISAPIエクステンションがロードされた実行単位のこと。アプリケーションプールは、ワーカープロセスを持つことができる「W3WP.EXE」という物理プロセス。1台のサーバの中に任意の数を生成できる。また、SMP(対称型マルチプロセッシング。マルチプロセッサシステムにおいて、全体の処理を各プロセッサに均等に割り振るように設計されたシステム)マシンの場合は、特定のCPUに処理を割り当てることができるという。

 一方、WASはヘルスモニターという機能を提供する。これは、ワーカープロセスに定期的にpingを打ち、応答確認することで稼働状況を監視し、通信チャネルを維持していく。

 さらに、ワーカープロセス分離モードでは、ラピッドフェール保護と呼ばれる機能がある。これは、特定のアプリケーションプールが立て続けにクラッシュした場合に、自動的にそのアプリケーションプールを停止させる機能となっている。

関連記事
▼.Net Serverの「目玉」になるIIS 6.0[2]
▼完成度高まるWindows .Net Server
▼マイクロソフトのセキュリティは信頼できるか?

[怒賀新也,ITmedia]