Solaris のシステム管理 (ネットワークサービス)

第 2 章 Web キャッシュサーバーの管理

この章では、Solaris NCA (ネットワークキャッシュとアクセラレータ) の概要について説明します。NCA を使用するための手順と NCA に関する参考資料を示します。さらに、Solaris 10 6/06 リリース用として、SSL (Secure Sockets Layer) の使用法の概要と、SSL カーネルプロキシを使って SSL パケット処理のパフォーマンスを改善するための手順が追加されました。

NCA (ネットワークキャッシュとアクセラレータ) (概要)

Solaris NCA (ネットワークキャッシュとアクセラレータ) は、HTTP 要求時にアクセスされる Web ページのカーネル内キャッシュを保持することにより、Web サーバーのパフォーマンスを向上させます。このカーネル内キャッシュはシステムメモリーを使用するため、通常は Web サーバーによって処理される HTTP 要求のパフォーマンスを、大幅に向上させます。HTTP 要求時に Web ページがシステムメモリー内に保持されているため、カーネルと Web サーバー間のオーバーヘッドが減少し、Web サーバーのパフォーマンスが向上します。NCA にはソケットインタフェースが用意されており、どのような Web サーバーでも最小限の変更で NCA と通信できます。

要求されたページがカーネル内キャッシュから取得された場合 (キャッシュヒット時) は、パフォーマンスが飛躍的に向上します。要求されたページがキャッシュ内になく、Web サーバーから取得する必要がある場合 (キャッシュミス時) でも、パフォーマンスは大幅に改善されます。

この製品は、専用の Web サーバー上で実行するようにします。NCA が動作するサーバー上で他の大きいプロセスを実行すると、問題が起きることがあります。

NCA はすべてのキャッシュヒットを記録するロギング機能を提供します。ログはパフォーマンスを向上させるためにバイナリ形式で格納されます。ncab2clf コマンドを使用すると、バイナリ形式のログを共通ログ形式 (CLF) に変換できます。

この Solaris リリースには、次のような機能強化が行われています。

SSL (Secure Sockets Layer) プロトコルを使用する Web サーバー

Solaris 10 6/06 リリースでは、SSL (Secure Sockets Layer) プロトコルを使用するように、Apache 2.0 と Sun Java System Web Server を設定できるようになりました。このプロトコルを使えば、2 つのアプリケーションの間で、機密性、メッセージの完全性、およびエンドポイント認証を実現できます。Solaris のカーネルに変更が加えられ、SSL トラフィック処理の高速化が図られました。

SSL カーネルプロキシは、SSL プロトコルのサーバー側を実装します。このプロキシによって、Web サーバーのようなサーバーアプリケーションの SSL パフォーマンスが向上します。これはユーザーレベルの SSL ライブラリを使用したアプリケーションを通じて達成されます。アプリケーションのワークロードに応じて、パフォーマンスは最大 35% 向上する可能性があります。

SSL カーネルプロキシは、多くの一般的な暗号化スイートのほかに、SSL 3.0 プロトコルと TLS 1.0 プロトコルをサポートします。完全な一覧については、ksslcfg(1M) のマニュアルページを参照してください。このプロキシは、サポートされないすべての暗号化スイートに対して、ユーザーレベルの SSL サーバーへのフォールバックを行うよう構成することができます。

SSL カーネルプロキシを使用するようにサーバーを構成するための手順を示します。

Web キャッシュサーバーの管理 (作業マップ)

次の表に、NCA または SSL を使用するために必要な手順を示します。

作業 

説明 

参照先 

NCA の利用を計画する 

NCA を有効にする前に解決すべき事項のリスト。 

「NCA の利用を計画する」

NCA を有効にする 

Web サーバー上の Web ページのカーネル内キャッシュを有効にするための手順。 

「Web ページのキャッシングを有効にする方法」

NCA を無効にする 

Web サーバー上の Web ページのカーネル内キャッシュを無効にするための手順。 

「Web ページのキャッシングを無効にする方法」

