この章では、Sun Java System Web Server 7.0 を単一ノード上およびクラスタ環境に配備する方法について説明します。この章の内容は次のとおりです。
この節では、単一ノード配備アーキテクチャーについて説明します。
次の図は、単一ノード配備設定の Web Server を表現したものです。
この図の Web Server 配備設定は、次の各要素から構成されています。
「管理サーバー」 - 管理サーバーとは、特別に構成された Web サーバーインスタンスのことです。管理サーバーには Web アプリケーションを配備できます。
「管理ノード」 - 管理ノードはサーバーファーム内のあるノード上、つまりサーバー/ホスト上に配備され、リモートの管理サーバーとの通信機能を備えています。管理サーバー内で利用可能なサーバー構成は、このノードに配備することができます。サーバーファーム内のすべての管理ノードは同種である必要があります。つまり、すべてのノードが同じオペレーティングシステムを使用し、同じハードウェアアーキテクチャーを持つ必要があります。
「構成」 - 構成とは、Web アプリケーション、構成ファイル、検索コレクションのインデックスなど、Web Server インスタンスのすべての一連の構成可能要素のことです。構成は作成、変更、または削除できます。Web Server では複数の構成を管理できます。1 つの構成に対して複数のインスタンスを作成できます。変更された構成を配備すると、その構成のインスタンスが更新されます。
config-store これは、すべての構成の格納先となるファイルシステムベースのリポジトリです。
config-store ディレクトリの下のファイルは一切編集しないでください。このディレクトリの下のファイルは、Sun Java System Web Server によって内部用として作成されます。
config-store ディレクトリの下の構成ファイルを手動で編集する必要がある場合には、wadm deploy-config コマンドを使って構成を配備してください。
このコマンドの使用方法の詳細については、『Sun Java System Web Server 7.0 CLI Reference Manual』を参照してください。
「インスタンス」 - インスタンスとは、ある特定のノード上における Web サーバーの環境のことであり、構成やログファイルを含むほか、ロックデータベースやキャッシュ、一時ファイルといったその他の実行時アーティファクトも含みます。インスタンスを管理する目的で、インスタンスの起動、停止、再起動、および動的再構成が可能となっています。
単一ノードへの Web Server の配備は、次の目的の場合に検討できます。
単純な Web または CGI アプリケーションのホスティング。
Web アプリケーションの開発やテスト。
次のフローチャートは、1 つのノード上に Web Server を配備する方法を大まかに表現したものです。
配備手順については、次の節で説明します。
単一ノード上に Web Server を配備するには、次のタスクを実行してシステムの準備を整えます。
1 つのノード上に Web Server をインストールします。
Web Server のインストール時に高速インストールオプションを選択した場合、次のデフォルトエンティティーが作成されます。
管理サーバー。
HTTP リスナーと仮想サーバーを 1 つずつ含むデフォルト構成。構成と仮想サーバーの名前はホスト名と同じになります。
デフォルト構成のインスタンス。
Web Server のインストール方法については、『Sun Java System Web Server 7.0 Installation and Migration Guide』の第 2 章「Installing the Web Server」を参照してください。
サポートされているプラットフォームやシステム要件については、『Sun Java System Web Server 7.0 リリースノート (UNIX 版)』の「対応プラットフォーム」を参照してください。
管理サーバーを起動します。
指定された SSL ポート上で管理サーバーの実行が開始されます。
1 つのノード上に Web Server を配備するには、次の手順を使用します。
デフォルト構成を使用することも、新しい構成を作成することもできます。
新しい構成を作成する場合は、構成の一意名を指定します。新しい構成は、仮想サーバーとデフォルト HTTP リスナーを 1 つずつ作成します。
管理コンソールを使って構成を作成する場合、ウィザードによって新しいインスタンスを作成するためのプロンプトが表示されます。CLI を使用する場合、create-instance コマンドを使って構成のインスタンスを明示的に作成する必要があります。
<install_dir>/admin-server/ ディレクトリの下にある config-store ディレクトリ内に、すべての構成が格納されます。
config-store ディレクトリの下のファイルは一切編集しないでください。このディレクトリの下のファイルは、Sun Java System Web Server によって内部用として作成されます。
変更済みの構成を配備します。
「クラスタ」とは複数のノードにまたがって存在する、複数のサーバーインスタンスのグループのことであり、それらすべてのインスタンスで同一の構成が実行されます。クラスタ内のすべてのインスタンスが連携して動作することで、高い可用性、信頼性、およびスケーラビリティーが実現されます。
クラスタで負荷分散を使えば、フェイルオーバーとセッションレプリケーションによって、中断されることのないサービスとセッションデータの持続性が実現されます。
この節で説明するユースケースでは、Web Server クラスタは次のエンティティーから構成されます。
1) 4 つのインスタンス (4 つの同一ノード上で稼働) |
2) 管理サーバー |
3) HTTP 要求を負荷分散するための逆プロキシ |
クラスタを設定するには、同じバージョンのオペレーティングシステムとパッチがインストールされた 2 つ以上の同一ノードが必要となります。たとえば、Solaris® 9 SPARC® オペレーティングシステムを含むマシンを選択した場合、クラスタ内のほかのマシンにも Solaris 9 SPARC をインストールする必要があります。
サポートされているプラットフォームやパッチの要件については、『Sun Java System Web Server 7.0 リリースノート (UNIX 版)』を参照してください。
次の図は、クラスタ環境を記述したものです。
この図では、ノードは非武装地帯 (DMZ) に構成されています。管理サーバーは、一般的なアクセスから制限/保護するために、ファイアウォールの背後にある武装地帯に構成されています。別のノードが逆プロキシサーバーとして構成されています。逆プロキシサーバーは、セキュリティーを強化する目的で DMZ の内側に存在しています。
Solaris のゾーン機能は、Solaris 10 オペレーティングシステム上でしかサポートされていません。
この節では、クラスタを設定し、逆プロキシを有効にして HTTP 要求の負荷分散をサポートする手順について説明します。
次のフローチャートは、クラスタの設定手順を示したものです。
ノードの 1 つに、クラスタ内の管理サーバーとして機能する Web Server をインストールします。
ほかの 3 つのノードに Web Server をインストールします。Web Server を管理ノードとしてインストールするオプションを選択します。インストール時に、サーバーにノードを登録するオプションを選択します。
管理サーバーが通信時に SSL ポートを使用していることを確認します。なぜなら、セキュリティー保護されたモードでしか、管理ノードをサーバーに登録できないからです。
管理サーバーと管理ノードがインストールされているすべてのノードのシステム日時が、同一であることを確認します。サーバーに関連付けられる証明書は、管理サーバーがインストールされたノードのシステム日時に基づいて作成されます。管理ノードのシステム日時が管理サーバーの日時よりも遅れていると、管理サーバーの証明書がまだ有効になっていないため、登録が失敗します。必然的に、その証明書は、有効期限が切れたあとも有効であるとみなされる可能性があります。
install_dir/admin-server/bin/ ディレクトリから管理サーバーを起動します。
install_dir/admin-server/bin>./startserv
管理ノードから wadm コマンド行ツールを起動します。wadm コマンド行ツールは、install_dir/bin ディレクトリに格納されています。
install_dir/bin>./wadm
各管理ノードを管理サーバーに登録しますregister-node コマンドを使って各ノードをサーバーに登録します。
次に例を示します。
./wadm register-node -user=admin --host=abc.sfbay.sun.com --port=8989 |
説明:
ノードの登録先となる管理サーバーのホスト名です。
管理サーバーの SSL ポート番号です。
管理パスワードの入力を求められます。管理サーバーの管理パスワードを入力します。
管理サーバーが管理ノードのサーバー証明書を信頼し、管理ノードが管理サーバーから提示されたクライアント証明書を信頼することによって、管理サーバーの相互認証が実現されます。ある管理ノードを登録するときに、管理サーバーによってその管理ノードのサーバー証明書が生成され、続いてその証明書がその管理ノードにダウンロードおよびインストールされます。管理ノードには、サーバー証明書の発行者の情報もインストールされます。
登録は SSL 経由でしか行えません。
ノードの登録方法については、『Sun Java System Web Server 7.0 Installation and Migration Guide』の「Registering the Administration Node From the Command-Line」を参照してください。
install_dir/admin-server/bin/ ディレクトリの startserv コマンドを使って、すべての管理ノードを起動します。
管理コンソールまたは CLI を使って、新しい構成を管理サーバー内に作成します。
新しい構成の構成名、HTTP リスナーポート、サーバー名など、構成情報を入力します。
すべてのノード上で構成のインスタンスを作成します。
すべてのノード上でインスタンスを起動します。
Web Server では、クラスタを柔軟に拡張または縮小できるようになっています。クラスタに対するインスタンスの追加や削除は、任意のタイミングで行えます。
Web Server 7.0 には、高度な組み込みロードバランサである逆プロキシが用意されています。逆プロキシは、サーバーファーム内の Web Server に対するゲートウェイになります。逆プロキシを構成すると、同じように構成された複数の Web サーバーに要求が転送されるようになります。
Web Server 7.0 で逆プロキシを有効にするには、次の手順を使用します。
逆プロキシ構成用として使用するノードに、Web Server をインストールします。
構成を作成します。例: rp。
管理コンソールで「構成」>「仮想サーバー」>「コンテンツ処理」>「逆プロキシ」タブを選択します。「新規」ボタンをクリックします。
逆プロキシの URI を入力するとともに、クラスタ内のすべてのマシンのサーバー URL をコンマで区切って入力します。
サーバー URL の入力形式は、hostname:portnumber です。
変更結果を保存します。
変更済みの構成を配備することで、構成への変更内容を適用します。
この変更済みの構成のすべてのインスタンスを起動します。
これで、HTTP 要求を負荷分散するための逆プロキシの構成が完了しました。
セッションレプリケーションとは、あるセッション内に格納されたデータを異なるインスタンス間でレプリケートするために使用される機構のことです。ただし、レプリケート対象インスタンスは、同じクラスタの一部になっている必要があります。クラスタ環境でセッションレプリケーションが有効になると、セッションデータの全体がレプリケート対象インスタンスにコピーされます。ただし、セッションレプリケーションの処理では、セッション内の直列化可能でない属性やインスタンスに固有のあらゆるデータはコピーされません。
セッションレプリケーションと負荷分散を組み合わせると、Web アプリケーションのフェイルオーバー機能を効率的に実現できます。
この節では、セッションレプリケーションの動作について詳しく説明します。
Web Server は Web 要求の終了時に、サーバー構成ファイル server.xml 内に格納されたセッションレプリケーション構成に基づいてセッションデータをコピーする必要があるかどうかを判定します。
ここで、4 つのインスタンスが 1 つのクラスタを形成しており、管理サーバー上でセッションレプリケーションが有効になっている、というユースケースを考えます。
4 つのインスタンス (A、B、C、および D) が 4 つのノード上で稼働している Web Server クラスタにおけるセッションレプリケーションの手順は、次のとおりです。
インスタンス A は D のバックアップであり、B は A のバックアップであり、C は B のバックアップであり、D は C のバックアップです。これで完全なバックアップリングが形成されます。
クラスタ内の各インスタンスは、クラスタ内のすべてのインスタンスの静的リストと、アクティブなバックアップインスタンスを追跡します。
構成によっては、各要求の終了時に、セッションデータがバックアップインスタンスに同期的に送信されます。
Web Server クラスタ環境におけるフェイルオーバーの手順は、次のとおりです。
インスタンス A で障害が発生すると、ロードバランサによってインスタンス A 宛のすべての受信 Web 要求がクラスタ内の残りのインスタンスへリダイレクトされるとともに、バックアップリングが次のように構成し直されます。
D は、自身のバックアップである A が停止したことを検出し、順序付きリスト上で A の次にあるインスタンスを、自身の新しいバックアップインスタンスとして選択します。
この場合は B が選択され、D は、B とのバックアップ接続を新たに確立します。B はこの時点で、2 つのバックアップを保持しています。A の読み取り専用バックアップと、D のアクティブなバックアップです。
これでバックアップリングが完結し、B が C にバックアップされ、C が D にバックアップされ、D が B にバックアップされるようになります。
障害の発生したインスタンス A が再度利用可能になると、A は、自身の指定されたバックアップインスタンスである B に再結合メッセージを送信することでバックアップリングに再度参加し、B とのバックアップ接続を確立します。
D が、A から正常な ping リターンを受信するか A から何らかのメッセージを受信することによって、A がオンラインになったことを検出すると、
D は、A とのバックアップ接続を確立し、B とのバックアップ接続を終了します。
Web Server 7.0 のセッションレプリケーションでサポートされていない機能は、次のとおりです。
2 つ以上のインスタンスで同時に発生した障害を復旧すること。
2 つの障害間の間隔が、復活したインスタンスが完全に復旧するのに必要な時間よりも長くなければいけません。
複数のインスタンスへのセッションのバックアップ。通常の動作では、どのセッションのコピーも 2 つしか存在しません。主要セッションとバックアップセッションです。
セッションの持続性: セッションは、フェイルオーバーの目的で別のインスタンスのメモリー内にバックアップされるだけです
Web Server がセッションレプリケーションをサポートするのは、Java Web アプリケーションに対してだけです。CGI や PHP など、Java 以外のアプリケーションを使用する場合には、セッションデータをレプリケートできません。
クラスタのセッションレプリケーションの有効化は、管理コンソール、CLI のいずれかを使って行えます。セッションレプリケーションを有効化する前に、ブラウザの Cookie が有効になっていることを確認してください。
server.xml ファイルには、セッションレプリケーションに関する情報が含まれています。セッションレプリケーションが有効化されたサンプル server.xml ファイルを、次に示します。
<cluster> <local-host>hostA</local-host> <instance> <host>hostB</host> </instance> <instance> <host>hostC</host> </instance> <instance> <host>hostD</host> </instance> <instance> <host>hostA</host> <session-replication/> </cluster>
次の各要素のデフォルト値を使用する場合、それらの要素のエントリは server.xml 構成ファイル内に含まれません。
Port number (デフォルトは 1099) |
Protocol (デフォルトは jrmp) |
Encrypted (デフォルトは false) |
Getattribute Triggers Replication (デフォルトは true) |
Replica Discovery MaxHopss (デフォルトは –1) |
Startup Discovery Timeout (デフォルトは ? |
) |
Cookie Name (デフォルトは CLUSTERSESSIONLOCATOR) |
これらのセッションレプリケーションプロパティーの詳細については、『Sun Java System Web Server 7.0 Administrator’s Configuration File Reference』を参照してください。
サーバーがセッションをレプリケートできるようにするには、Web アプリケーションでもセッションレプリケーションを有効にする必要があります。
Web アプリケーションのセッションレプリケーションを有効にするには、<web-application>/WEB-INF ディレクトリに格納された sun-web.xml 構成ファイルを変更します。
sun-web.xml で次の変更を行う必要があります。
要素 <session-manager/> を <session-manager persistence-type="replicated"> に変更します。
セッションレプリケーションが有効化されたサンプル sun-web.xml ファイルを、次に示します。
<sun-web-app> <session-config> <session-manager persistence-type="replicated"> </session-manager> </session-config> </sun-web-app>
sun-web.xml ファイルを変更したあと、Web アプリケーションをビルドし直すかアプリケーションの JAR ファイルを作成し直すことで、Web アプリケーションアーカイブ (WAR ファイル) を作成します。
すべてのインスタンスを再起動することで、その Web アプリケーションがすべてのインスタンスで利用可能になるようにします。
Web アプリケーションには、クラスタ内のすべてのインスタンスからアクセスできます。Web アプリケーションにアクセスするには、ブラウザで次のように入力します。
http://webserver-name/webapplication-name/
すべてのノードからアクセス可能なディレクトリが、配備用のアプリケーションを格納するための最良の方法です。ただし、このディレクトリには、管理サーバーからアクセスできる必要はありません。Web アプリケーションのサイズが 1M バイトを超える場合には、ディレクトリベースの配備を行うことをお勧めします。
検索コレクションを作成する場合、すべてのノードからアクセス可能な共通ディレクトリ内に検索コレクションが存在していることを確認してください。
管理サーバーは、クラスタ内のすべてのインスタンスを監視できます。Web Server の監視機能は、実行時のコンポーネントやプロセスの状態に関する情報を提供します。その用途には次のものが考えられます。
パフォーマンス障害の特定
最適なパフォーマンスを実現するためのシステム調整
容量計画の支援
障害の予測
障害発生時の根本原因の解析
|
Solaris ゾーンは、Solaris 10 のアプリケーションおよびリソース管理機能です。ゾーン環境は通常、プロセス管理、メモリー、ネットワーク構成ファイル、ファイルシステム、パッケージレジストリ、ユーザーアカウント、共有ライブラリなどのリソースから構成されますが、場合によってはインストールされたアプリケーションも含みます。ゾーンは、1 つの Solaris インスタンス内に仮想化されたオペレーティングシステム環境を作成する手段を提供します。このため、システム上のほかのアクティビティーから遮断して 1 つ以上のプロセスを実行することが可能となります。ゾーンは、物理デバイスパス、ネットワークインタフェース名、ネットワークルーティングテーブルなど、アプリケーションの配備先マシンの物理属性からアプリケーションを分離するための抽象層も提供します。この遮断により、ユーザー ID などの資格情報が何であれ、あるゾーン内で実行されているプロセスが、ほかのゾーン内で実行されているプロセスを監視したり影響を与えたりできなくなります。
ゾーンは、システムの残りの部分に影響を与えたりそうした部分と相互作用することなしに 1 つ以上のアプリケーションを実行することのできる「サンドボックス」です。
Solaris ゾーンの詳細については、『Solaris のシステム管理 (Solaris コンテナ: 資源管理と Solaris ゾーン)』(http://docs.sun.com/app/docs/doc/819-0385) を参照してください。