Comments
Description
Transcript
のシステム設計 WESB 1 ISE. Web
06. WESBのシステム設計 WESBのシステム設計 WESBのシステム設計 ISE. Webインフラストラクチャー Webインフラストラクチャー 中島 由貴 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop 1 06. WESBのシステム設計 WESBのシステム設計 Disclaimer 当資料で提供する技術情報は、各製品の出荷前コードに基づくものを含みま す。 この資料は日本アイ・ビー・エム株式会社ならびに 日本アイ・ビー・エム システムズ・エンジニアリング株式会社の正式なレビューを 受けておりません。 当資料は、資料内で説明されている製品の仕様を保証するものではありません。 資料の内容には正確を期するよう注意しておりますが、この資料の内容は2006 年11月現在の情報であり、製品の新しいリリース、PTFなどによって動作、仕様 が変わる可能性があるのでご注意下さい。 今後国内で提供されるリリース情報は、対応する発表レターなどでご確認くださ い。 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop 2 06. WESBのシステム設計 WESBのシステム設計 このセッションの目的 ミッション・クリティカルな環境におけるWESBシステム設計に必要な 知識の習得 WESBシステム・トポロジー設計に影響するWESBコンポーネントを理解する WESBコンポーネントの高可用性・拡張性機能を理解し、WESBシステム・ト ポロジー設計に必要な知識を習得する WESBシステム構築の注意点を確認する 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop 3 06. WESBのシステム設計 WESBのシステム設計 Agenda 1.WESBシステム設計の考慮点 2. WESB高可用性、拡張性機能 3. トポロジー設計 4. 導入・構成のHints&Tips 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop 4 06. WESBのシステム設計 WESBのシステム設計 1.WESBシステム設計の考慮点 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop 5 06. WESBのシステム設計 WESBのシステム設計 非機能要件の検討 機能要件と非機能要件 WESBのインフラ設計においては、非機能要件も重要 サービス、サービス・クライアントとの通信形態の定義も重要 機能要件/業務要件 アプリケーション 要件 データ要件 接続先の種類もインフラ設計に 影響 この章では、WESBトポロジー の可用性、拡張性が中心 非機能要件 性能・品質要件 制約 9パフォーマンス 9信頼性(RASIS) 9セキュリティー 9運用管理 9予算 9スケジュール 9スキル 9配置場所/環境 9既存システム 9準拠する標準/規約 WESBはWASをベースとしているので、WASと同様の非機能要件の考慮が必要 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop インフラ設計においては、機能要件/業務要件だけでなく、非機能要件も重要になります。こ の章では、WESBトポロジーを検討するうえで重要となる可用性、拡張性を中心にお話します。 また、WESBは、複数のサービス、サービス・クライアントを柔軟に接続し、その仲介者となり ますので、その接続先のサービス、サービス・クライアントとの通信形態もインフラ設計に大き な影響を与えます。事前にどのような種類のサービスやサービス・クライアントと接続するのか を定義することが重要です。 尚、WESBはWASをベースとしていますので、WASと同様の非機能要件の考慮が必要となります。 WASのインフラ設計については、下記のワークショップ資料もご参照ください。 DeveloperDomainワークショップ資料「WebSphere Application Server V6による基幹システム設 計ワークショップ資料」-「インフラ設計」 http://www-06.ibm.com/jp/software/websphere/developer/was/wv6/enterprise/ws/ 6 06. WESBのシステム設計 WESBのシステム設計 WESBのコンポーネント WESBにおいて管理が必要になるコンポーネント WESBはWAS+SCA CEIも利用することが可能 SCAの 機能 管理コンソール Import Component Messaging Engines Export Component SCA.SYSTEM bus SCA.APPLICATION bus Mediation Component EVENT bus Common Base Event Browser CEI Server CEIの 機能 WESB server 業務DB LoggingDB MEDB1 MEDB2 MEDB3 EVENTDB 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop 上記は、WESBに含まれているコンポーネントです。WESBは、WASの機能プラスSCAのランタイム としての機能を持っています。SCAの非同期通信においては、メッセージング・エンジンを使用 しますので、メッセージング・エンジンと、そのデータストアとして使用するデータベースの管 理が必要です。また、WESBはCEI (Common Event Infrastructure) の機能を使用することも可能 です。CEIもメッセージング・エンジンを使用しますので、メッセージング・エンジンと、デー タストアの管理が必要です。 つまり、WESBを使用する場合には、アプリケーション・サーバーだけでなく、メッセージン グ・エンジンとそのデータストアであるデータベースを意識して管理することが重要です。 スタンドアロン・サーバーでは、データベースは自動的にcloudscapeデータベースがセット アップされます。スタンドアロン・サーバーでは、すべてのコンポーネントが1つのJVM上で稼動 します。ただし、高可用性や拡張性を意識した本番環境における、複数台のサーバーを使用した 環境においては、アプリケーション・サーバーのクラスタリングだけでなく、メッセージング・ エンジンの高可用性や、cloudscape以外のデータベースを使用したデータベースの高可用性を検 討する必要があります。 7 06. WESBのシステム設計 WESBのシステム設計 使用するコンポーネントの検討 通信方式の相違 同期・非同期の通信方式の違いにより、使用されるコンポーネントが異なる WESBのシステム設計は、メディエーション・モジュールの設計と関連 CEIの利用の有無 Web Service Client Web Service EAR Mediation Module Service Component Export JMS Mediation Flow Component Import Service Componet Java Component JMS Import EIS EIS ・Exportの種類 ・同期・非同期の 通信形態 コンポーネントが使用 するリソース(DB、 JMS) コンポーネント接続の 同期・非同期の通信 形態 ・Importの種類 ・同期・非同期の 通信形態 Eventの生成の有無 Event通知の方法(同 期・非同期) 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop では、どのような場合に各コンポーネントを使用するのでしょうか。 WESBの各コンポーネントの使用の有無は、サービス・クライアント、サービス、また、モ ジュール間の通信方式と、CEIの使用の有無によって決まります。 通信方式としてJMSなどの非同期通信を使用する場合には、メッセージング・エンジンを使用 します。したがって、メディエーション・モジュールのバインディングの設計とWESBのシステム 設計は依存関係があります。 また、CEIを使用したEventの管理を行う場合には、Event関連のコンポーネントを設計・管理 が必要です。 8 06. WESBのシステム設計 WESBのシステム設計 同期通信の通信方式 SOAP/HTTP通信 SCA(同期)通信 WESBサーバー1 WASサーバー1 Web Service SOAP/HTTP Mediation Module binding Web Service Client SOAP/HTTP Mediation Flow Component WESBサーバー2 Mediation Module SCA binding (同期) Mediation Flow Component IIOP Web Service SOAP/HTTP binding WASサーバー2 Web Service SOAP/HTTP 同期通信では、バスは使用しない 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop SOAP/HTTP通信の場合は、エクスポート作成時に、Webサービス・クライアントが使用するWSDL、 リクエストを受け付けるルーター・サーブレットが生成されます。また、インポート作成時に、 呼び出しを行うサービスのWSDLから必要なEJB (Stateless Session Bean) が生成されます。 メディエーション・モジュール間の通信に使用されるSCA (同期) 通信を行う場合は、IIOPを 使用しての同期通信を行います。 SOAP/HTTP通信やSCA (同期)通信を行う場合は、SCAバスを使用しませんので、バス構成を考慮 する必要はありません。 9 06. WESBのシステム設計 WESBのシステム設計 非同期通信の通信方式 SOAP/JMS通信 JMS通信 非同期通信では、バスを使用 SCA(非同期)通信 WESBサーバー1 WESBサーバー2 Mediation Module WASサーバー1 JMS Client JMS binding Mediation Flow Component Mediation Module SCA binding (非同期) Mediation Flow Component Web Service SOAP/JMS binding WASサーバー2 SOAP/JMS Web Service JFAP ME1 ME2 送信宛先 受信宛先 ME3 ME4 送信宛先 受信宛先 受信宛先 受信宛先 SCA.SYSTEM or APPLICATION Bus 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop SOAP/JMS、JMS、SCA(非同期)通信の場合は、バスを使用した非同期通信が行われます。 SOAP/JMS通信で必要な宛先は、メディエーション・モジュールのインストール時にSCA.SYSTEM バス上に自動生成されます。SOAP/JMSにおける受信宛先は、事前に作成するのではなく、リクエ ストごとに生成・削除されるという特徴があります。 SCA (非同期) 通信で必要な宛先も、メディエーション・モジュールのインストール時に SCA.SYSTEMバス上に自動生成されます。 SCA (非同期) 通信における受信宛先は、永続キューと して作成されます。 JMS通信では、エクスポート、インポートのどちらにおいても、JMSアプリケーションやWMQの キューといったメッセージング・リソースと接続するための送信/受信宛先をSCA.APPLICATIONバ ス上に作成する必要があります。 各通信方式の詳細は下記ワークショップ資料が参考になりますので、ご参照ください。 DeveloperDomainワークショップ資料「WebSphere Enterprise Service Bus V6アナウンスメン ト・ワークショップ資料」-「WebSphere ESBシステム構成」 http://www-06.ibm.com/jp/software/websphere/developer/bi/wesb/v6/workshop/ 10 06. WESBのシステム設計 WESBのシステム設計 2.WESB高可用性、拡張性機能 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop 11 06. WESBのシステム設計 WESBのシステム設計 高可用性・拡張性を検討するコンポーネント SCA稼動環境として、高可用性・拡張性を検討するコンポーネント WESBアプリケーション・サーバー メッセージング・エンジン データベース WESB server Mediation Component Import Component 非同期通信に おいて必要 WESB (WAS) server Messaging Engines SCA.SYSTEM bus SCA.APPLICATION bus Export Component MEDB1 MEDB2 CEIやAdapterを使用する場合は、 関連するコンポーネントについて別途検討が必要 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop WESBの中心機能であるメディエーション・モジュール(SCAアプリケーション)の稼働環境の高 可用性、拡張性を検討する場合、下記3つのコンポーネントを考慮する必要があります。 まず、メディエーション・モジュールの実行環境としての、WESBのアプリケーション・サー バーです。メディエーション・モジュールの高可用性・拡張性は、通常のJ2EEアプリケーション と同様にWASのクラスタリング機能を用いて実現します。 エクスポート、インポート、また、メディエーション・モジュール内において、非同期通信を 行う部分がある場合には、メッセージング・エンジンの高可用性・拡張性を検討する必要があり ます。メッセージング・エンジンの高可用性・拡張性については、WASのSIBusのクラスタリング 機能で実現します。 また、メッセージング・エンジンを使用する場合には、メッセージング・エンジンごとにデー タストアとして、データベースを使用します。したがって、データベースの高可用性・拡張性も 検討する必要があります。 尚、WESBのCEIやアダプターを使用する場合には、関連するコンポーネントの高可用性、拡張 性については、別途検討が必要です。 12 06. WESBのシステム設計 WESBのシステム設計 WESBサーバー・クラスタリング WAS NDが提供するアプリケーション・サーバーのクラスタリング機能 WESBサーバー上で稼動するアプリケーション(メディエーション・モジュール)の高可用性・拡張性を 実現 Web WLM HTTPリクエストに対する負荷分散・障害検知を実施 負荷分散・障害検知は、Splayerが実施 トポロジー設計においては、Splayerの配置の検討が必要 EJB WLM EJBリクエストのIIOP通信の負荷分散・障害検知を実施 負荷分散・障害検知は、EJBクライアントが実施 クラスター1 クラスター2 Web WLM Container1 Plug-in EJB Container1 Application Server Splayer (Webサーバー, 負荷分散装置) Web WLM Application Server EJB WLM Web Container2 SOAP/HTTP EJB Container2 WLM Plug-in Application Server IIOP Application Server 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop まず、メディエーション・モジュールの実行環境の高可用性、拡張性を実現するWAS NDのクラ スタリング機能について説明します。 クラスタリングは、同一のアプリケーションを、複数のアプリケーション・サーバーの間で処 理を分散し、障害発生時には、正常なアプリケーション・サーバーにのみリクエストを割り振る 機能です。(WorkLoad Management = WLMと呼ばれることもあります。) これにより、リクエスト を送信するクライアントからは、1つのアプリケーションに対する、パフォーマンス、可用性が 向上します。 クラスタリング機能を使用することにより、メディエーション・モジュールの処理の分散と、 SOAP/HTTP通信などの同期通信の負荷分散、障害検知を行うことができます。 クラスタリングを実施すると、Webコンテナーに対するWLM機能とEJBコンテナーに対するWLM機 能が提供されます。 Web WLM機能はWebコンテナーに対する負荷分散・障害検知を実施します。これを使用して、 SOAP/HTTP通信におけるルーター・サーブレットへの負荷分散を実施します。尚、負荷分散・障 害検知は、Webサーバー・プラグインやEdgeなどのSplayerが実施しますので、トポロジー設計に おいては、Splayerの配置の検討が必要になります。 EJB WLM機能はリモートEJBクライアントからのEJBに対するアクセスの負荷分散・障害検知を 提供する機能です。SCA (同期) 通信のIIOP通信の負荷分散を実施します。 13 06. WESBのシステム設計 WESBのシステム設計 MEクラスタリング-フェイルオーバー WAS NDが提供するメッセージング・エンジンのフェイルオーバー機能 バス・メンバーとしてクラスターを追加することにより、メッセージング・エンジンの 高可用性を実現 クラスター内の1つのアプリケーション・サーバーでメッセージング・エンジンが稼 動 稼動系と待機系のMEは同じデータ クラスター1 ストアを使用 ME HAマネージャーの機能により、障害検知、 フェイルオーバー Application Server data store ME Application Server Bus 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop 次に、メッセージング・エンジンの高可用性機能について説明します。 メッセージング・エンジンのフェイルオーバーは、WAS NDのHAマネージャー機能により提供さ れる、メッセージング・エンジンの高可用性機能です。 メッセージング・エンジンのフェイルオーバーを構成するためには、バス・メンバーとしてク ラスターを登録します。クラスター内の1つのアプリケーション・サーバーでメッセージング・ エンジンが起動し、他のアプリケーション・サーバー(クラスター・メンバー)ではメッセージン グ・エンジンが待機状態となります。 稼動中のメッセージング・エンジンに障害が発生すると、他の待機状態のメッセージング・エ ンジンが起動し、処理を引き継ぎます。 稼動系と待機系のメッセージング・エンジンは同じデータストアを利用し、障害発生時には構 成情報やパーシスタント・メッセージを引き継ぎます。 このメッセージング・エンジンのフェイルオーバー機能は、InfoCenterでは、「サービス統合 の高可用性」と表記されています。 14 06. WESBのシステム設計 WESBのシステム設計 MEクラスタリング-ワークロード共用 WAS NDが提供するメッセージング・エンジンの負荷分散機能 バス・メンバーのクラスターにメッセージング・エンジンを追加することにより、メッ セージング・エンジンの拡張性を実現 ひとつの宛先に対して複数のメッセージング・エンジンで処理を実施 クラスター1 ME1 JMS Client application ME3 ME2 data store1 Application Server 負荷 分散 ME1 ME2 data store2 Application Server Bus 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop 次に、メッセージング・エンジンの負荷分散機能について説明します。 メッセージング・エンジンのワークロード共用も、WAS NDのHAマネージャー機能により提供さ れます。 メッセージング・エンジンのワークロード共用を構成するためには、バス・メンバーのクラス ターにメッセージング・エンジンを追加します。つまり、バス・メンバーとして、同一のクラス ターを2回追加します。 メッセージング・エンジンのワークロード共用機能を使用することで、1つの宛先に対して複 数のメッセージング・エンジンを紐付けて負荷分散させることが可能です。 「サービス統合のワークロード共用」は、InfoCenterでは「宛先の区画化」、「宛先のパー ティショニング」とも表記されています。 15 06. WESBのシステム設計 WESBのシステム設計 3.トポロジー設計 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop 16 06. WESBのシステム設計 WESBのシステム設計 もっとも簡単な構成(単体構成) 一つのアプリケーション・サーバー上ですべての機能を稼動させるこ とも可能 高可用性・拡張性は実現されない WESBのプロファイル作成時に、スタンドアロンのアプリケーション・サーバーを選 択する WASサーバー1 SOAP/HTTP Client SOAP/JMS Client WESBサーバー Mediation Module Mediation Flow Component JMS Client SCA.SYSTEM Bus SCA.APPLICATION Bus Cloudscape WASサーバー2 SOAP/HTTP Web Service SOAP/JMS Web Service JMS Service ME1 ME2 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop ここからは、実際のWESBサーバーのトポロジー構成について検討します。 まず、もっとも簡単な構成として、単体構成でのWESBサーバーについて紹介します。 WESBのプロファイル作成時に、スタンドアロンのアプリケーション・サーバーを選択すること で、この構成を作成することができます。 この構成では、WASのクラスタリング機能を使用していませんので、高可用性や拡張性は実現 されません。 高可用性や拡張性が実現されませんので、実稼働環境としてはお勧めできませんが、スタンド アロンのアプリケーション・サーバーの構築時には、メッセージング・エンジンのデータストア などにデフォルトで組み込まれているcloudscapeのデータベースを使用して自動的にメッセージ ング・エンジンの設定が行われますので、アプリケーションの検証環境などにおいてはお手軽に 環境を構築することが可能です。また、WID上のWESBのテスト・サーバーもスタンドアロンの WESBサーバーが使用されています。したがって、バス環境の設定など、特別な設定を行わなくと も簡単に使用することが可能です。 17 06. WESBのシステム設計 WESBのシステム設計 メディエーションとサービスの分離は必須か サービスやクライアントはWESBサーバーに同居することも可能 WESBはWAS NDの機能をすべて持っているので、WAS ND上で稼動するア プリケーションは、すべてWESB上でも稼動可能 メディエーション処理を補完するロジックを、サービスとして切り出す場合などは、 同一サーバーで稼動させても良い WASサーバー SOAP/HTTP Client SOAP/JMS Client SCA Service WESBサーバー SOAP/HTTP Web Service Mediation Module Mediation Flow Component JMS Client SCA.SYSTEM Bus SCA.APPLICATION Bus SOAP/JMS Web Service Cloudscape JMS Service ME1 ME2 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop 1ページ前の図では、サービス・リクエスター、WESBサーバー、サービス・プロバイダーをそ れぞれ異なるアプリケーション・サーバー上で稼動させる図を表示しましたが、WESBサーバー上 で、J2EEのサービス・リクエスターやサービス・プロバイダーを稼動させることもできます。 WESBはWAS NDの機能をすべて持っていますので、WAS上で稼動するJ2EEアプリケーションは、す べてWESB上でも稼動させることが可能です。 メディエーション処理を補完するロジックを、サービスとして切り出す場合などでは、同一 サーバー上で稼動させても問題ありません。これにより、不必要にサーバー台数が増加していく ことを防ぐことができます。 また、この後説明するWESBサーバーをクラスタリングした環境においても、メディエーション が稼動するクラスター上で、サービス・リクエスターやサービス・プロバイダーも同時に稼動さ せることができます。 18 06. WESBのシステム設計 WESBのシステム設計 高可用性・拡張性を意識した構成(複数構成) WESBサーバーの高可用性・拡張性構成は、WAS NDの機能により実現 メディエーション・モジュール WASクラスタリング機能 バス: メッセージング・エンジンのフェイルオーバー機能 メッセージング・エンジンのワークロード共用機能 クラスター1 Bus Web Service SOAP/JMS Web Service Mediation Module binding SOAP/HTTP Mediation binding Flow WESBサーバー1 WASサーバー1 WASサーバー2 ME1 SOAP/JMS Web Service Component SOAP/HTTP Client Splayer (Webサーバー, 負荷分散装置) ME2 WESBサーバー2 Mediation Module Mediation Flow Component ME1’ 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop これから、WESBサーバーの高可用性、拡張性を考慮した複数サーバー構成を説明します。 まず、WESBの複数サーバー構成を検討する場合には、WASのクラスター構成が基本になります。 WASクラスタリングを使用することで、クラスター上で稼動するメディエーション・モジュール の高可用性と拡張性が実現されます。 また、クラスターをバスメンバーとして登録することにより、メッセージング・エンジンの フェイルオーバー機能やワークロード共用機能を使用することができ、これにより、非同期通信 で使用するメッセージング・インフラストラクチャーであるバスの高可用性、拡張性を実現でき ます。 ただし、通信方式の違いにより、高可用性・拡張性を検討するコンポーネントが異なりますの で、以降のページで、通信方式別にトポロジーを検討します。また、同期と非同期の両方の通信 方式をサポートするWESBサーバーを構築する場合には、両方の検討項目を合わせ持つトポロジー を構築することが必要です。 19 06. WESBのシステム設計 WESBのシステム設計 SOAP/HTTP, SCA(同期)のトポロジー SOAP/HTTP WESBサーバーのクラスターは、アプリケーション・サーバーのクラスターにより実施 SOAP/HTTPのリクエスト分散のためにSplayer(Edge/IHS,BIGIP等)が必要 SCA(同期) SCAバインディングのメディエーション・モジュールの連結はEJB WLMにより高可用性・ 拡張性を実現 クラスター1 クラスター3 クラスター2 WESBサーバー1 クラスター4 WESBサーバー3 WASサーバー1 Mediation Module Mediation Module WASサーバー3 SOAP/HTTP WS Client Mediation Flow Component Mediation Flow Component SOAP/HTTP WS Client Splayer WASサーバー1 SOAP/HTTP WS Client Splayer WESBサーバー2 WASサーバー4 WESBサーバー4 Mediation Module Mediation Module Mediation Flow Component Mediation Flow Component SOAP/HTTP WS Client SOAP/HTTP SOAP/HTTP IIOP 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop SOAP/HTTP, SCA(同期)の同期通信のみを使用した場合の高可用性・拡張性トポロジーです。 クラスタリング機能を使用し、WESBサーバーのクラスタリングを行います。これにより、メ ディエーション・モジュールの複数稼動を実現します。 エクスポートにおいて、SOAP/HTTPバインディングを使用する場合、リクエストはルーター・ サーブレットがハンドリングします。クラスタリング機能により、ルーター・サーブレットが稼 動するWebコンテナーは複数稼動することになります。WESBクラスターの前段にSOAP/HTTPのリク エストの負荷分散を実行するSplayer(Edge/IHS/BIGIP等)を配置し、複数のWebコンテナーへリク エストを分散することで、Webサービス・クライアントからWESBクラスター・メンバーへのリク エストを負荷分散することが可能となります。 インポートでSOAP/HTTPバインディングを使用している場合も、考え方は同様です。この場合、 メディエーション・モジュール内のEJB (Stateless Session Bean) が、Webサービスに対するク ライアントとなるので、Webサービス側のSplayerに対してリクエストを送信することで負荷分散 が可能となります。 尚、この構成の場合、Splayer自身の高可用性も検討する必要があります。 SCAバインディングにより、2つのメディエーション・モジュールを連結する場合、メディエー ション・モジュール間の通信はEJBクライアントとEJBの通信になりますので、クラスタリング機 能によるEJB WLMによって負荷分散が実現されます。 同期通信の場合の高可用性・拡張性構成は、通常のJ2EEアプリケーション・サーバーの高可用 設計の考え方がそのまま使用できますので、下記の資料も参考にしてください。 DeveloperDomainワークショップ資料「WebSphere Application Server V6による基幹システム設 計ワークショップ資料」-「インフラ設計」 http://www-06.ibm.com/jp/software/websphere/developer/was/wv6/enterprise/ws/ 20 06. WESBのシステム設計 WESBのシステム設計 SOAP/JMS, JMS, SCA(非同期)のトポロジー 非同期通信の場合のトポロジーは複数考えられる メディエーションとMEを同一クラスターで稼動 vs 異なるクラスターで稼動 MEのワークロード共用を行う vs 行わない 注意:MEのクラスタリングを行う場合は、MEのデータストアとしてcloudscape は使用できない クラスター1 WESBサーバー1 SOAP/JMS WESBサーバー2 Mediation Module Mediation Module Mediation Flow Component Mediation Flow Component WASサーバー1 SOAP/JMS WS Client WASサーバー2 クラスター2 WESBサーバー3 ME ME DB2など WESBサーバー4 SOAP/JMS WS Client SOAP/JMS ME’ ME SCA.SYSTEM or APPLICATION Bus 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop SOAP/JMS, JMS, SCA(非同期)の非同期通信を使用した場合の高可用性・拡張性トポロジーを検 討します。 WESBサーバーのクラスタリングを行い、このクラスターに対してメディエーション・モジュー ルをデプロイすることにより、メディエーション・モジュールの複数稼動を実現します。 また、非同期通信の場合は、通信はバスを介して行われますので、メッセージング・エンジン の高可用性・拡張性を検討する必要があります。 メッセージング・エンジンの高可用性・拡張性を考慮したトポロジーを考える上では、以下の 点を決定する必要があります。 ・メディエーション・モジュールを稼動させるクラスターとメッセージング・エンジンを稼動さ せるクラスターを同一のクラスターとするのか。それとも異なるクラスターでそれぞれを稼動さ せるのか。 ・メッセージング・エンジンのワークロード共用を行うのか、行わないのか 一見、パフォーマンス向上の観点から、メッセージング・エンジンのワークロード共用は常に 行った方がよいと思うかもしれませんが、メッセージング・エンジンのワークロード共用を使用 するには注意点がありますので、次ページ以降で説明する注意点をご確認の上、ワークロード共 用の採用を決定してください。 また、メッセージング・エンジンのフェイルオーバー機能などのメッセージング・エンジンの クラスタリングを行う場合には、デフォルトで組み込まれているcloudscapeのデータベースを メッセージング・エンジンのデータストアとして使用することはできません。メッセージング・ エンジンのクラスタリング機能を使用する場合には、DB2やoracleなどのデータベースを使用す る必要があります。 21 06. WESBのシステム設計 WESBのシステム設計 MEのワークロード共用について MEワークロード共用の利点 拡張性、パフォーマンスが向上 MEワークロード共用の注意 メッセージの順序性が保証されない ワークロード共用されたMEではデータストアを共有しないため MEのフェイルオーバー時にメッセージが孤立してしまう場合がある メッセージの受信は、アプリケーションが最初に接続したMEからのみ行うため 非パーシスタントのメッセージしか使用しない場合は問題ない Request-Reply通信で、受信宛先が負荷分散されてしまう場合がある 必ずしも負荷分散が均等に行われるとは限らない 非同期SCA通信では、受信宛先(永続キュー)が負荷分散対象となる クライアントからのMEの検索順、また、MEから宛先の検索順によって送信先宛先が決定 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop メッセージング・エンジンのワークロード共用を使用する場合の注意点の概要を説明します。 まず、ワークロード共用を行う利点としては、一つの宛先に対するメッセージを複数のアプリ ケーション・サーバーで同時並行的に処理できるため、拡張性、パフォーマンスの向上が実現さ れます。逆に言うと、ワークロード共用を行わない場合には、単一のアプリケーション・サー バーでしかメッセージを処理できないため、メッセージング・エンジンの拡張性が単一のアプリ ケーション・サーバーの処理能力に制限されてしまいます。 次に、ワークロード共用を行う場合の注意点です。 まず、メッセージング・エンジンのワークロード共用を行った場合、メッセージの順序性は保 証されません。これは、ワークロード共用が行われたメッセージング・エンジンでは、それぞれ のメッセージング・エンジンが、それぞれ固有のデータストアを持ち、1つの宛先の一部分(区分 化された宛先)の処理を実行するためです。メッセージの順序が重要なアプリケーションにおい ては、メッセージング・エンジンのワークロード共用を行うことはできません。 次に、メッセージング・エンジンのワークロード共用を行っている場合、メッセージング・エ ンジンのフェイルオーバー時にメッセージが孤立(消費されないメッセージが発生)してしまう場 合があります。詳細は後述します。 また、非同期SCA通信を使用する場合には、受信宛先が永続キューとして作成されるため、受 信宛先も負荷分散の対象となってしまいます。リクエスト・メッセージが送信されるメッセー ジ・ポイントとリプライ・メッセージが送信されるメッセージ・ポイントが同一のメッセージン グ・エンジンになるように、構成に注意する必要があります。詳細は後述します。 また、メッセージング・エンジンのワークロード共用は、必ずしも負荷分散が均等に行われる とは限りません。詳細は後述します。 メッセージング・エンジンのワークロード共用の注意点については、下記のDeveloperWorksの 記事も参照ください。 DeveloperWorks記事「Basic steps for clustering WebSphere Process Server」 http://www128.ibm.com/developerworks/websphere/techjournal/0604_chilanti/0604_chilanti.html 22 06. WESBのシステム設計 WESBのシステム設計 MEワークロード共用の注意① MEのフェイルオーバー時にメッセージが孤立してしまう場合がある 1.メッセージがME1に送られたときにServer1がダウン 2.ME1はServer2にテイク・オーバー 3.Server2にME1,ME2が両方稼動する状態になる 4.MDBの場合、Server2で最初から稼動していたME2からのみメッセージを受け取る → 1 でME1に送られたメッセージは、Server1が復旧するまで消費されない クラスター1 クラスター1 Mediation Module ME1 ME2 data store1 WESBServer1 Mediation Module ME1 Mediation Module ME2 WESBServer2 data store2 ME1 ME2 data store1 WESBServer1 ME1 Mediation Module ME2 ? data store2 WESBServer2 Bus Bus 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop ここでメッセージング・エンジンのワークロード共用構成をとったときの注意点の1つとして、 メッセージング・エンジンのフェイルオーバー時にメッセージが孤立してしまう場合について説 明します。 メッセージング・エンジンはパーシスタンス・ストアとしてデータストアと呼ばれるデータ ベースを使用し、システムダウンの後も継続して処理が行なえるような仕組みになっています。 このデータストアはワークロード共用構成の際はメッセージング・エンジンごとに別のデータス トアを持ちます。 このような構成で、メッセージがME1に送られたタイミングでサーバーがダウンしたとします。 そのとき、そのメッセージはME1のデータストアであるDataStore1内に留まります。(1) そのとき、ME1がダウンしたことをHAマネージャーが検知し、Server2にME1を立ち上げます。 (2) Server2にME1,ME2の二つのMEが稼動した状態になりますが、このとき、 MDBが接続しているME は、もとから動いているME2です。そのため、ME1のデータストアに残っているリプライ・メッ セージを消費できないことになります。 これは、メッセージの受信を行うMDBは最初に接続したMEからのみ行うためです。 ただし、メッセージが失われた場合も、そのリカバリーをアプリケーション側で考慮している ため、非パーシスタントのメッセージのみしか使用していない場合には、問題になりません。 ワークロード共用されたキュー宛先からの受信についての考慮点は下記のInfoCenterの記載も 参照ください WESB 6.0.1 InfoCenter「キュー宛先のあるワークロード共用」 http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/topic/com.ibm.websphere.pmc.n d.doc/concepts/cjt0014_.html 23 06. WESBのシステム設計 WESBのシステム設計 MEパーティショニングの注意② Request-Reply通信で、受信宛先が負荷分散されてしまう場合がある 非同期SCA通信では、受信宛先(永続キュー)が負荷分散対象となるため 非同期SCA通信においては、受信宛先側のMEをワークロード共用してはいけない MediationモジュールとMEのクラスターを分離することでMediationモジュールの負荷分散は可 能 SOAP/JMS通信では、受信宛先は(一時キュー)のため負荷分散可能 クラスター1 Server1 Mediation Module ME1 Bus クラスター2 Server3 Mediation Module 送信宛先 受信宛先 ME2 受信宛先 ME3 送信宛先 ME1’ Mediation Module Server2 Mediation Module Server4 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop ここでは、SCA非同期通信を行う場合のメッセージング・エンジンのワークロード共用の注意 点を説明します。 SCA非同期通信では、レスポンスを受信する受信宛先が永続キューとして作成されますので、 クラスター1側のメッセージング・エンジンのワークロード共用を行っている場合、受信宛先が 負荷分散の対象となってしまい、必ずしも、メッセージをPUTしたメディエーションにレスポン スが戻らなくなってしまいます。 基本的には、非同期SCA通信を使用する場合には、受信宛先側のメッセージング・エンジンの ワークロード共用を行うことはできません。ただし、上図でServer1とServer3を同一ノードで稼 動し、Server2とServer4を同一ノードで稼動するようにした場合には、メッセージのフローは、 Server1→Server3→Server1とServer2→Server4→Server2となりますので、クラスター1側の メッセージング・エンジンをワークロード共用行うことも可能です。 また、上図では、Server2側では、メディエーション・モジュールもスタンバイ状態となって しまいますが、メディエーション・モジュールとメッセージング・エンジンを稼動するクラス ターを分離することで、メディエーション・モジュールのアプリケーションを並列稼動させるこ とができます。(後述) 尚、SOAP/JMS通信の受信宛先は一時キューとして、メッセージ送信時に作成されますので、 ワークロード共用を行っても、正しくメッセージを受信することが可能です。 24 06. WESBのシステム設計 WESBのシステム設計 MEパーティショニングの注意③ 必ずしも負荷分散が均等に行われるとは限らない JMSクライアントのメッセージング・エンジンの検索順はより近いメッセージング・エンジンが優先 メッセージ・エンジンのローカルに宛先が存在する場合、その宛先に常に送信 メッセージング・エンジンの検索順とメッセージング・エンジンから宛先の検索順に注意する必要が ある JMSクライアントもBusにメンバーとして参加し、宛先までの距離が均等であれば、負荷分散が 行われる 同一アプリケーション・サーバー上やノード上に該当の宛先が存在する場合にはすべてその宛先に送信される クラスター1 ME1 ME2 Mediation Module WESBServer1 WASサーバー1 JMS Client ME1 Bus ME2 Mediation Module WESBServer2 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop メッセージング・エンジンの負荷分散においては、構成や設定によって必ずしも均等に負荷分 散が行われない場合があります。 メッセージの送信を行うJMSクライアントは、まず、メッセージング・エンジンを検索し、接 続したメッセージング・エンジンのローカルに宛先が存在する場合には、常にその宛先にメッ セージを送信します。そのため、特定のクライアントからのメッセージが特定のメッセージン グ・エンジンの宛先に常に送信されてしまう場合があります。これを避けるためには、割り振り 専用のメッセージング・エンジンを作成するなどの考慮が必要です。 メッセージを送信するクライアントからの、メッセージング・エンジンの検索順と検索された メッセージング・エンジンから宛先の検索順に注意する必要があります。 上図の場合で、JMSクライアントもBusにメンバーとして参加し、宛先までの距離が均等であれ ば、負荷分散が行われます。ただし、上図で、JMSクライアントがBusにメンバーとして参加した 場合も同一アプリケーション・サーバー上やノード上に該当の宛先が存在する場合にはすべてそ の宛先にメッセージは送信されます。 メッセージング・エンジンの選択プロセスの詳細は下記のInfoCenterの記載を参照してくださ い。 WESB 6.0.1 InfoCenter「アプリケーションのメッセージング・エンジン選択プロセスの構成」 http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/topic/com.ibm.websphere.pmc.n d.doc/tasks/tjn0034_.html 25 06. WESBのシステム設計 WESBのシステム設計 MediationサーバーとMEサーバーの分離 ME用サーバー(クラスター)を分離する場合(リモート構成)の考慮点 リソースを多く使用する MEのワークロード共用も行った場合、すべてのMEのメッセージを受信できるようにメディエーション 用クラスターを構成する必要があり構成が複雑になる ME用サーバー(クラスター)をメディエーションと同一にする場合(ローカル構成)の考慮点 Mediation用とME用を別々に拡張、チューニングすることができない MEをワークロード共用しない場合、非同期通信を受信するメディエーションは、MEが稼動してい るサーバーでのみ稼動。MEのStandby機は、メディエーションもStandby状態となる WESBサーバー1 WASサーバー1 SOAP/JMS Client Mediation Module Mediation Flow Component WASサーバー2 SOAP/JMS Web Service JMS Service JMS Client WESB(WAS)サーバー2 ME SCA.APPLICATION or SCA.SYSTEM Bus 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop メディエーション用のクラスターとメッセージング・エンジン用のクラスターの分離構成につ いて検討します。 まず、メッセージング・エンジン用のクラスターを分離した場合(MEのリモート構成)の考慮点 です。 リモート構成の場合、アプリケーション・サーバーの数が増加し、その分、サーバー台数やメ モリーリソースなどのリソースを多く使用することになります。また、メッセージング・エンジ ンのワークロード共用を行った場合には、すべてのメッセージング・エンジンのメッセージを受 信できるように、メディエーション用のクラスター(クラスター・メンバー)を構成する必要があ り、構成が複雑になります。 次に、メッセージング・エンジン用のクラスターとメディエーション用のクラスターを同一に する場合(ローカル構成)の考慮点です。 ローカル構成の場合、メディエーション用とメッセージング・エンジン用のクラスターをそれ ぞれ別々に拡張、チューニングを行うことができません。また、メッセージング・エンジンの ワークロード共用を行わない場合に、メッセージの受信はローカルで稼動するMDBによる処理が 優先されますので、結果として、メッセージング・エンジンが稼動しているクラスター・メン バー上のメディエーション・アプリケーションしかメッセージの処理を行いません。メッセージ ング・エンジンがスタンバイ状態のクラスター・メンバー上のメディエーション・アプリケー ションもスタンバイ状態となってしまいます。したがって、メッセージング・エンジンのワーク ロード共用を行わない場合に、メディエーション・アプリケーションの拡張性・パフォーマンス 向上を実現するには、メッセージング・エンジン用のクラスターとメディエーション稼動用クラ スターを分離する構成が推奨されます。 26 06. WESBのシステム設計 WESBのシステム設計 ME使用における一般的な注意点 メッセージの信頼性 MEでは5種類の信頼性レベルが利用可能 信頼性レベル 説明 パーシスタント データ・ストアにメッセージを書き込むことで、メッセージング・エンジン再起動後もメッセージを維 持できます。ただし、データストアに書き込む分、低速で、I/Oがボトルネックになりやすいのが特 徴です。 保証パーシスタント メッセージを受け取ると同時に、データストアに書き込みます。 高信頼性パーシスタント メッセージを受け取ると、一旦バッファに保持して応答を返します。その後非同期でデータストア に書き込みます。 非パーシスタント メッセージをバッファのみに保持することで、メッセージングのパフォーマンスが向上できます。ただし、 メッセージング・エンジン再起動後はメッセージは破棄されます。I/Oがボトルネックになりにくいた め、CPUネックになるまでパフォーマンスが向上します。 高信頼性非パーシスタント メッセージング・エンジン間でメッセージをやり取りするとき、送信先にメッセージが届いたことを確 認後に、メッセージを破棄します。 高速非パーシスタント メッセージング・エンジン間でメッセージをやり取りするとき、送信先にメッセージが届いたことを確 認前に、メッセージを破棄します。 バッファを溢れたメッセージは、一時的にデータ・ストアに退避します。 ベストエフォート非パーシスタント 消去可能バッファをあふれたメッセージは全て破棄します。 メッセージング・エンジン間でメッセージをやり取りするとき、送信先にメッセージが届いたことを確 認前に、メッセージを破棄します。 非パーシスタントのメッセージを使用する場合も、例外宛先のデフォルトの信頼性が「保証パーシスタント」なので注意 (例外宛先にメッセージが溜まってしまわないように) 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop メッセージング・エンジンでは5段階の信頼性レベルを利用できます。信頼性レベルは大きく パーシスタントと非パーシスタントに分かれます。パーシスタントの場合はディスクに書き込み、 非パーシスタントの場合は基本的にディスクに書き込まないので、パフォーマンスだけを考える と、非パーシスタントの方が優れています。 パーシスタントの信頼性レベルは「保証パーシスタント」と「高信頼性パーシスタント」の2 種類です。信頼性レベルごとに、データ・ストアに書き込むタイミングが異なります。一般的に、 パーシスタントを利用すると、多くの場合DISK I/Oがボトルネックになります。 非パーシスタントの信頼性レベルは「高信頼性非パーシスタント」と「高速非パーシスタン ト」と「ベストエフォート非パーシスタント」の3種類です。信頼性レベルごとに、アプリケー ションがメッセージをメッセージング・エンジンに渡すタイミングが異なります。一般的に、非 パーシスタントを利用すると、多くの場合CPUがボトルネックになります。 信頼性レベルは、可能な限り非パーシスタントのいずれかを利用してください。パーシスタン ト・メッセージを利用すると、データストアのバックアップが必要になるので、運用の難易度が 上がります。 メッセージの信頼性の詳細は、下記のInfoCenterの記載を参照ください。 WESB 6.0.1 InfoCenter「メッセージ信頼性レベル」 http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/topic/com.ibm.websphere.pmc.n d.doc/concepts/cjj9000_.html 27 06. WESBのシステム設計 WESBのシステム設計 MEワークロード共用設定の注意点 MEは、HA Managerによって、監視・制御 HAポリシーとして、メッセージング・エンジンの振る 舞いを指定 ポリシー・タイプ 説明 静的ポリシー MEを特定のサーバーでのみ稼動 Nポリシー中の1つ クラスター・メンバーのうち1つがMEを稼動。他のクラス ター・メンバーは待機。 オペレーション・ポリシーなし 障害が発生しても、何もしない設定 HAポリシーの適用範囲は、一致基準(Match criteria)で指定 偏ったアプリケーション・サーバーで MEが起動してしまわないように、HA ポリシーの設定が必須 デフォルト設定では、最初に起動した クラスター・メンバー上ですべての MEが起動してしまう ポリシーに該当するコンポーネントを、HAグループと呼びます。 優先サーバーを設定することで、ME障害時のフェ イルオーバーの優先順位を指定 フェイルバックを有効にすることで、優先度の高い サーバーが復旧した際に、MEを引き継ぐことが可 能 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop メッセージング・エンジンのワークロード共用設定の注意点です。 バス・メンバーとしてクラスターを追加し、複数のメッセージング・エンジンを起動した場合、 デフォルトの設定では、すべてのメッセージング・エンジンが最初に起動したクラスター・メン バー上で稼動してしまいます。複数のクラスター・メンバー上に分散してメッセージング・エン ジンを稼動させるには、HAポリシーの設定が必須です。 このHAポリシーは、メッセージング・エンジンを監視・制御しているHAマネージャーが、どの ようにメッセージング・エンジンを制御するかを指定します。 このHAポリシーには、ポリシー・タイプとしてメッセージング・エンジンの振る舞いを指定す る他、HAポリシーをどのコンポーネントに適用するかを指定する一致基準、そのコンポーネント を稼動させるサーバーの優先順位を指定する優先サーバー、フェイル・バックの有効/無効など を設定します。 HAポリシーの設定方法の詳細は下記のInfoCenterの記載を参照してください。 WESB 6.0.1 InfoCenter「メッセージング・エンジン用のポリシーの構成」 http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/topic/com.ibm.websphere.pmc.n d.doc/tasks/tjt0028_.html 28 06. WESBのシステム設計 WESBのシステム設計 WESB基本コンポーネントの高可用性・拡張性構成のまとめ メディエーション・アプリケーション、バスの高可用性、拡張性はWASのクラスタリング機能 で実現 MEのワークロード共用構成は、使用するバインディング、アプリケーション特性を考慮し、 パーティショニングを行っても問題ない場合に実施 MEのワークロード共用を行わない場合は、メディエーション稼動用のクラスターとME稼動 用クラスターは分離することを推奨 MEのワークロード共用を行う場合は、メディエーション稼動用のクラスターとME稼動用クラ スターは同一クラスターとすることを推奨 クラスター1 WESBサーバー1 同期 SOAP/HTTP 非同期 WESBサーバー2 Mediation Module Mediation Module Mediation Flow Component Mediation Flow Component クラスター2 WESBサーバー3 ME DB2など WESBサーバー4 ME’ SCA.SYSTEM or APPLICATION Bus 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop ここまでに説明した、WESBの基本コンポーネントの高可用性・拡張性構成のまとめです。 メディエーション・アプリケーション、バス(メッセージング・エンジン)の高可用性、拡張性 はWASまたはWAS SIBusのクラスタリング機能により実現されます。 同期通信の高可用性、拡張性構成は通常のJ2EEアプリケーションの場合と同様に考えていただ いて構いません。バスの高可用性、拡張性は、その通信形態、アプリケーション特性に応じて十 分検討する必要があります。メッセージング・エンジンの高可用性、拡張性を考える場合には、 ワークロード共用を行うか否かを検討することがキーになります。 メッセージング・エンジンのワークロード共用を行っても問題ない場合は、パフォーマンスの 観点から、ワークロード共用を実施することをお勧めします。 メッセージング・エンジンのワークロード共用を行わない場合は、メディエーション稼動用の クラスターとメッセージング・エンジン稼動用のクラスターを分離するリモート構成が推奨され ます。メッセージング・エンジンのワークロード共用を行う場合は、メディエーション稼動用の クラスターとメッセージング・エンジン稼動用のクラスターは同一のクラスターとするローカル 構成が推奨されます。 29 06. WESBのシステム設計 WESBのシステム設計 (参考)WMQ接続の高可用性 WESB 6.0.1の場合 (6.0.2 では異なる) JMSバインディングによるWMQ接続の高可用性構成 MQLink機能を使用 WMQサーバー’ クラスター1 Service WESBサーバー1 WESBサーバー2 Mediation Module Mediation Module Mediation Flow Component Mediation Flow Component DB2など QMgr’ WMQサーバー クラスター2 Service HACMP WESB(WAS)サーバー3 ME HACMP IPアドレスのフェイルオー バーが必要。また、メッセージ ング・エンジンのポート番号が フェイルオーバー先でも同一 である必要がある MQ Link WMQ QMgr Channel Bus ME’ WESB(WAS)サーバー4 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop WESB 6.0.1において、WMQと接続する場合には、JMSバインディングを使用し、作成した宛先を MQリンク機能によりWMQのキューと接続する必要があります。メッセージング・エンジンの障害 時の高可用性を実現するには、メッセージング・エンジンのクラスタリング機能によるフェイル オーバーだけでは不十分です。メッセージング・エンジンのフェイルオーバー時にWMQの キュー・マネージャーから新しく稼動したメッセージング・エンジンに正常に接続するためには、 メッセージング・エンジンが稼動するサーバーのIPアドレスをフェイルオーバーする必要があり ます。また、メッセージング・エンジンのポート番号もフェイルオーバーした先で同一である必 要があります。 30 06. WESBのシステム設計 WESBのシステム設計 CEIの高可用性① CEIのコンポーネント イベントの流れ イベント検索・取得の流れ Deployment Manager WESBサーバー1 管理コンソール Eventサーバー WASサーバー3 J2EEアプリケーション (イベント・コンシューマー) CBE Browser EVENTDB ME ME用DB CommonEventInfrastraucture_ Bus WESBサーバー3 エミッター Web Service Client WASサーバー1 エミッター Mediation Flow Component Mediation Module エミッター Web Service WASサーバー2 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop 上図は、CEIの概要を示しています。 イベント・ソースは、イベントを生成し、エミッターを経由してイベント・サーバーへイベン トを送信します。イベントの送信方法には、直接的にEJBコールして送信する方法(同期)と、 間接的にJMSを通して送信する方法(非同期)を選択できます。 イベント・サーバーは、イベント・ソースから送信されるイベントを収集して一元管理します。 イベント・サーバーは、イベントをデータベースに保管したり、イベントをモニタリングしてい るアプリケーション(イベント・コンシューマー)へ、イベントを配布します。データベースへ の保管や、イベント・コンシューマーへのイベント配布は、設定で容易に選択できます。 また、送信されたイベントをフィルタリングすることで、イベントのトラフィックを軽減させ ることもできます。 イベント・コンシューマーは、イベント・サーバーやイベント・データベースで管理されている イベントを取得し利用するコンポーネントであり、問題判別やパフォーマンス情報の把握などに 役立てることができます。 イベント・データベースは、イベントを保管するデータベースです。 31 06. WESBのシステム設計 WESBのシステム設計 CEIの高可用性② イベントサーバーとイベント・バスの高可用性 イベントサーバー用アプリケーションをクラスターに導入 イベントバスのバスメンバーをクラスターとする EventサーバーとME の稼動するクラスター を同一にすることも可 高可用性設計方針はメディエーション稼働環境の高可用性と同様 Deployment Manager 通常のメディエーショ ン・アプリケーションが 稼動するクラスター上 でEventサーバーを稼 動させることも可 クラスター1 WESBサーバー1 WESBサーバー2 管理コンソール CBE Browser Eventサーバー Eventサーバー EVENTDB WESBのスタンドアロンプ ロファイルでは、1つのアプ リケーション・サーバー上で すべてが稼動 クラスター2 WESBサーバー3 WESBサーバー4 ME ME用DB ME’ CommonEventInfrastraucture_ Bus 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop CEI環境の高可用性について説明します。 CEI環境において、高可用性を検討するコンポーネントはイベント・サーバーとイベント・バ スです。アプリケーションの高可用性とメッセージング・エンジンの高可用性の検討という意味 で、CEIの高可用性設計も設計方針は、メディエーション稼働環境の高可用性設計と同様です。 イベントサーバーの高可用性を実現するためには、イベントサーバー用のアプリケーションを クラスターに導入します。また、イベントバスの高可用性を実現するには、イベントバスのバス メンバーにクラスターを登録することにより、メッセージング・エンジンのフェイルオーバーを 実現します。 尚、WESBのスタンドアロンサーバーのプロファイルを使用した場合には、単一のアプリケー ション・サーバー上でCEI環境を含むすべてのコンポーネントが稼動します。このことからも分 かるように、イベントサーバーとイベント用のメッセージング・エンジンを稼動するクラスター を同一のクラスターとしたり、通常のメディエーションが稼動するクラスター上でイベントサー バーを稼動させることも可能です。 CEI構築手順の詳細は下記のInfoCenterの記載を参照ください。 WESB6.0.1 InfoCenter「インストール後の構成」 http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/topic/com.ibm.websphere.wesb. doc/doc/ccei_install_postInstallConfig.html 32 06. WESBのシステム設計 WESBのシステム設計 4.導入・構成のHints&Tips 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop 33 06. WESBのシステム設計 WESBのシステム設計 WESBで使用するバスの用途 WESBのSCAの非同期呼び出しで使用されるバス SCA.SYSTEM.cell_name.Bus SCA.APPLICATION.cell_name.Bus SOAP/JMSバインディング、SCAバインディングを使用する際に、必要に応じて宛先が作成される JMSバインディングを使用する際に、必要に応じて宛先を作成する CEIを使用する場合に使用するバス CommonEventInfrastructure_Bus イベントの送受信に使用 WASサーバー1 SOAP/JMS Client JMS Client WASサーバー2 WESBサーバー Mediation Module Mediation Flow Component DB1 DB2 SOAP/JMS Web Service JMS Service ME1 SCA.SYSTEM Bus ME2 SCA.APPLICATION Bus 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop SCA.SYSTEM.cell_name.BusとSCA.APPLICATION.cell_name.BusはWESBのセルが作成された時点 で定義されています。それぞれのバス内には少なくとも一つのメッセージング・エンジンが稼動 している必要があります。メッセージング・サービスの使用に必要なバス宛先は、メディエー ション・モジュールをサーバー上にデプロイした際に、必要な宛先がバス上に自動的に作成され ます。 SCA.SYSTEMバスは、管理者が意識することなく、自動的に宛先が作成されるバスとして使用さ れます。SOAP/JMSバインディング等を使用する場合は、このバスが使用されます。 SCA.APPLICATIONバスは、JMSバインディングの際に、管理者が意識してメディエーション処理 用宛先を作成したい場合に使用されるバスです。 メッセージング・エンジンを稼動させるサーバー(またはクラスター)は、「バス・メンバー」 としてバスに登録する必要があります。バス・メンバーには、WESBのサーバーだけでなく、同一 セル内のWAS V6.0のサーバーも選択することができます。 また、CEIを使用する場合には、イベントの送受信用にCommonEventInfarastracture_Busが使 用されます。 34 06. WESBのシステム設計 WESBのシステム設計 MEのデータストアの準備における注意 MEクラスタリングのデータストアに、デフォルトで設定されるcloudscapeは使用で きない MEごとに1つのユーザーおよびスキーマを事前に準備 DB2、oracle、MS SQL Serverなどを使用する必要がある DB2では、ユーザーとスキーマが分離しているので、MEの数分のスキーマを準備 DB2以外では、ユーザーとスキーマが1対1対応しているので、MEの数分のユーザーと スキーマを作成 ユーザーに必要な特権 テーブルを使用するためとテーブルを作成するための特権が必要 DB2の場合の例 DBMS データ・ストア・テーブルを使用するために、メッセージ ング・エンジンに必要な最小の特権。 データ・ストア・テーブルを作成するために、メッセージ ング・エンジンに必要な追加の特権。 DB2 テーブルに対する SELECT、INSERT、UPDATE、 および DELETE 特権が必要 データベースに対する CREATETAB 権限およびテー ブル・スペースの USE 特権に加えて、スキーマに対す る CREATEIN 特権が必要 パーシスタント・メッセージを使用した場合には、テーブルへデータの挿入、削除が頻繁に発生し、 参照系のDBよりも負荷がかかる 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop メッセージング・エンジンのクラスタリング機能は、データストアを引き継ぐことで、業務の 継続性を高めます。データストアが複数ノードにまたがって引き継ぎ可能である必要があるため、 デフォルトのデータストアであり、同一サーバーからしかアクセスできないcloudscapeは利用で きません。 サポートされるデータベースの詳細は下記のサポートリストページを参照ください。 WESBサポートページ「Detailed System Requirements for WebSphere Enterprise Service Bus V6.0.1 and V6.0.2.」 http://www-1.ibm.com/support/docview.wss?rs=2346&uid=swg27006912 また、メッセージング・エンジンを設定するには、メッセージング・エンジンごとにデータ ベースのユーザーおよびスキーマが必要になります。DB2では、ユーザーとスキーマが分離して いますので、少なくとも1つのデータベース・アクセス・ユーザーとメッセージング・エンジン 分のスキーマが必要です。DB2以外では、ユーザーとスキーマが1対1で対応していますので、 メッセージング・エンジン分のユーザーとスキーマが必要になります。 また、上記で指定したデータベース・アクセス・ユーザーには、テーブルを使用するためと、 バス・メンバー登録時に自動的にテーブルを作成する場合にはテーブルを作成するための特権が 必要になります。各DB製品ごとに必要な特権の詳細は下記のInfoCenterの記載を参照ください。 WESB 6.0.1 InfoCenter「データベース特権」 http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/topic/com.ibm.websphere.pmc.n d.doc/ref/rjm0650_.html 尚、パーシスタント・メッセージを使用した場合には、テーブルへのデータの挿入、削除が頻 繁に発生しますので、参照系のデータベースよりも負荷がかかりますのでご注意ください。 35 06. WESBのシステム設計 WESBのシステム設計 MEのデータストアに保管される情報 MEのデータストアには下記のテーブルが作成 テーブル名 目的 SIBOWNER アクティブなメッセージング・エンジンの、データ・ストアへの排他アクセスのために使用 SIBCLASSMAP データ・ストア中のオブジェクト・タイプのカタログ SIBLISTING SIBnnnテーブルのカタログ SIBXACTS 2PCトランザクションのステータスを維持 SIBKEYS メッセージング・エンジン内にあるオブジェクトに固有IDを割当 SIBnnn パーシスタントと非パーシスタントのオブジェクトを保持 SIB000 SIB001とSIB002のテーブルにあるデータ構造についての情報を格納 SIB001 パーシスタント・オブジェクトを格納 SIB002 メッセージング・エンジンのメモリー要件を節減するために、データ・ストアに保管された非パーシ スタント・オブジェクトを格納 ME用のデータストア用のテーブルは、Busにクラスター(アプリケーション・サーバー)をメンバーとして登録時に 自動的に作成することも、DB管理者が事前に作成することも可能 •sibDDLGeneratorコマンドを使用して、DDLを作成可能 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop メッセージング・エンジンのデータストアには、パーシスタント・メッセージの内容だけでな く、メッセージング・エンジン稼動のための定義情報が保管されます。 メッセージング・エンジンのデータストアのテーブル情報の詳細は、下記のInfoCenterの記載 を参照ください。 WESB 6.0.1 InfoCenter「データ・ストアテーブル」 http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/topic/com.ibm.websphere.pmc.n d.doc/ref/rjm0640_.html また、メッセージング・エンジンのデータストア用のテーブルは、バス・メンバー登録時に自 動的に作成することも、DB管理者が事前に作成することもできます。事前にテーブルを作成する 場合には、各DB製品ごとのDDLをsibDDLGeneratorコマンドを使用して生成・確認することができ ます。 WESB 6.0.1 InfoCenter「データベース管理者によるデータ・ストア・テーブルの作成を可能に する」 http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/topic/com.ibm.websphere.pmc.n d.doc/tasks/tjm0100_.html WESB 6.0.1 InfoCenter「sibDDLGenerator コマンド」 http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/topic/com.ibm.websphere.pmc.n d.doc/ref/rjm0630_.html 36 06. WESBのシステム設計 WESBのシステム設計 導入・構成時の注意① プロファイルの選択 インストール時 WESBはWASを拡張した製品ですが、事前にWASを導入する必要はない WESB導入時に、自動的にWASも導入 IHS、Pluginは、WASと同様に別途インストールする必要あり プロファイル作成時 WESB製品から、WESBプロファイル(ノード)だけでなく、WASプロファイル(ノー ド)も作成可能 誤ったプロファイルを作成しないよう注意 起動するプロファイル作成ウィザードが異なる <WESB_install_root>/bin L ProfileCreator L pct<OS_name>.bin L ProfileCreator_wbi L pcat<OS_name>.bin WASプロファイル 作成用 起動されるウィザード の内容もほとんど同じ WESBプロファイル 作成用 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop 最後に、WESBサーバーの導入・構築時に注意すべき項目を説明します。 インストール時の注意点としては、WESBはWASを拡張した製品ですが、事前にWASを導入する必 要はありません。WESBを導入することにより、そのベースとなるWASも自動的にインストールさ れます。ただし、IHSやWebサーバーPluginは、WASの導入時と同様に別途インストールする必要 があります。 プロファイル作成時の注意点です。 WESB製品からは、WESBプロファイルだけでなく、WASプロファイルも作成可能になっています。 WESBのプロファイルとWASのプロファイルは、起動するプロファイル作成ウィザードが異なりま す。実行するプロファイル作成ウィザード起動コマンドのパスや起動コマンド名が非常に似てい ますし、起動後のウィザードの内容も似ていますので、注意してください。 37 06. WESBのシステム設計 WESBのシステム設計 導入・構成時の注意② テンプレートの選択 アプリケーション・サーバー、クラスター作成時 WASアプリケーション・サーバー用テンプレートとWESBアプリケーション・サー バー用の2種類のテンプレートが準備 テンプレートの選択時に「default」ではなく、「defaultESBServer」を選択 初期値が「default」になっているので注意 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop また、アプリケーション・サーバーやクラスターを作成するときも、WASのアプリケーショ ン・サーバー用のテンプレートとWESBのアプリケーション・サーバー用の2種類のテンプレート が用意されています。アプリケーション・サーバーやクラスター作成時のデフォルトのテンプ レートの選択がWAS用の「default」になっていますので、WESBのアプリケーション・サーバーや クラスターを作成する場合には、必ずテンプレートの選択を「defaultESBServer」に変更する必 要があります。 38 06. WESBのシステム設計 WESBのシステム設計 導入・構成時の注意③ SCAサポートの構成ウィザード クラスター(AS)がSCAをサポートす るための構成 SCA.SYSTEMバス、 SCA.APPLICATIONバスのMEにアクセ ス、または自身がMEを保持するための 構成ウィザード 管理コンソールで、[サーバー]-[クラスター(アプ リケーション・サーバー)][Cluster_name(AS_name)]-[追加プロパ ティー:拡張構成]を選択 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop また、アプリケーション・サーバーまたはクラスターを作成後、SCAランタイムをサポートす る追加の設定が必要になります。追加設定は、ウィザードが管理コンソール上に準備されていま す。メディエーションを稼動させるアプリケーション・サーバーまたはクラスター上でメッセー ジング・エンジンも一緒に稼動させる場合には、このウィザードを使用して、メッセージング・ エンジンの設定も同時に行われます。リモートのメッセージング・エンジンを使用する場合も、 この構成ウィザードを使用してください。 構成ウィザードの詳細は下記のInfoCenterの記載を参照してください。 WESB 6.0.1 InfoCenter「メディエーション・モジュールのキュー宛先をホストするサーバーま たはクラスターの構成」 http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/topic/com.ibm.websphere.wesb. doc/tasks/twesb_scalocal.html WESB 6.0.1 InfoCenter「メディエーション・モジュールのリモート宛先を使用するサーバーま たはクラスターの構成」 http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/topic/com.ibm.websphere.wesb. doc/tasks/twesb_scaremote.html 39 06. WESBのシステム設計 WESBのシステム設計 導入・構成時の注意④ Fix適用 WESBはWASをベース WESB 6.0.1.3 (現在の最新) は、WAS 6.0.2.13 上で稼動 WESBのFix Packを適用することで、内部のWAS の修正レベルもアップ IHS、Pluginについては、ベースとなるWASのバー ジョンと合わせて、WASのFix Packを要適用 WESBのFix # ./versionInfo.sh ///途中略/// インストール済み製品 -------------------------------------------------------------------------------名前 IBM WebSphere Application Server - ND バージョン 6.0.2.13 ID ND ビルド・レベル cf130631.22 ビルド日 8/4/06 インストール済み製品 -------------------------------------------------------------------------------名前 IBM WebSphere Enterprise Service Bus バージョン 6.0.1.3 ID ESB ビルド・レベル o0637.07 ビルド日 9/16/06 Packは、複数の.pakファ イルを含む versionInfoコマンドの 出力結果 WESBの累積Fix、WASの累積Fix、関連 するWASの個別Fixなどが含まれる updateinstallerを複数回起動して、適用 順序に注意してFixを適用 updateinstaller/maintenace ディレクトリー内のファイル # pwd /opt/ibm/WebSphere/ESB/updateinstaller/maintenance # ls -s --block-size=K 合計 482628 130100 6.0.1-WS-WPS-ESB-LinuxX32-FP0000003.pak 243944 6.0.2-WS-WAS-LinuxX32-FP00000013.pak 108460 6.0.2-WS-WASJavaSDK-LinuxX32-FP00000011.pak 76 6.0.2.12-WS-WAS-IFPK29634.pak 48 WS-WAS-IF353793.pak 5つのpakファイル 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop Fix適用時の注意です。 WESBはWASをベースとしていますので、WESBを管理する場合には、WESBのバージョンとその ベースとなっているWASのバージョンを意識する必要があります。WESBの現在の最新バージョン であるWESB 6.0.1.3は、WAS 6.0.2.13をベースとしています。WESBのFixPackを適用することで、 ベースとなるWASの修正レベルもアップします。また、IHS、プラグインについては、WESBの FixPack適用時に、アップグレードされたベースとなるWASのバージョンと合わせてWAS(IHS, Plugin)のFixPackを適用してください。 また、WESBのFixPackの適用方法は、WASと比較して、やや複雑です。WESBのFixPackには、 WESBの累積Fix、WASの累積Fix、関連するWASの個別Fixなどが含まれていますので、 updateinstallerを複数回起動して、適用順序に注意してFixを適用する必要があります。適用順 序の詳細は、FixPackのReadmeを必ずご確認ください。 尚、WESBの最新修正プログラムは、下記のサイトより、ダウンロードしてください。 WESB Supportページ http://www-306.ibm.com/software/integration/wsesb/support/ 40 06. WESBのシステム設計 WESBのシステム設計 まとめ WESBシステム・トポロジー設計においては、メディエーション・モ ジュールとメッセージング・エンジンの高可用性・拡張性を検討する ことが必要 メディエーション・モジュールの高可用性・拡張性はWASのクラスタリ ング機能により実現 メッセージング・エンジンの高可用性・拡張性はWASのクラスタリン グ機能をベースとした、メッセージング・エンジンのフェイルオーバー機 能、ワークロード共用機能により実現 ただし、メッセージング・エンジンのワークロード共用機能には注意 点があるので事前に使用する通信方式やアプリケーションの特性 から行うか行わないかを検討する必要がある 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop 41 06. WESBのシステム設計 WESBのシステム設計 参考資料 WESB 6.0.1 InfoCenter http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/index.jsp DeveloperDomain ワークショップ資料「WebSphere Enterprise Service Bus V6アナウンスメン ト・ワークショップ資料」-「WebSphere ESBシステム構成」,「CEIの使用」 http://www-06.ibm.com/jp/software/websphere/developer/bi/wesb/v6/workshop/ DeveloperDomain 導入構成ガイド「WebSphere Process Server V6 クラスター構成ガイド」 http://www-06.ibm.com/jp/software/websphere/developer/wps/clusterguide/ Redbook「Patterns: SOA Foundation Service Connectivity Scenario」 http://www.redbooks.ibm.com/abstracts/sg247228.html?Open DeveloperWorks記事「Deployment patterns for WebSphere Process Server and Enterprise Service Bus」 http://download.boulder.ibm.com/ibmdl/pub/software/dw/wes/pdf/0611_redlindeploypatterns.pdf DeveloperWorks記事「IBM WebSphere Developer Technical Journal: Basic steps for clustering WebSphere Process Server」 http://www128.ibm.com/developerworks/websphere/techjournal/0604_chilanti/0604_chilanti.html 2006/11 SOA “Webサービス及び ESB””基盤構築Workshop Webサービス及びESB 基盤構築Workshop 42