NCA ロギングを管理する 

NCA ロギング処理を有効または無効にするための手順。 

「NCA ロギングを有効または無効にする方法」

NCA ソケットライブラリをロードする 

AF_NCA ソケットがサポートされていない場合に NCA を使用するための手順。 

「NCA 用のソケットユーティリティーライブラリを読み込む方法」

Apache 2.0 Web サーバーで SSL カーネルプロキシを使用する 

特定の Web サーバーで SSL カーネルプロキシを使って SSL パケット処理を改善するための手順。 

「SSL カーネルプロキシを使用するように Apache 2.0 Web サーバーを設定する方法」

Sun Java System Web Server で SSL カーネルプロキシを使用する 

特定の Web サーバーで SSL カーネルプロキシを使って SSL パケット処理を改善するための手順。 

「SSL カーネルプロキシを使用するように Sun Java System Web Server を設定する方法」

局所ゾーン内の Web サーバーで SSL カーネルプロキシを使用する 

局所ゾーン内の Web サーバーで SSL カーネルプロキシを使用するための手順。 

「ゾーン内での SSL カーネルプロキシの使用」

NCA の利用を計画する

この節では、NCA サービスを開始する前に解決しておく必要のある事項について説明します。

NCA を使用するためのシステム要件

NCA をサポートするには、システムは次の要件を満たす必要があります。

この製品は、専用の Web サーバー上で実行するようにします。NCA を実行しているサーバー上で別の大きいプロセスを実行すると、問題が生じることがあります。

NCA ロギング

NCA サービスでは、Web アクティビティーを記録するように設定できます。通常、Web サーバーのロギングが有効になっているときには NCA のロギングも有効にします。

ライブラリ置き換えによる door サーバーデーモンのサポート

多くの Web サーバーが AF_INET ソケットを使用しています。デフォルトでは、NCA は AF_NCA ソケットを使用します。この状況に対応するために、置き換え用のライブラリが用意されています。新しいライブラリは標準ソケットライブラリ libsocket.so の前にロードされます。ライブラリ呼び出し bind() は、新しいライブラリ ncad_addr.so によって置き換えられます。/etc/nca/ncakmod.conf 内で状態が有効に設定されているとします。Solaris 9 および Solaris 10 リリースに付属している Apache は、このライブラリを呼び出すように設定されています。IWS または Netscape サーバーで新しいライブラリを使用する場合は、「NCA 用のソケットユーティリティーライブラリを読み込む方法」を参照してください。

複数インスタンスのサポート

NCA がインストールされているシステムでは、複数の Web サーバーを実行することがよくあります。たとえば、1 つのサーバーで、外部からのアクセス用の Web サーバーと Web 管理サーバーの両方をサポートする場合があります。これらのサーバーを別にするには、それぞれのサーバーが別のポートを使用するように設定します。

Web ページのキャッシュ管理 (手順)

この節では、サービスを有効または無効にするための手順を示します。

