Sun Java System Application Server Enterprise Edition 8.2 高可用性 (HA) 管理ガイド

第 4 章 負荷分散のための Web Server の設定

ロードバランサプラグインインストールプログラムは、Web サーバーの設定ファイルに対していくつかの変更を加えます。これらの変更は、Web サーバーによって異なります。また、一部の Web サーバーについては、ロードバランサを適切に動作させるために手動で設定を行う必要があります。


注 –

ロードバランサプラグインは、サポートされている Web サーバーを実行するマシン上に、Sun Java System Application Server Enterprise Edition とともにインストールすることも、または個別にインストールすることもできます。インストール手順の詳細については、『Sun Java System Application Server Enterprise Edition 8.2 Installation Guide』の第 1 章「Installing Application Server Software」 (スタンドアロンの Application Server を使用している場合) または『Sun Java Enterprise System 5 インストールガイド (UNIX 版)』 (Java Enterprise System を使用している場合) を参照してください。


Sun Java System Web Server の使用

Sun Java System Web Server では、ロードバランサプラグインをインストールすると、インストールプログラムによって必要な設定がすべて実行されます。手動での設定は必要ありません。

インストールプログラムは、Sun Java System Web Server の設定ファイルに次のエントリを追加します。

Web サーバーインスタンスの magnus.conf ファイルに、次のエントリを追加します。

##EE lb-pluginInit 
fn="load-modules"
shlib="web-server-install-dir/plugins/lbplugin/bin/libpassthrough.so" 
funcs="init-passthrough,service-passthrough,name-trans-passthrough" Thread="no"
Init fn="init-passthrough"
##end addition for EE lb-plugin

Web サーバーインスタンスの obj.conf ファイルに、次のエントリを追加します。

<Object name=default>
NameTrans fn="name-trans-passthrough" name="lbplugin" 
config-file="web-server-install-dir/web-server-instance/config/loadbalancer.xml"
<Object name="lbplugin">
  ObjectType fn="force-type" type="magnus-internal/lbplugin"
  PathCheck fn="deny-existence" path="*/WEB-INF/*"
  Service type="magnus-internal/lbplugin" 
  fn="service-passthrough"
  Error reason="Bad Gateway" 
  fn="send-error" 
  uri="$docroot/badgateway.html"
</object>

このコードでは、lbplugin は、Object を一意に識別する名前であり、web-server-install-dir /web-server-instance /config/loadbalancer.xml は、ロードバランサが動作するように設定されている仮想サーバーの XML 設定ファイルの場所です。

obj.conf ファイル内での NameTrans エントリの表示順序は非常に重要です。インストーラは NameTrans エントリを正しい場所に配置しますが、ユーザーが別の目的で obj.conf を編集している場合には、このエントリの順序を正しく保持する必要があります。特に、ロードバランサ情報は、document-root 関数の前に配置する必要があります。obj.conf ファイルの詳細については、『Sun Java System Web Server 7.0 Administrator’s Configuration File Reference 』を参照してください。

インストールが完了したら、「HTTP 負荷分散の設定」の説明に従ってロードバランサを設定します。

Apache Web Server の使用

Apache Web Server を使用するには、ロードバランサプラグインをインストールする前に、特定の設定手順を実行する必要があります。また、ロードバランサプラグインのインストールによっても、Apache Web Server に追加の変更が加えられます。プラグインをインストールしてから、追加の設定手順を実行する必要があります。


注 –

