| Sun ONE Application Server, Enterprise Edition 入門ガイド |
第 1 章
Sun ONE Application Server 7、Enterprise Edition の概要この章では次の項目について説明します。
Sun ONE Application Server についてSunTM Open Net Environment (ONE) Application Server 7、Enterprise Edition は、アプリケーションサービスや Web サービスを広く配備する場合に適した高性能な JavaTM 2 Platform、Enterprise Edition (J2EETM) プラットフォームを提供します。Sun ONE Application Server 7 は、検証済みの HTTP サーバーインフラストラクチャ、Java Message Service (JMS) をはじめとする業界標準コンポーネントと、Java Web Services Developer Pack ソフトウェアに付属の J2EE バージョン 1.3、Java 2 Platform, Standard Edition バージョン 1.4、Java API for XML (JAX) による 最新の J2EE および Web サービス仕様を基盤としたモジュールアーキテクチャを採用しています。また、クラスタリング、ロードバランス、および HTTP セッションフェイルオーバーも提供します。機能の詳細については、『Sun ONE Application Server 製品の概要』を参照してください。
Application Server インスタンスは、Application Server の配備の基本となります。各インスタンスには、それぞれに専用のディレクトリ構造、設定、配備アプリケーションがあります。各サーバーインスタンスには、J2EE プラットフォームの Web および EJB コンテナも組み込まれています。Sun ONE Application Server にも、検証済みの高性能な HTTP サーバーが組み込まれています。オブジェクトリクエストブローカ (Object Request Broker (ORB)) モジュールにより、RMI-IIOP を使って EJB を呼び出すことができます。
アプリケーションは、バックエンドシステムにアクセスするため、J2EE コネクタアーキテクチャに対応したリソースアダプタ、サードパーティのリソースアダプタ、組み込みの JMS プロバイダまたはサードパーティのプロバイダに加えて、一般的なサードパーティ JDBC ドライバを組み合わせて使用します。分散トランザクションの範囲内であれば、バックエンドシステムへのアクセスは、すべて Java で記述された内蔵のトランザクションマネージャを使って管理できます。
管理サーバーは、コア管理アプリケーションと SNMP エージェントを実行する、特殊なサーバーインスタンスです。リモート管理は、すべて管理サーバー経由で行われます。管理サーバーには、コマンド行や Web ブラウザベースの管理クライアントから HTTP を使用するか、セキュリティ保護された HTTPS を使って安全に直接アクセスします。
図 1-1 に、アプリケーションサーバーインスタンスの詳細を示します。アプリケーションサーバーインスタンスは、「Enterprise Edition 機能について」に記載されているクラスタリング、ロードバランス、およびセッション持続性機能の基本的要素です。
図 1-1 Sun ONE Application Server インスタンス
Web サーバーのプラグイン (ロードバランサプラグインなど) を使用すると、1 つ以上のファイアウォール層によって保護された非武装地帯 (DMZ) に置かれた 1 つまたは複数の Web サーバーの背後に、アプリケーションサーバーを配備できます。フロントエンドの Web サーバー層は、このプラグインを使って、インターネットから受信した HTTP/HTTPS トラフィックをバックエンドのアプリケーションサーバー層にあるアプリケーションサーバー (複数可) に送信します。
さまざまなクライアントアプリケーションが、アプリケーションサーバーに配備されたビジネスサービスにアクセスできます。Web サービスクライアントとブラウザベースのクライアントは、HTTP または HTTPS を使って、Web サービス、サーバー側の終点、および J2EE Web アプリケーションにアクセスできます。
図 1-1 では、単一の管理ドメインを示しています。管理ドメインを使用すると、同じインストールイメージを再使用する、複数の完全に別個のアプリケーションサーバーの実行時設定を定義できます。それぞれの管理ドメインには管理サーバーがあり、この管理サーバーが 1 つまたは複数のアプリケーションサーバーインスタンスを制御します。このチュートリアルでは、製品のインストール時に設定される単一の管理ドメインと、クラスタ内の複数のサーバーインスタンスを扱います。
Enterprise Edition 機能についてアプリケーションサーバーインスタンスをクラスタにグループ化でき、Web サーバーとロードバランサとともに、ロードバランスと HTTP セッションの持続性を提供できます。このマニュアルには、次の節で説明する Enterprise Edition 機能の使用方法が記載されています。
クラスタリング
クラスタは、1 つの論理エンティティとして機能する、Application Server インスタンスの集まりです。クラスタ内の各アプリケーションサーバーインスタンスには、同じ設定と同じアプリケーションが配備されています。
Sun ONE Application Server のクラスタを使用すると、次のことを実現できます。
- 高可用性。クラスタ内のアプリケーションサーバーに対し、フェイルオーバーによる保護を実現します。1 つのアプリケーションサーバーインスタンスが停止した場合、別のアプリケーションサーバーインスタンスが、利用できなくなったサーバーが処理していたセッションを引き受けます。Sun ONE Application Server は、HTTP セッション内の HTTP セッションと EJB 参照のフェイルオーバーをサポートしています。
- スケーラビリティ。クラスターへのアプリケーションサーバーインスタンスの追加によって、システム全体の容量が増加します。Sun ONE Application Server のロードバランサは、クラスタ内の稼働しているアプリケーションサーバーインスタンスに要求を分散します。サービスを中断せずに、アプリケーションサーバーインスタンスをクラスタに追加できます。
クラスタ内のアプリケーションサーバーインスタンスは、異なるマシン上でも同じマシン上でもホストすることができます。つまり、クラスタ内の複数のマシン上にあるアプリケーションサーバーインスタンスをグループ化できます。このマニュアルのデフォルトの設定では、同じマシン上の 2 つのインスタンスになっています。
クラスタリングの詳細については、『Sun ONE Application Server 管理者ガイド』を参照してください。
ロードバランス
ロードバランスの目的は、複数の Sun ONE Application Server インスタンスにかかる作業負荷を均等に分散させることです。Sun ONE Application Server に付属のロードバランサプラグインを使用するか、サードパーティのハードウェアおよびソフトウェアのロードバランサを使用することができます。このマニュアルでは、ロードバランサプラグインを使って説明します。
Sun ONE Application Server のロードバランサは、スティッキーなラウンドロビンアルゴリズムを使用して、受信した HTTP および HTTPS 要求のロードバランスを行います。新しい HTTP 要求がロードバランサプラグインに送られると、その要求は、単純なラウンドロビンスキームに基づいてアプリケーションサーバーインスタンスに転送されます。その後、この要求は、Cookie を使用するか、または明示的な URL の書き換えによって、この特定のアプリケーションサーバーインスタンスに「スタック」されます。
ロードバランサプラグインは最初に、スティッキー情報から、以前に要求が転送されたインスタンスを判別します。ロードバランサプラグインは、そのインスタンスが正常に稼働していることがわかると、要求をその特定のアプリケーションサーバーインスタンスに転送します。
特定のセッションに対するすべての要求は同じアプリケーションサーバーインスタンスに送信されるため、セッションデータは、クラスタ内のすべてのインスタンスに分散されるのではなく、単一の Application Server のキャッシュに保存されます。このキャッシュは、スティッキーなラウンドロビンによりパフォーマンスが大幅に向上することを意味します。通常これは、純粋なラウンドロビンを使って取得できる、より均等な分散による利点を無効にします。
ロードバランスの詳細については、『Sun ONE Application Server 管理者ガイド』を参照してください。
セッション持続性
セッション持続性の機能によって、Sun ONE Application Server のインスタンスやマシンそのものに不具合が発生した場合でも、HTTP/HTTPS の要求は、別のサーバーに引き継がれることが保証されます。Sun ONE Application Server は、HTTP セッションの持続性と、HTTP セッション内の EJB 参照のフェイルオーバーをサポートしています。
高可用性データベース (HADB) は、Web アプリケーションに高可用性を提供する持続性ストアとして、Sun ONE Application Server にバンドルされています。高可用性データベースの詳細については、「高可用性データベース」を参照してください。
この節には次の項目があります。
セッション持続性のタイプについて
Sun ONE Application Server は、ha、file、および memory という、3 つのタイプの持続性をサポートしています。
- ha 持続性タイプは、HADB のセッション情報を格納します。ha 持続性タイプは、フェイルオーバー機能を必要とする本稼働環境に対応しています。
- file 持続性タイプはセッション情報を定期的にファイルに格納しますが、インスタンスが利用できなくなったときにデータが失われることがあります。file 持続性タイプは、フェイルオーバー機能を必要とする本稼働環境には対応していませんが、アプリケーションのテストのために開発環境で使われることがあります。
- memory 持続性タイプは、サーバーインスタンスがシャットダウンした場合に、ファイル内のセッション情報を格納します。しかし、予期しないシャットダウンの場合はセッション情報を格納しません。memory 持続性タイプは、フェイルオーバー機能を必要とする本稼働環境には対応していません。
このマニュアルの例では、ha セッション持続性のみ説明しています。その他のタイプのセッション持続性の設定と使用の詳細については、『Sun ONE Application Server 管理者ガイド』を参照してください。
セッション持続性の設定について
Sun ONE Application Server をインストールして、clsetup コマンドを実行すると、セッション持続性情報がデフォルト値に設定されます。ただし、パフォーマンス、信頼性、高可用性の特定のニーズに合うように、デフォルト値を変更することができます。
たとえば、データを保存するたびに、セッション全体を格納することができます。また、セッションが変更された場合は、セッションのみを格納できます。つまり、セッションの変更された属性のみが格納されるように、持続性を設定することもできます。
同様に、持続性の頻度を選択できます。たとえば、それぞれの Web 要求のあとにセッションを格納するように選択して、更新されたセッションの状態の高可用性と信頼性を提供したり、指定した時間間隔のあとにセッションを格納するように選択して、パフォーマンスを向上させることができます。
セッション持続性の各種設定オプションの詳細については、『Sun ONE Application Server 管理者ガイド』を参照してください。
シングルサインオンセッション情報について
単一のアプリケーションサーバーインスタンスでは、Web アプリケーションで 1 度認証されると、同じインスタンス上で実行中のその他の Web アプリケーションに対して個別に再度認証を要求されません。これを、シングルサインオンといいます。
この機能で、セッションがクラスタ内の別のインスタンスにフェイルオーバーしたときでも動作を続けるためには、シングルサインオン情報が HADB に継続して置かれている必要があります。この持続性は、アプリケーションサーバーインスタンスの高可用性が有効なときに有効です。高可用性は、clsetup コマンドを実行すると、自動的に設定されます。
高可用性データベース
高可用性データベース (HADB) はセッション情報の格納に使われ、HTTP セッションが持続できるようにします。高可用性は、ハードウェアやソフトウェアの障害によって予定外の停止があっても、引き続きシステムを使用できることを意味します。HADB は JDBC 準拠のデータベースであり、「Always-On (常時配信)」テクノロジに基づいています。HADB は、99.999% を超えるデータの有効性を実現できることから、高い負荷が継続するアプリケーションサーバーの商用環境において、すべての種類の HTTP セッションの状態を持続的に処理するための、理想的なプラットフォームを提供します。
HADB は、データの分割とレプリケーションによって、このようなデータの可用性を提供します。このデータベース内のすべてのテーブルは、フラグメントというほぼ同じサイズのサブセットを作成するように区切られています。この分割のプロセスは、データベースのノード間のデータを分割して均等に分散させる、ハッシュ機能に基づいています。それぞれのフラグメントは、データベースのミラーノードに、2 回格納されます。これにより、データの耐障害性と高速回復が保証されます。また、ノードが使用不能になるか、あるいはシャットダウンした場合は、そのノードが再度アクティブになるまで、予備のノードが代行します。
高可用性の機能を実装していないシステムでは、予定外の停電が発生した場合など、該当する Web コンテナから別なコンテナへのフェイルオーバーが実行されている間、HTTP セッションの状態が失われてしまいます。しかし、HADB に実装されたセッション持続性のメカニズムを使用することによって、このような状態を事前に回避できます。HADB では、分割されているが確実に統合されている持続性ストレージ層の中で、すべての状態情報の格納や検索が可能だからです。
クラスタリングのシナリオの例
次の図で、1 つのロードバランサプラグイン、HADB を使って HTTP セッションデータを格納するように設定された 2 つの Sun ONE Application Server インスタンス、およびアプリケーションデータを格納するリモートデータベース管理システム (RDBMS) を持つ Web サーバーで構成される、単純なクラスタリングのシナリオを示します。実際の配備とは異なる場合があることに注意してください。たとえば、ロードバランサプラグインの代わりにサードパーティのロードバランサを使用することもできます。
図 1-2 クラスタリングのシナリオの例
要求が処理される手順は、次のとおりです。
- 要求を受信したクライアントは、HTTP 要求を Web サーバーが処理する URL に送信します。この Web サーバーは、ロードバランサプラグインが着信 HTTP 要求を処理できるように設定されています。
- そのあと、ロードバランサプラグインは要求を、クラスタ内の Sun ONE Application Server インスタンスの 1 つに転送します。プラグインは、ターゲットインスタンスを特定するためにスティッキーなラウンドロビンのロードバランサを使用します。
- ターゲットインスタンスは、ロードバランサプラグインから転送された要求を受信し、HTTP セッションデータを HADB、J2EE アプリケーションデータを RDBMS に格納して、HTTP セッションを開始します。アプリケーションによるクライアントの処理の進捗状況に従って、HTTP セッションデータが更新されて HADB に格納され、RDBMS のアプリケーションデータが更新されます。
- インスタンスに、システムクラッシュなどの問題が発生すると、ロードバランサは、インスタンスが要求への応答を中止したことを検出します。それ以降に要求が届くと、ロードバランサは、その要求をクラスタ内の正常なインスタンスに転送します。
- 新しいターゲットインスタンスはフェイルオーバーした HTTP セッション情報を HADB から受信し、クライアントの要求に対する応答を続けます。このため、クライアントはセッションデータを失うことなく HTTP セッションを完了できます。
Sun ONE Application Server の配備のシナリオの詳細については、『Sun ONE Application Server システム配備ガイド』を参照してください。
Application Server の設定と管理に使用するツールSun ONE Application Server には、設定と管理に使用できる以下のツールが用意されています。これらのツールを使って、サーバーの起動と停止や、さまざまなその他の機能を実行できます。特定の設定作業を行うために使用する一部のツールについては、その使用方法がチュートリアルに記載されています。
- asadmin ユーティリティ: asadmin ユーティリティは、単一のアプリケーションサーバーインスタンスまたは管理ドメインでの管理タスクの実行に使用できる、コマンド行インタフェースです。
- cladmin コマンド: cladmin コマンドにより、クラスタ内のすべてのアプリケーションサーバーインスタンスで、特定の asadmin コマンドが同時に実行されます。cladmin コマンドを使用すれば、クラスタ内のすべてのインスタンスが同じように設定されます。このため、可能な限り、asadmin ではなく cladmin を使用してください。cladmin はすべての asadmin コマンドをサポートしているわけではありません。
- 管理インタフェース: 管理インタフェースは、管理サーバーと個々のアプリケーションサーバーインスタンスの設定に使用できる、Web ベースのユーザーインタフェースです。また、個々のアプリケーションサーバーインスタンスのログファイルの表示にも使用できます。
- clsetup コマンド: clsetup コマンドにより、HADB データベースの初期設定など、クラスタを簡単に設定することができます。clsetup コマンドの詳細については、『Sun ONE Application Server インストールガイド』を参照してください。