ProcedureWeb ページのキャッシングを有効にする方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. インタフェースを登録します。

    /etc/nca/nca.if ファイルに各物理インタフェースの名前を指定します。詳細は、nca.if(4) のマニュアルページを参照してください。


    # cat /etc/nca/nca.if
    hme0
    hme1

    インタフェースごとに、対応する hostname. interface-name ファイルが必要です。また、/etc/hosts ファイル内に hostname.interface-name の内容と一致するエントリが必要です。すべてのインタフェースで NCA 機能を使用可能にするには、nca.if ファイル内でアスタリスク (*) を指定します。

  3. ncakmod カーネルモジュールを有効にします。

    /etc/nca/ncakmod.conf 内の status エントリを enabled に変更します。


    # cat /etc/nca/ncakmod.conf
    #
    # NCA Kernel Module Configuration File
    #
    status=enabled
    httpd_door_path=/var/run/nca_httpd_1.door
    nca_active=disabled

    詳細は、ncakmod.conf(4) のマニュアルページを参照してください。

  4. (省略可能) NCA ロギングを有効にします。

    /etc/nca/ncalogd.conf 内の status エントリを enabled に変更します。


    # cat /etc/nca/ncalogd.conf
    #
    # NCA Logging Configuration File
    #
    status=enabled
    logd_path_name="/var/nca/log"
    logd_file_size=1000000

    logd_path_name エントリに示されているパスを変更すると、ログファイルの格納場所を変更できます。ログファイルには raw デバイスとファイルのどちらでも指定できます。次に、NCA ログファイルのパスの例を示します。この設定ファイルの詳細は、ncalogd.conf(4) のマニュアルページを参照してください。

  5. (省略可能) 複数インスタンスのサポートのためのポートを定義します。

    /etc/nca/ncaport.conf ファイルにポート番号を追加します。次の例では、NCA はすべての設定済み IP アドレスについて、ポート 80 を監視します。


    # cat /etc/nca/ncaport.conf
    #
    # NCA Kernel Module Port Configuration File
    #
      .
      .
    ncaport=*/80
    
  6. x86 のみ: 仮想メモリーサイズを増やします。

    eeprom コマンドを使用して、システムの kernelbase を設定します。


    # eeprom kernelbase=0x90000000
    # eeprom kernelbase
    kernelbase=0x90000000

    2 行目の eeprom コマンドを実行すると、パラメータが設定済みかどうかを確認できます。


    注 –

    kernelbase を設定すると、ユーザープロセスが使用できる仮想メモリー領域が 3G バイト未満に減少します。このため、システムは ABI に準拠しなくなります。システムをブートすると、そのことを警告するメッセージがコンソールに表示されます。ほとんどのプログラムは、実際には 3G バイトの仮想アドレス空間を必要としません。3G バイト以上の仮想アドレス空間を必要とするプログラムは、NCA を無効に設定したシステム上で実行する必要があります。


  7. サーバーを再起動します。


例 2–1 NCA ログファイルとして raw デバイスを使用する

ncalogd.conf ファイル内の logd_path_name 文字列で、NCA ログファイルの格納先として raw デバイスを指定できます。raw デバイスを使用する利点としては、アクセス時のオーバーヘッドが小さいため、サービスを高速に実行できることが挙げられます。

NCA サービスはファイル内に記述されているすべての raw デバイスに対して、対応するファイルシステムがないことを確認します。このテストは、アクティブなファイルシステムを誤って上書きしてしまわないように実行されます。

このテストでファイルシステムが検出されないようにするには次のコマンドを実行します。このコマンドは、ファイルシステムとして構成されている任意のディスクパーティション上のファイルシステム部分を破棄します。この例では、/dev/rdsk/c0t0d0s7 が古いファイルシステムを持つ raw デバイスです。


# dd if=/dev/zero of=/dev/rdsk/c0t0d0s7 bs=1024 count=1

上記の dd コマンドを実行すると、ncalogd.conf ファイルに raw デバイスを追加できるようになります。


# cat /etc/nca/ncalogd.conf
#
# NCA Logging Configuration File
#
status=enabled
logd_path_name="/dev/rdsk/c0t0d0s7"
logd_file_size=1000000


例 2–2 NCA ロギング用に複数のファイルを使用する

ncalogd.conf ファイル内の logd_path_name 文字列で、NCA ログファイルの格納先として複数のファイルを指定できます。最初のファイルが満杯になると、二番目のファイルが使用されます。次の例では、最初に /var/nca/log ファイルを書き込みに使用し、次に raw パーティションを使用する方法を示します。


# cat /etc/nca/ncalogd.conf
#
# NCA Logging Configuration File
#
status=enabled
logd_path_name="/var/nca/log /dev/rdsk/c0t0d0s7"
logd_file_size=1000000