Apache 1.3 で、複数の Apache の子プロセスが動作している場合、各プロセスは固有の負荷分散ラウンドロビンシーケンスを使用しています。たとえば、実行中の Apache の子プロセスが 2 つあり、ロードバランサプラグインが 2 つのアプリケーションサーバーインスタンスに対して負荷分散する場合、最初の要求はインスタンス #1 に送信され、2 番目の要求もインスタンス #1 に送信されます。3 番目の要求はインスタンス #2 に送信され、4 番目の要求も同じくインスタンス #2 に送信されます。instance1、instance1、instance2、instance2 (以下も同じ) という、このパターンが繰り返されます。この動作は、通常予測される順序、つまり、instance1、instance2、instance1、instance2 (以下も同じ) とは異なります。Sun Java System Application Server では、Apache 用のロードバランサプラグインは Apache プロセスごとにロードバランサインスタンスをインスタンス化して、独立した負荷分散シーケンスを作成します。

--with-mpm=worker オプションを使用してコンパイルした場合、Apache 2 は動作をマルチスレッド化します。


Apache Web Server を使用するための要件

Apache Web Server の場合は、Apache のバージョンに応じて、インストールが最小要件を満たす必要があります。

Apache 1.3 の最小要件

Apache 1.3 では、ロードバランサプラグインに次のものが必要です。

ソフトウェアソースは、http://www.sunfreeware.com で入手できます。

使用する Apache のバージョンに対応する mod_ssl の正しいバージョンなど、mod_ssl の詳細については、http://www.modssl.org を参照してください。

さらに、Apache をコンパイルする前に、次の操作をしてください。


注 –

gcc 以外の C 言語のコンパイラを使用するには、その C 言語のコンパイラのパスを設定して、PATH 環境変数のユーティリティーを使用可能にします。たとえば、sh シェルでは次のようになります。export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:application-server-install-dir /lib


Apache 2 の最小要件

Apache 2 では、ロードバランサプラグインに次のものが必要です。

ソフトウェアソースは、http://www.sunfreeware.com で入手できます。

さらに、Apache をコンパイルする前に、次の操作をしてください。


注 –

gcc 以外の C 言語のコンパイラを使用するには、PATH 環境変数内でその C 言語のコンパイラと make ユーティリティーのパスを設定します。


ロードバランサプラグインをインストールする前の Apache の設定

Apache 用のロードバランサプラグインをインストールする前に、Apache Web Server をインストールします。Apache ソースをコンパイルし、SSL で動作するようにビルドする必要があります。この節では、ロードバランサプラグインが実行されるように Apache Web Server を正常にコンパイルするために必要な最小要件と手順の概要について説明します。これらの要件と手順は、ソフトウェアの Solaris および Linux バージョンにのみ適用されます。Apache の Windows バージョンについては、Apache の Web サイトを参照してください。


注 –

ここで説明する手順は、http://httpd.apache.org/docs に示されている手順から抜粋したものです。SSL 対応の Apache の詳細なインストール方法については、この Web サイトを参照してください。


ProcedureSSL 対応の Apache をインストールする

始める前に