ProcedureWeb ページのキャッシングを無効にする方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. ncakmod カーネルモジュールを無効にします。

    /etc/nca/ncakmod.conf 内の status エントリを disabled に変更します。


    # cat /etc/nca/ncakmod.conf
    # NCA Kernel Module Configuration File
    #
    status=disabled
    httpd_door_path=/var/run/nca_httpd_1.door
    nca_active=disabled

    詳細は、ncakmod.conf(4) のマニュアルページを参照してください。

  3. NCA ロギングを無効にします。

    /etc/nca/ncalogd.conf 内の status エントリを disabled に変更します。


    # cat /etc/nca/ncalogd.conf
    #
    # NCA Logging Configuration File
    #
    status=disabled
    logd_path_name="/var/nca/log"
    logd_file_size=1000000

    詳細は、ncalogd.conf(4) のマニュアルページを参照してください。

  4. サーバーを再起動します。

ProcedureNCA ロギングを有効または無効にする方法

NCA が有効になっている場合、必要に応じて NCA のログ処理のオン / オフを切り換えることができます。詳細は、「Web ページのキャッシングを有効にする方法」を参照してください。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. NCA ロギングのオン/オフを切り換えます。

    ロギングを恒久的に無効にする場合は、/etc/nca/ncalogd.conf 内の status を disabled に変更し、システムをリブートする必要があります。詳細は、ncalogd.conf(4) のマニュアルページを参照してください。

    1. ロギングを停止します。


      # /etc/init.d/ncalogd stop
      
    2. ロギングを開始します。


      # /etc/init.d/ncalogd start
      

NCA 用のソケットユーティリティーライブラリを読み込む方法

この手順は、AF_NCA ソケットを直接にサポートしていない Web サーバーに対してのみ使用します。

Web サーバーの起動スクリプトに、ライブラリをプリロードするための 1 行を追加します。次のような行を追加します。


LD_PRELOAD=/usr/lib/ncad_addr.so /usr/bin/httpd

ProcedureNCA サービスに新しいポートを追加する方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. 新しいポートを追加します。

    /etc/nca/ncaport.conf に、新しいポートのエントリを追加します。次の例では、IP アドレス 192.168.84.71 に対してポート 8888 を追加しています。詳細は、ncaport.conf(4) のマニュアルページを参照してください。


    # cat /etc/nca/ncaport.conf
    #
    # NCA Kernel Module Port Configuration File
    #
      .
      .
    ncaport=*/80
    ncaport=192.168.84.71/8888
    
  3. 新しい Web インスタンスを起動します。

    Web サーバーが NCA でアドレスを使用するには、先にそのアドレスが NCA のポート設定のファイルに入っている必要があります。Web サーバーが実行中である場合は、新しいアドレスの定義後にその Web サーバーを再起動する必要があります。

ProcedureSSL カーネルプロキシを使用するように Apache 2.0 Web サーバーを設定する方法

Apache 2.0 Web サーバー上で SSL パケット処理のパフォーマンスを改善するには、次の手順を使用してください。

始める前に

次の手順を使用するには、Apache 2.0 Web サーバーのインストールと設定が完了している必要があります。Apache 2.0 Web サーバーは、Solaris 10 リリースに含まれています。

SSL カーネルプロキシを使用するには、サーバーの非公開鍵と証明書が単一のファイル内に存在している必要があります。ssl.conf ファイル内に SSLCertificateFile パラメータだけが指定されている場合、そこに指定されたファイルを直接、カーネル SSL 用として使用できます。SSLCertificateKeyFile パラメータも指定されている場合、証明書ファイルと非公開鍵ファイルを 1 つにまとめる必要があります。証明書ファイルと鍵ファイルを 1 つにまとめる方法の 1 つは、次のコマンドを実行することです。


# cat cert.pem key.pem >cert-and-key.pem
  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。ksslcfg コマンドは、Network Security プロファイルに含まれています。

  2. Web サーバーを停止します。

    次のコマンドは、Web サーバーが SMF を使って実行されるように設定されているシステム上の Web サーバーを停止します。


    # svcadm disable svc:/network/http:apache2
    

    サービスがまだ変換されていない場合には、次のコマンド構文を使ってサービスを停止します。 /usr/apache2/bin/apachectl stop

  3. ksslcfg コマンドで使用するパラメータを決定します。

    オプションの完全な一覧については、ksslcfg(1M)情報を指定する必要のあるパラメータは、次のとおりです。

    • key-format-f オプションとともに使用し、証明書と鍵の形式を定義します。SSL カーネルプロキシの場合、pempkcs12 のいずれかの値を指定してください。

    • key-and-certificate-file-i オプションとともに使用し、サーバーの鍵と証明書の格納先となるファイルの場所を設定します。

    • password-file-p オプションとともに使用し、非公開鍵の暗号化に使用するパスワードが含まれているファイルの場所を選択します。このパスワードは、自動再起動を実現するために使用されます。このファイルのアクセス権は、0400 にしてください。

    • proxy-port-x オプションとともに使用し、SSL プロキシポートを設定します。標準ポート 80 とは別のポートを選択します。Web サーバーは SSL プロキシポートを待機します。

    • ssl-port – SSL カーネルプロキシが待機するポートを選択します。これは通常、443 に設定されます。


    注 –

    ssl-portproxy-port の値を NCA 用として設定することはできません。なぜなら、これらのポートは SSL カーネルプロキシ専用として使用されるからです。通常、ポート 80 が NCA 用として、ポート 8443 が proxy-port 用として、443 が ssl-port 用として、それぞれ使用されます。


  4. サービスインスタンスを作成します。

    ksslcfg コマンドで、SSL プロキシポートと関連パラメータを指定します。


    ksslcfg create -f key-format -i key-and-certificate-file -p password-file -x proxy-port ssl-port
    
  5. インスタンスが正しく作成されたことを確認します。

    次のコマンドによって報告されるサービスの状態は「online」です。


    # svcs svc:/network/ssl/proxy
    
  6. SSL プロキシポート上で待機するように Web サーバーを設定します。

    /etc/apache2/http.conf ファイルを編集し、SSL プロキシポートを定義するための行を 1 行追加します。サーバーの IP アドレスを使用した場合、Web サーバーはそのインタフェース上でのみ待機します。この行は次のようになります。


    Listen 0.0.0.0:proxy-port
    
  7. Web サーバーの SMF 依存関係を設定します。

    SSL カーネルプロキシインスタンスの起動後に Web サーバーが起動されるようにすべきです。次のコマンドは、そうした依存関係を確立します。


    # svccfg -s svc:/network/http:apache2
    svc:/network/http:apache2> addpg kssl dependency
    svc:/network/http:apache2> setprop kssl/entities = fmri:svc:/network/ssl/proxy:kssl-INADDR_ANY-443
    svc:/network/http:apache2> setprop kssl/grouping = astring: require_all
    svc:/network/http:apache2> setprop kssl/restart_on = astring: refresh
    svc:/network/http:apache2> setprop kssl/type = astring: service
    svc:/network/http:apache2> end
    
  8. Web サーバーを有効にします。


    # svcadm enable svc:/network/http:apache2
    

    SMF を使ってサービスが起動されない場合は、次のコマンドを使用します。 /usr/apache2/bin/apachectl startssl


例 2–3 SSL カーネルプロキシを使用するように Apache 2.0 Web サーバーを設定する

次のコマンドは、pem 鍵形式を使ってインスタンスを作成します。


# ksslcfg create -f pem -i cert-and-key.pem -p file -x 8443 443

ProcedureSSL カーネルプロキシを使用するように Sun Java System Web Server を設定する方法

Sun Java System Web Server 上で SSL パケット処理のパフォーマンスを改善するには、次の手順を使用してください。この Web サーバーについては、『Sun Java System Web Server 6.1 2005Q4 SP4 管理者ガイド』を参照してください。

始める前に