Apache ソフトウェアがすでにダウンロードされ、圧縮解除されている必要があります。

  1. OpenSSL ソースを http://openssl.org からダウンロードし、展開します。

  2. OpenSSL をコンパイルしてビルドします。

    OpenSSL 0.9.7.e がインストールされている場合、Linux 3.0 プラットフォームではこの手順は必要ありません。Linux 4.0 ではこの手順が必要です。

    完全なインストール手順については、OpenSSL を圧縮解除したディレクトリにある INSTALL という名前のファイルを参照してください。このファイルには、OpenSSL をユーザー指定の場所にインストールする方法に関する情報が含まれています。

    OpenSSL の詳細については、http://www.openssl.org/を参照してください。

  3. Apache をダウンロードし、展開します。

    Apache は http://httpd.apache.org から入手できます。

  4. Apache をコンパイルしてビルドします。

    Apache のバージョンに応じて、次のいずれかの手順に従います。

    • Apache 1.3 の場合は、次の手順に従い、mod_ssl を使用して Apache を設定します。

      1. mod_ssl ソースを展開します。

      2. 次のように入力します。

        cd mod_ssl-2.8.n–1.3.x

      3. 次のように入力します。

        ./configure –with-apache=../apache_1.3.x --with-ssl=../openssl-0.9.8b --prefix=Apache-install-path --enable-module=ssl --enable-shared=ssl --enable-rule=SHARED_CORE --enable-module=so

      このコマンドの中で、n は使用する Apache のバージョンに対応する mod_ssl の正しいバージョン、x は Apache のバージョン番号、Apache-install-path は Apache をインストールするディレクトリです。

      使用する Apache のバージョンに対応する mod_ssl の正しいバージョンなど、mod_ssl の詳細については、http://www.modssl.org を参照してください。

    • Apache 2 の場合は、ソースツリーを設定します。

      1. cd http-2.0_x.

      2. 次のコマンドを実行します。

        ./configure --with-ssl= OpenSSL-install-path --prefix= Apache-install-path --enable-ssl --enable-so

        このコマンドの中で、x は Apache のバージョン番号、open-ssl-install-path は OpenSSL がインストールされているディレクトリへの絶対パス、および Apache-install-path は Apache をインストールするディレクトリです。

        Apache 2 サーバーが HTTPS 要求を受け入れる場合、--enable-ssl --enable-so オプションを使う必要があるだけです。

  5. Apache 2 の場合、Apache の ssl.conf および httpd.conf ファイル内に、ユーザーの環境に対応する正しい値が格納されていることを確認してください。

    • ssl.conf では、VirtualHost default:port に対して、デフォルトのホスト名とポートを、Apache 2 がインストールされているローカルシステムのホスト名とサーバーのポート番号に置き換えます。

      この変更を行わないと、ロードバランサは機能しません。Solaris Apache が起動しない可能性があり、Linux では HTTPS 要求が機能しない可能性があります。

    • ssl.conf では、ServerName www.example.com:443www.example.com を、Apache 2 がインストールされているローカルシステムのホスト名に置き換えます。

      この変更を行わないと、セキュリティー証明書がインストールされている場合に Apache を起動すると次の警告が表示されます。


      [warn] RSA server certificate CommonName (CN) hostname does NOT match server name!

      Apache 2 に対する証明書のインストールについては、「Apache 2 のセキュリティー証明書を作成する」を参照してください。

    • httpd.conf では、ServerName www.example.com:80 に対して、www.example.com を Apache 2 がインストールされているローカルシステムのホスト名に置き換えます。

      この変更を行わないと、Apache を起動したときに、システムがサーバーの完全修飾ドメイン名を特定できなかったことと、重複する VirtualHost エントリが存在することを示す警告が表示されます。


      
      

    root ユーザーとして Apache をインストールした場合は、apache-install-location/conf/httpd.conf の User と Group の設定について、注意をよく読んでください。Apache は、httpd.conf に記述されたユーザーとして実行されます。Apache の起動時にロードバランサプラグインが初期化されるようにするには、loadbalancer.xml ファイルと sun-loadbalancer_1_1.dtd ファイル (apache-install-location/conf に存在する) に、このユーザーに適切なファイルアクセス権が必要です。

  6. Linux 2.1 上の Apache の場合は、コンパイルの前に次の手順を実行します。

    1. src/MakeFile を開き、自動的に生成されるセクションの最後を見つけます。

    2. 自動的に生成されるセクションのあとの最初の 4 行のあとに、次の行を追加します。

      LIBS+= -licuuc -licui18n -lnspr4 -lpthread -lxerces-c 
      -lsupport -lnsprwrap -lns-httpd40
      LDFLAGS+= -L/application-server-install-dir/lib -L/opt/sun/private/lib

      -L/opt/sun/private/lib は、Application Server を Java Enterprise System インストールの一部としてインストールした場合にのみ必要であることに注意してください。

      次に例を示します。

      ## (End of automatically generated section)
      ## 
      CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS)
      LIBS=$(EXTRA_LIBS) $(LIBS1)
      INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES)
      LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS)
      "LIBS+= -licuuc -licui18n -lnspr4 -lpthread 
      -lxerces-c -lsupport -lnsprwrap -lns-httpd40
      LDFLAGS+= -L/application-server-install-dir /lib -L/opt/sun/private/lib
    3. 環境変数 LD_LIBRARY_PATH を設定します。

      スタンドアロンのインストールでは、これを Application Server に次のように設定します。install-dir/lib

      Java Enterprise System インストールでは、これを Application Server に次のように設定します。install-dir/lib:opt/sun/private/lib です。

      Solaris 9 を使用している場合、LD_LIBRARY_PATH/usr/local/lib を追加します。

  7. 使用しているバージョンのインストール手順で説明されている方法で、Apache をコンパイルします。

    詳細については、http://httpd.apache.org/を参照してください。

    一般的な手順は次のとおりです。

    1. make

    2. make certificate (Apache 1.3 のみ)

    3. make install

    make certificate コマンドは、セキュリティー保護されたパスワードを要求します。このパスワードは、セキュリティー保護された Apache を起動するために必要です。忘れないようにしてください。