次の手順を使用するには、Sun Java System Web Server のインストールと設定が完了している必要があります。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。ksslcfg コマンドは、Network Security プロファイルに含まれています。

  2. Web サーバーを停止します。

    管理者の Web インタフェースを使ってサーバーを停止します。詳細は、『Sun Java System Web Server 6.1 2005Q4 SP4 管理者ガイド』の「サーバーの起動と停止」を参照してください。

  3. 暗号化フレームワークのメタスロットを無効にします。

    この手順は、カーネル SSL サービスのインスタンスが作成されるときに確実にメタスロットが無効になるようにするために必要です。


    # cryptoadm disable metaslot
    
  4. ksslcfg コマンドで使用するパラメータを決定します。

    オプションの完全な一覧については、ksslcfg(1M)情報を指定する必要のあるパラメータは、次のとおりです。

    • key-format-f オプションとともに使用し、証明書と鍵の形式を定義します。

    • token-label-T オプションとともに使用し、PKCS#11 トークンを指定します。

    • certificate-label-C オプションとともに使用し、PKCS#11 トークン内の証明書オブジェクトに含まれるラベルを選択します。

    • password-file-p オプションとともに使用し、Web サーバーが使用する PKCS#11 トークンにユーザーをログインさせるためのパスワードが含まれているファイルの場所を選択します。このパスワードは、自動再起動を実現するために使用されます。このファイルのアクセス権は、0400 にしてください。

    • proxy-port-x オプションとともに使用し、SSL プロキシポートを設定します。標準ポート 80 とは別のポートを選択します。Web サーバーは SSL プロキシポートを待機します。

    • ssl-port – SSL カーネルプロキシが待機するポートを定義します。この値は通常、443 に設定されます。


    注 –

    ssl-portproxy-port の値を NCA 用として設定することはできません。なぜなら、これらのポートは SSL カーネルプロキシ専用として使用されるからです。通常、ポート 80 が NCA 用として、ポート 8443 が proxy-port 用として、443 が ssl-port 用として、それぞれ使用されます。


  5. サービスインスタンスを作成します。

    ksslcfg コマンドで、SSL プロキシポートと関連パラメータを指定します。


    ksslcfg create -f key-format -T PKCS#11-token -C certificate-label -p password-file -x proxy-port ssl-port
    
  6. 暗号化フレームワークのメタスロットを有効にします。


    # cryptoadm enable metaslot
    
  7. インスタンスが正しく作成されたことを確認します。

    次のコマンドによって報告されるサービスの状態は「online」です。


    # svcs svc:/network/ssl/proxy
    
  8. SSL プロキシポート上で待機するように Web サーバーを設定します。

    詳細は、『Sun Java System Web Server 6.1 2005Q4 SP4 管理者ガイド』の「待機ソケットの追加と編集」を参照してください。

  9. Web サーバーを起動します。


例 2–4 SSL カーネルプロキシを使用するように Sun Java System Web Server を設定する

次のコマンドは、pkcs11 鍵形式を使ってインスタンスを作成します。


# ksslcfg create -f pkcs11 -T "Sun Software PKCS#11 softtoken" -C "Server-Cert" -p file -x 8443 443

ゾーン内での SSL カーネルプロキシの使用

SSL カーネルプロキシはゾーン内でも動作しますが、その際には次の制限があります。


例 2–5 SSL カーネルプロキシを使用するように局所ゾーン内の Apache Web サーバーを設定する

まず、局所ゾーン内で Web サーバーを停止します。大域ゾーン内で、サービスを設定するための手順をすべて実行します。apache-zone という名前の局所ゾーンに対するインスタンスを作成するには、次のコマンドを使用します。


# ksslcfg create -f pem -i /zone/apache-zone/root/keypair.pem -p /zone/apache-zone/root/pass \
    -x 8443 apache-zone 443

局所ゾーン内で、次のコマンドを実行してサービスインスタンスを有効にします。


# svcadm enable svc:/network/http:apache2

Web ページのキャッシング (リファレンス)

この節では、NCA を使用するために必要なファイルとコンポーネントについて説明します。また、NCA が Web サーバーと通信する方法についても説明します。

NCA ファイル