ロードバランサプラグインインストーラによって加えられる変更

ロードバランサプラグインのインストールプログラムは、必要なファイルを、Web サーバーのルートディレクトリ内のディレクトリに展開します。

インストールプログラムは、Web サーバーインスタンスの httpd.conf ファイルに次のエントリを追加します。

<VirtualHost machine-name:443>
##Addition for EE lb-plugin
LoadFile /usr/lib/libCstd.so.1
LoadModule apachelbplugin_module libexec/mod_loadbalancer.so
#AddModule mod_apachelbplugin.cpp
<IfModule mod_apachelbplugin.cpp> 
  config-file webserver-instance/conf/loadbalancer.xml
  locale en
</IfModule><VirtualHost machine-ip-address>
  DocumentRoot "webserver-instance/htdocs"
  ServerName server-name
</VirtualHost>
##END EE LB Plugin ParametersVersion 7

Apache 2 の場合、このモジュールは mod_apache2lbpblugin.cpp です。

ロードバランサプラグインをインストールしたあとの Apache の設定

Apache Web Server は、ロードバランサプラグインと連動するために正しいセキュリティーファイルを保持している必要があります。ロードバランサは、これらのセキュリティーデータベースファイルを必要とする NSS (Network Security Service) ライブラリに依存しています。これらのセキュリティーデータベースファイルを Application Server から取得する必要があるため、Application Server のインストールは、Web Server によってアクセス可能な場所で実行される必要があります。