NCA 機能をサポートするには、いくつかのファイルが必要です。ほとんどのファイルは ASCII 形式ですが、バイナリ形式のファイルもあります。次の表に必要なファイルの一覧を示します。

表 2–1 NCA ファイル

ファイル名 

機能 

/dev/nca

NCA デバイスのパス名。 

/etc/hostname. *

サーバー上で構成されているすべての物理インタフェースについてホスト名が記述されているファイル。 

/etc/hosts

サーバーに対応付けられるすべてのホスト名が記述されているファイル。NCA が機能するには、このファイルの各エントリが、対応する /etc/hostname. * ファイル内のエントリと一致していなければなりません。

/etc/init.d/ncakmod

NCA サーバーを起動するスクリプト。このスクリプトは、サーバーのブート時に実行されます。 

/etc/init.d/ncalogd

NCA ロギングを開始するスクリプト。このスクリプトは、サーバーのブート時に実行されます。 

/etc/nca/nca.if

NCA が実行されるすべてのインタフェースが記述されているファイル。詳細は、nca.if(4) のマニュアルページを参照してください。

/etc/nca/ncakmod.conf

NCA 用のすべての構成パラメータが記述されているファイル。詳細は、ncakmod.conf(4) のマニュアルページを参照してください。

/etc/nca/ncalogd.conf

NCA ロギング用のすべての構成パラメータが記述されているファイル。詳細は、ncalogd.conf(4) のマニュアルページを参照してください。

/etc/nca/ncaport.conf

NCA で使用する IP アドレスとポートが記述されているファイル。詳細は、ncaport.conf(4) のマニュアルページを参照してください。

/usr/bin/ncab2clf

ログファイル内のデータを共通ログ形式に変換するために使用されるコマンド。詳細は、ncab2clf(1) のマニュアルページを参照してください。

/usr/lib/net/ncaconfd

ブート時に複数のインタフェース上で NCA が実行するように設定するために使用されるコマンド。詳細は、ncaconfd(1M) のマニュアルページを参照してください。

/usr/lib/nca_addr.so

AF_INET ソケットの代わりに AF_NCA ソケットを使用するライブラリ。このライブラリは AF_INET ソケットを使用する Web サーバー上で使用します。詳細は、ncad_addr(4) のマニュアルページを参照してください。

/var/nca/log

ログファイルのデータを保持するファイル。バイナリ形式のファイルなので編集できません。 

/var/run/nca_httpd_1.door

ドアパス名。 

NCA アーキテクチャー

NCA が機能するためには、次のコンポーネントが必要です。

カーネルモジュール ncakmod は、Web ページのキャッシュをシステムメモリー内に保持します。このモジュールは、ソケットインタフェースを介して Web サーバー httpd と通信します。プロトコルファミリータイプは PF_NCA です。

また、カーネルモジュールは、すべての HTTP キャッシュヒットを記録するログ機能も備えています。NCA ロギングは、HTTP データをバイナリ形式でディスクに書き込みます。NCA には、バイナリログファイルを共通ログ形式 (CLF) に変換するユーティリティーが用意されています。

次の図に、通常のデータフローと、NCA が有効になっている場合のデータフローを示します。

図 2–1 NCA サービスのデータフロー

このフロー図は、カーネル内の NCA 層を介して行われるクライアント要求のデータフローを示しています。

NCA から httpd への要求フロー

次に、クライアントと Web サーバー間の要求フローを示します。

  1. クライアントから Web サーバーに対して HTTP 要求が発行されます。

  2. ページがキャッシュ内にある場合は、カーネル内キャッシュの Web ページが返されます。

  3. ページがキャッシュ内にない場合は、Web サーバーに要求が送信され、ページが取得または更新されます。

  4. ページがキャッシュされているかどうかは、HTTP 応答で使用される HTTP プロトコルのセマンティクスによって異なります。そのあと、ページがクライアントに返されます。HTTP 要求ヘッダーに Pragma:No-cache が含まれている場合、ページはキャッシュされません。