ProcedureApache セキュリティーファイルをロードバランサで動作するように設定する

  1. Apache-install-dir の下に sec_db_files という名前のディレクトリを作成します。

  2. セキュリティーデータベースファイルを、Application Server から作成したディレクトリにコピーします。

    domain-dir/config/*.db を、Apache-install-dir/sec_db_files にコピーします。

  3. プラットフォームに応じて、追加の設定を実行します。

    • Solaris プラットフォームの Java Enterprise System インストールの場合:

      Apache-install-dir/bin/apachectl スクリプト内の LD_LIBRARY_PATH に、パス /usr/lib/mps/secv1 を追加します。このパスは、/usr/lib/mps の前に追加する必要があります。

    • Linux プラットフォームの Java Enterprise System インストールの場合:

      Apache-install-dir/bin/apachectl スクリプト内の LD_LIBRARY_PATH に、パス /opt/sun/private/lib を追加します。このパスは、/usr/lib の前に追加する必要があります。

    • Microsoft Windows の場合:

      1. Path 環境変数に新しいパスを追加します。

        「スタート」⇒「設定」⇒「コントロール パネル」⇒「システム」⇒「詳細設定」⇒「環境変数」⇒「システム環境変数」の順にクリックします。

        Path 環境変数に Application Serverinstall-dir/bin を追加します。

      2. 環境変数 NSPR_NATIVE_THREADS_ONLY を 1 に設定します。

        「環境変数」ウィンドウで、「システム環境変数」の下の「新規」をクリックします。「変数名」に「NSPR_NATIVE_THREADS_ONLY」を、「変数値」に「1」を入力します。

      3. マシンを再起動します。

ProcedureApache 2 のセキュリティー証明書を作成する

次の手順は、Apache で HTTPS 要求をサポートするために必要となるものです。

Apache でのセキュリティー証明書の設定については、http://http.apache.org/docs/2.2/ssl/ssl_faq.html および http://www.modssl.org/docs/2.8/ssl_faq.html の手順を参照してください。次の手順は、これらの Web サイトから抜粋したものです。

  1. 適切な OpenSSL ディレクトリに移動します。

    • Solaris 10 を使用している場合は、プリインストールされている OpenSSL を使用して証明書を作成します。cd /usr/sfw/bin

    • Solaris 9 または Linux を使用している場合は、OpenSSL をインストールしたディレクトリに移動します。「SSL 対応の Apache をインストールする」の手順に従って、OpenSSL の configure および make をあらかじめ実行するようにしてください。

      環境変数 OPENSSL_CONF= OpenSSL-installation-directory/apps/openssl.cnf を設定します。

  2. 次のコマンドを実行して、サーバー証明書とキーを作成します。

    openssl req -new -x509 -keyout newreq.pem -out newreq.pem -days 365

    共通名を求められたら、Apache を実行する予定のホスト名を入力します。その他のすべてのプロンプトに対しては、環境ごとの特定の要件を満たす値を入力してください。

    このコマンドによって newreq.pem が作成されます。

  3. openssl コマンドを実行した場所から、新しく作成した newreq.pem を開きます。

  4. BEGIN CERTIFICATE で始まる行から END CERTIFICATE で終わる行までをコピーして、Apache-install-dir/conf/ssl.crt/server.crt に貼り付けます。次に例を示します。


    -----BEGIN CERTIFICATE-----
    ....
    ...
    -----END CERTIFICATE-----
  5. BEGIN RSA PRIVATE KEY で始まる行から END RSA PRIVATE KEY で終わる行までをコピーして、Apache-install-dir/conf/ssl.key/server.key に貼り付けます。次に例を示します。


    -----BEGIN RSA PRIVATE KEY-----
    ...
    ...
    ...
    -----END RSA PRIVATE KEY-----
  6. Apache-install-dir/conf/ssl.conf 内の変数 SSLCertificateKeyFile および SSLCertificateFile に正しい値が設定されていることを確認します。

  7. ServerName が www.example.com ではないことを確認します。ServerName を Apache を実行する実際のホスト名にして、サーバー証明書とキーを作成するときに入力した Common Name と一致させます。

Solaris および Linux 上での Apache の起動

一般的に、Apache は、Application Server をインストールしたユーザーと同じユーザーで起動します。次の条件にあてはまる場合は、Apache をルートとして起動する必要があります。

Apache を SSL モードで起動するには、次のコマンドのいずれかを使用します。

apachectl startssl または apachectl -k start -DSSL

必要に応じて、Apache サーバーの起動に関する最新情報を Apache の Web サイトで確認してください。

Microsoft IIS の使用

ロードバランサプラグインを使用するように Microsoft Internet Information Services (IIS) を設定するには、Windows Internet Services Manager で特定のプロパティーを変更します。Internet Services Manager は、「コントロールパネル」フォルダの「管理ツール」フォルダに置かれています。

これらの変更は、Sun Java System Application Server をインストールしてから行います。

Procedureロードバランサプラグインを使用するように Microsoft IIS を設定する

  1. Internet Services Manager を開きます。

  2. プラグインを有効にする Web サイトを選択します。

    この Web サイトは通常、デフォルトの Web サイトと名付けられます。

  3. この Web サイト上で右クリックして「プロパティー」を選択し、「プロパティー」ノートブックを開きます。

  4. 次の手順に従って、新しい ISAPI フィルタを追加します。

    1. 「ISAPI フィルタ」タブを開きます。

    2. 「追加」をクリックします。

    3. 「フィルタ名」フィールドに、「Application Server」と入力します。

    4. 「実行ファイル」フィールドに、「C:\Inetpub\wwwroot\sun-passthrough\sun-passthrough.dll」と入力します。

    5. 「了解」をクリックして、「プロパティー」ノートブックを閉じます。

  5. 新しい仮想ディレクトリを作成および設定します。

    1. デフォルトの Web サイト上で右クリックして「新規」を選択し、「仮想ディレクトリ」を選択します。

      「仮想ディレクトリの作成ウィザード」が開きます。

    2. 「エイリアス」フィールドに、「sun-passthrough」と入力します。

    3. 「ディレクトリ」フィールドに、「C:\Inetpub\wwwroot\sun-passthrough」と入力します。

    4. 「実行パーミッション」チェックボックスにチェックマークを付けます。

      ほかのすべてのパーミッション関連のチェックボックスは、チェックしないでおきます。

    5. 「完了」をクリックします。

  6. システムの PATH 環境変数に、sun-passthrough.dll ファイルのパス、Application Server install-dir/bin および Application Server install-dir/lib を追加します。

  7. IIS 6.0 ユーザーである場合は、次の手順を実行して、ロードバランサの Web サービス拡張が IIS 6 で実行されるように設定します。

    1. IIS マネージャーで、ローカルコンピュータを展開し、「Web サービス拡張」をクリックします。

    2. 「タスク」ペインで、「新しい Web サービス拡張を追加」を選択します。

    3. 拡張機能の名前に Sun-Passthrough と入力して、「追加」をクリックします。

    4. sun-passthrough.dll へのパスを C:\Inetpub\wwwroot\sun-passthrough と入力します。

    5. 「了解」をクリックします。

    6. 「拡張機能の状態を許可に設定」を選択します。

  8. IIS 6.0 ユーザーの場合、ファイル C:\inetput\wwwroot\sun-passthrough\lb.log を作成し、そのファイル上のグループ IIS_WPG に対して、NTFS の書き込み権および変更権を与えます。

    IIS 6.0 は Worker Process Isolation モードで実行されるため、IIS サーバーはグループ IIS_WPG のセキュリティー権限で実行されます。

  9. IIS ユーザーはすべて、コンピュータを再起動します。

  10. Web サーバー、ロードバランサプラグイン、および Application Server が正常に動作していることを確認します。

    Web ブラウザに以下のように入力して Web アプリケーションのコンテキストルートにアクセスします。http://web-server-name/web-application です。ここで、web-server-name は Web サーバーのホスト名または IP アドレスであり、web-applicationC:\Inetpub\wwwroot\sun-passthrough\sun-passthrough.properties ファイルに一覧表示したコンテキストルートです。


    ヒント –

    ISAPI フィルタの状態は緑色になっているはずです。フィルタの状態を確認するには、Web サイトの「プロパティー」ノートブックを開き、「ISAPI フィルタ」タブをクリックします。状態が緑色になっていない場合は、何らかの HTTP 要求を IIS HTTP ポートに送信してみてください。要求が失敗すれば、正常です。ISAPI フィルタの状態を再確認します。


自動的に設定される sun-passthrough プロパティー

インストーラは、sun-passthrough.properties 内の次のプロパティーを自動的に設定します。デフォルト値は変更可能です。

プロパティー 

定義 

デフォルト値 

lb-config-file

ロードバランサ設定ファイルへのパス 

IIS-www-root\sun-passthrough\loadbalancer.xml

log-file

ロードバランサログファイルへのパス 

IIS-www-root\sun-passthrough\lb.log

log-level

Web サーバーのログレベル 

INFO