WXS V7.0 2009/12 ISE Workplace XD team © 2009 IBM Corporation
by user
Comments
Transcript
WXS V7.0 2009/12 ISE Workplace XD team © 2009 IBM Corporation
® WXS V7.0 運用・管理ガイド 2009/12 ISE Workplace XD team © 2009 IBM Corporation IBM Software Group | WebSphere software 目次 設計 1. サイジング 2. 構成 構築 3. プログラム / ライブラリー管理 4. データのロード / アンロード 運用 5. 起動 / 停止 6. チューニング 7. 監視 8. ログ管理 9. 障害対応 10. セキュリティ 2 IBM Software Group | WebSphere software はじめに 本ガイドは、WebSphere eXtreme Scale(WXS)の運用・管理を行う際に参 考となるTipsについてまとめたものです。 資料の構成としては、サイジングやOG構成など、WXSの設計についての指 針をまとめた「設計」編、アプリケーションのデプロイやクラス設計、および パーシスタンス・データ・ストアであるDBへのDBのロード・アンロードについ てまとめた「構築」編、運用時に必要となる監視、問題判別、セキュリティなど についてまとめた「運用」編に分けてまとめています。 各資料、Tipsをまとめたものとなっており、具体的な手順などについては紙 面の関係上記載しておりません。これらは添付 参考資料リンク先にあるもの を参考にしてください。 3 IBM Software Group | WebSphere software 設計 1. サイジング 4 IBM Software Group | WebSphere software メモリー使用量のサイジングのステップ 1. プロトタイピングの実施 – 保持されるデータのサイズはアプリケーション次第 – Key/Valueとして保持するデータのサンプルを作成 • 10万件、20万件などをWXS環境にINSERTし、以下の資料を取得 – – • Verbose:gc (native_stderr.log) Heapdump プロトタイピングは、WXSトライアル版での実施も可能 2. ユーザー・データ使用量のサイジング – 取得資料からのサイジングの実施 3. 必要JVM数/必要パーティション数の決定 – 障害時のパーティション移動を考え、余裕を持たせておく必要がある – 正常時で60%程度のヒープ使用率が一つの目安 5 IBM Software Group | WebSphere software データ使用量のサイジング [WASND環境] verbose:gcからの算出例 [WASND環境] ① 起動直後のHeap使用状況を確認 <tenured freebytes="34285472" totalbytes="75165696" percent="45" > 75,165,696 – 34,285,472 = 40.8MB 使用 ② 10万エントリー投入後のHeap使用状況を確認 <tenured freebytes="105239400" totalbytes="184406016" percent="57" > 184,406,016 – 105,239,400 = 79.2MB使用 10万エントリーあたり 79.2MB-40.8MB = 38.4MB使用 ⇒ 1エントリーあたり 384Byte ③ データ使用量のサイジング エントリー総数 x 1エントリー毎使用量 x [レプリカ数+1] • 例) 500万エントリー x 384B x (レプリカ1つ+プライマリ1つ) = 3,840MB 6 IBM Software Group | WebSphere software データ使用量のサイジング [Standalone環境] verbose:gcからの算出例 [Standalone環境] ① 起動直後のHeap使用状況を確認 <tenured freebytes="4457504" totalbytes="13040128" percent="34" > 13,040,128 – 4,457,504 = 8.6MB 使用 ② 10万エントリー投入後のHeap使用状況を確認 <tenured freebytes="156738832" totalbytes="203326976" percent="77" > 203,326,976 – 156,738,832 = 46.6MB使用 10万エントリーあたり 46.4MB - 8.6MB =38MB使用 ⇒ 1エントリーあたり 380Byte ③ データ使用量のサイジング エントリー総数 x 1エントリー毎使用量 x [レプリカ数+1] • 例) 500万エントリー x 380B x (レプリカ1つ+プライマリ1つ) = 3,800MB 7 IBM Software Group | WebSphere software 必要JVM数の算出例 必要JVM数の算出 – JVMの最大ヒープサイズを検討 • 巨大ヒープは長時間GCの原因となるので注意が必要 • ここでは、仮に最大ヒープサイズを1024MBと設定 – 正常時60%の使用率および起動時メモリー使用量を踏まえ、 データ保持のために使用できるサイズを算出 • 先のWAS ND環境であれば、[1024MB x 0.6] – 40.8MB = 573.6MB – 必要なJVM数を算出 • 3,840MB(※) / 573.6MB ≒ 6.69 ⇒ 7JVM ※P6での算出結果を参照 8 IBM Software Group | WebSphere software 必要パーティション数の算出 シャード(断片)総数の算出 – 1JVMあたり10シャード(断片)を担当するのが目安 • 拡張性として、10倍までスケールアウトさせることが可能 • 各JVMが保持するデータ量を平滑化できる – 障害時に各JVMに移動するデータ量も平滑化される • 7JVM x 10シャード = 70シャード 必要パーティション数の算出 – シャード総数 / [レプリカ数+1] で目安値を算出 • 70シャード / 2 (レプリカ1+プライマリ1) = 35 – 目安値に最も近い素数をパーティション数として採用⇒ 37 9 IBM Software Group | WebSphere software 管理コンポーネントのサイジング WASND環境での各プロセスの起動時ヒープ使用量 – Dmgr • カタログ・サーバー稼働 • カタログ・サーバー非稼働 50MB程度 43MB程度 9 管理コンソールにログインすると150MB程度は使用する – NodeAgent • カタログ・サーバー稼働 • カタログ・サーバー非稼働 43MB程度 35MB程度 スタンドアローン環境での起動時ヒープ使用量 • カタログ・サーバー 13MB程度 10 IBM Software Group | WebSphere software [参考]データ使用量のサイジング : Heapdump Heapdumpから確認① – com.ibm.ws.objectgrid.map.BaseMap • 各パーティションのObjectMapの実体 • 以下は、9パーティション(複製なし)を定義した場合の例 – 10万エントリー挿入しており、各パーティション1万エントリーずつ保持:4.1Mずつ使用 11 IBM Software Group | WebSphere software [参考]データ使用量のサイジング : Heapdump Heapdumpから確認② – com.ibm.ws.objectgrid.plugins.CacheEntryHeapFactory$HeapEntry • 実際のエントリーが保持されているオブジェクト • 1エントリーあたり360Byte使用されている 12 IBM Software Group | WebSphere software [参考]データ使用量のサイジング : Heapdump Heapdumpから確認③ – HeapEntryの下にKeyとValueの値が保持されている • Key: String • Value: com.ise.sample.util.PhoneNumberValue 13 IBM Software Group | WebSphere software 設計 2. 構成 14 IBM Software Group | WebSphere software 稼動タイプ - カタログ or コンテナ OGのプロセスには以下のタイプがあります。 ¾ カタログ・サーバー ¾ 分散ObjectGrid環境の管理プロセス ¾ WAS/XD環境では、DM上で稼動 ¾ 4つのサービスが稼動 ¾ Location Service - ルーティング情報を管理 ¾ Placement Service - 区画(シャード)のアサインを担う ¾ CoreGroup Manager - 各プロセスをCoreGroupに編成する ¾ Administration Service - モニタリングなどの管理サービスを提供 Location Service Placement Service CoreGroup Manager Admin Service Catalog Server WAS または Standalone Java Catalog Server ¾ コンテナ・サーバー どこ? ¾ クライアント – コンテナ・サーバー ¾ 業務ロジックが動作するJVM上で構成されるOG OGクライアント ¾ データをNear Cacheとして保持 • • OGサーバー ¾ サーバー ¾ データを保持するコンポーネント ¾ レプリカ / パーティション構成可能 あっこ。 OG Client OG OGClient OG 了解。 OG ¾ 基本的にはクライアント / サーバー構成をとりますが、プロセス内でデー タを保持する完結したローカル構成をとることも出来ます。 15 IBM Software Group | WebSphere software 稼動モード - スタンドアロン(J2SE) or WAS統合 1/2 OGの稼動形態としては、以下の3つのモードがあります。 Standalone (J2SE) 稼動イメージ WAS統合 WAS上のJ2SE カタログ:DM カタログ / コンテナー:スタンドアロンJVM カタログ / コンテナー:スタンドアロンJVM コンテナー:AS インストール 空ディレクトリに対して導入 WAS導入ディレクトリに 対して導入 プロファイルの拡張が必要 WAS導入ディレクトリに 対して導入 Javaランタイム IBM もしくは Sun のJavaランタ イム + ORB WASがサポートするランタイム WASがサポートするランタイム 管理 サーバー起動停止スクリプト xsadmin MBeans WAS管理コンソール wsadmin / xsadmin MBeans サーバー起動停止スクリプト xsadmin MBeans 16 IBM Software Group | WebSphere software 稼動モード - スタンドアロン(J2SE) or WAS統合 2/2 OGの稼動形態としては、以下のモードがあります。 Standalone (J2SE) WAS統合 WAS上のJ2SE 可用性 レプリカ 構成で確保 レプリカ 構成で確保 レプリカ 構成で確保 メモリフットプリント WXSとアプリケーション・データ のみ WASランタイム分の追加メモ リが必要 WXSとアプリケーション・ データのみ プラットフォームサポート z/OSサポートなし WASと同じ z/OSはクライアントのみサ ポート z/OSサポートなし 構成方法 XMLファイル コード中に記述 XMLファイル コード中に記述 XMLファイル コード中に記述 WASとの統合 なし アプリケーション管理に統合 される。ロギング、PMI、トラ ンザクション機能使用可能 なし ライセンス WXSのみ WAS ND + WXS WAS ND + WXS プログラミングモデル 全API使用可能 全API使用可能 全API使用可能 17 IBM Software Group | WebSphere software 可用性構成 - プライマリ / レプリカ OGでは、可用性確保のためにプライマリ/レプリカ構成をとることが出来ます。 – レプリカとは • 可用性確保のために作成されるMapのコピー • オリジナルのことを「プライマリ」と呼び、更新処理は必ずプライマリに対してなされます • レプリカはプライマリと異なるJVMに配置されます プライマリ プライマリ p0 JVM1 JVM2 r0 レプリカ レプリカ • 同期レプリカと非同期レプリカの違い – 同期レプリカは、プライマリの更新と同じトランザクション内で更新されます – 非同期レプリカは、プライマリ更新のトランザクション終了後、ベストエフォートで更新されます > 同期レプリカは整合性が確保される反面、パフォーマンスが劣化します – 一つのプライマリに対し、同期レプリカ・非同期レプリカの双方をそれぞれ複数個定義できます プライマリ プライマリ p0 JVM1 更新処理 JVM2 r0 JVM3 r0 同期レプリカ 同期レプリカ JVM4 r0 非同期レプリカ 非同期レプリカ 非同期レプリカ 非同期レプリカ 18 IBM Software Group | WebSphere software 可用性構成 - レプリカ構成のオプション レプリカ Read 構成 – デフォルトではトランザクション(Read/Write共に)はすべてプライマリに集中 – replicaReadEnabled をtrue に設定することで、レプリカへのreadを許可することが可能 参照処理 更新処理 プライマリ プライマリ p0 JVM1 参照処理 JVM2 r0 JVM3 r0 レプリカ レプリカ 参照処理 JVM4 r0 レプリカ レプリカ レプリカ レプリカ Development mode – デフォルトではレプリカはプライマリと異なるJVMに配置される – developmentModeを設定することで、プライマリと同一JVMへのレプリカ配置が許可される プライマリ プライマリ p0 JVM1 r0 JVM2 レプリカ レプリカ 19 IBM Software Group | WebSphere software 可用性構成 - レプリカ構成の挙動詳細 プライマリ/レプリカが使用可能になるまでのイベント – プライマリ • パーティション上のプライマリは、カタログサービスが配置する。 • カタログサービスは、プライマリ区画の位置のバランスやプライマリのfailoverの開始も行う。 • ある区画がプライマリになると、カタログサービスからレプリカの一覧を渡される。プライマリがレ プリカグループを作成して、全てのレプリカを登録する。 • プライマリがアクティブになると、以下のメッセージを出力する。 – CWOBJ1511I: mapName:mapSetName:partitionNumber (primary) is open for business. – レプリカ • レプリカ区画は、プライマリ区画によって制御されている。(レプリカが問題を検出しない限り) • 通常のライフサイクルでは、プライマリが配置、登録、登録解除を行う。プライマリがレプリカの初 期化を行ったら、レプリカ側で以下のメッセージが出力されて準備完了となる。 – CWOBJ1511I: mapName:mapSetName:partitionNumber (synchronous replica) is open for business. – CWOBJ1511I: mapName:mapSetName:partitionNumber (asynchronous replica) is open for business. • レプリカ区画が起動した時点では、まだpeerモードにはいっていない。 – peerモードに入る前に、プライマリから持っているデータを全て取得する。 – peerモードに入って初めてプライマリからトランザクションで扱うデータを受け取るようになる。 20 IBM Software Group | WebSphere software 可用性構成 - レプリカ構成 起動時の挙動詳細 ① Catalog Server ⑦ ④ Catalog Server Catalog Server レプリカ 作成を通知 Container01 Container02 Container01 Primary Container02 replica レプリカを作成 ② Catalog Server ⑤ Catalog Server Container01 Primary Container02 replica チェックポイント取得後のプライマリへの繁栄は チェックポイントコピー後個別にコピー ⑧ Catalog Server プライマリに 指定する Container01 Primary Container02 Container01 Primary Container02 replica プライマリが保持しているデータの チェックポイントを取得 ③ レプリカリスト を送信 Container01 Primary ⑥ Container01 Primary Container02 replica データコピー後にPeer Modeに移行 Catalog Server Catalog Server Container02 Container01 Primary Container02 replica チェックポイントデータをレプリカにコピー コピー完了でプライマリ側チェックポイントは破棄 21 IBM Software Group | WebSphere software 拡張性構成 - パーティション パーティション構成 - 大量データを分割して配置 Primary Primary Primary Primary – 単独プロセスには保持できない大量データを 分割して保持 • 負荷の分散にも有効 • 但し、1トランザクション内でパーティションに跨った更新処理はサポートされない – デプロイメント・ポリシーとして、パーティショニング数を指定 • パーティショニング数は動的に変更ができないので余裕をみて指定 – ObjectGridの動的再配置は区画(シャード)単位で行われる > 現在5JVMで稼動しているからといって、パーティション数を5と設定すると、 JVMを増やしても、動的に再配置が行えない – 各OGプロセスの保持する区画(シャード)数10個以下が目安 > レプリカの数にも注意して決める必要がある 22 IBM Software Group | WebSphere software 拡張機能 – プラグイン OGでは、機能の拡張をプラグインを追加することで行います。以下のプラグインが用意されています。 プラグインは、OG構成ファイルに記述を追加することで設定します。 ObjectGridプラグイン TransactionCallback トランザクションのライフサイクルイベントについての処理を追加します。 ObjectGridEventListener OG、区画、トランザクションなどのライフサイクルイベント発生時の処理を追加します。 SubjectSource, ObjectGridAuthorization, SubjectValidation 認証のためのプラグインです。 BackingMapプラグイン Evictor キャッシュを無効化するプラグインです。 Loader DBなどのデータストアと連携するためのプラグインです。 ObjectTransformer キャッシュ中のオブジェクトをシリアライズ、デシリアライズ、コピーするためのプラグインです。 OptimisticCallback オプティミスティックロックモード使用時に、キャッシュされたオブジェクトのバージョン比較などの実装 をカスタマイズするためのプラグインです。 MapEventListener BackingMapのキャッシュ状態の変化を検知して通知するためのプラグインです。 Indexing non-keyデータを扱う場合に、インデクシングの機能を提供します。 23 IBM Software Group | WebSphere software 構成ファイル一覧 OGの構成は、以下のファイルに設定することで行います。 OGの構成・トポロジーに関わる設定ファイル デプロイメント・トポロジー設定ファイル (ObjectGridDeployment.xml) OGディスクリプター・ファイル (ObjectGrid.xml) エンティティ・メタデータ設定ファイル (entity.xml) セキュリティ・ディスクリプター設定ファイル (objectGridSecurity.xml) D レプリカ/パーティション構成等の設定を行うファイル O OG/マップ等の設定を行うファイル E エンティティマップ使用時に、エンティティスキーマの設定を行うファイル Se セキュリティに関する設定を行うファイル Sv トレース/ロギング/セキュリティ等、サーバー単位で構成を変更する場合に使用 各コンポーネント設定に関わる設定ファイル サーバー・プロパティ ファイル クライアント・プロパティ ファイル ORB プロパティ・ファイル C OB クライアントのリクエストに関する振る舞いを変更する場合に使用 ORBの振る舞い(スレッド数、タイムアウト、等)を変更する場合に使用 ※ファイル名は任意ですが、標準的なファイル名を()に記述しています。 24 IBM Software Group | WebSphere software 構成ファイルの配置 スタンドアロン(Java SE) / WAS統合(JavaEE)環境でのファイル配置 – 両構成共に必要なファイルは変わりません。(前頁を凡例として参照ください。) Se Se E D Se E O Sv Catalog Server Client OG – ファイル指定の仕方 O C Server OG OB ※ Sv OB はオプショナルで、指定は必須ではありません。 • スタンドアロン(Java SE)環境の場合 – 全ての構成ファイルは起動時の引数で指定 > 詳細は、「起動」を参照 • WAS統合(Java EE)環境の場合 – 「OGの構成・トポロジーに関わる設定ファイル」 > 次ページ以降参照 – 「各コンポーネント設定に関わる設定ファイル」は、以下に示すように複数の指定の仕方があります > Classpath に配置する > WAS起動時のシステムプロパティに含める > コードの中で指定する 25 IBM Software Group | WebSphere software WAS統合(Java EE)構成例 - OGの構成・トポロジーに関わる設定ファイル ObjectGridDeployment.xml <?xml version="1.0" encoding="UTF-8"?> <deploymentPolicy xmlns:xsi="http://www.w3.org./2001/XMLSchema-instance" xsi:schemaLocation="http://ibm.com/ws/objectgrid/deploymentPolicy ../deploymentPolicy.xsd" xmlns="http://ibm.com/ws/objectgrid/deploymentPolicy"> <objectgridDeployment objectgridName="CompanyGrid"> <mapSet name="mapSet1" numberOfPartitions="11“ minSyncReplicas="1" maxSyncReplicas="1“ maxAsyncReplicas="0" numInitialContainers="4"> <map ref="Customer" /> <map ref="Item" /> <map ref="OrderLine" /> <map ref="Order" /> </mapSet> </objectgridDeployment> マップセットに対して、レプリカ、パーティ ションなどを定義をします。 ObjectGrid.xmlで定義したMapへの参 照を記述しています。 この区画にどのマップが含まれるか、の 定義を行っています。 </deploymentPolicy> ObjectGrid.xml <?xml version="1.0" encoding="UTF-8"?> <objectGridConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ibm.com/ws/objectgrid/config ../objectGrid.xsd" xmlns="http://ibm.com/ws/objectgrid/config"> <objectGrids> <objectGrid name="CompanyGrid"> <backingMap name="Customer" /> <backingMap name="Item" /> <backingMap name="OrderLine" /> <backingMap name="Order" /> </objectGrid> </objectGrids> </objectGridConfig> BackingMapの定義を行っています。 26 IBM Software Group | WebSphere software WAS統合(Java EE)構成例 – 構成ファイルの配置 構成ファイルの配置 – XMLはEnterprise Applicationの中に配置し、そのearをデプロイすること で当該サーバーがObjectGridサーバーとして構成されます。 • 配置場所はWebモジュールもしくはEJBモジュールの、META-INFの下になりま す。 Enterprise Application (EAR) Web Module (WAR) objectGrid.xml objectGridDeployment.xml • サーバーにロジックが無く、ObjectGridのみを配置するような場合、ダミーのear を作成し配置することでObjectGridサーバーとして稼動します。 27 IBM Software Group | WebSphere software WAS統合(Java EE)構成例 – カタログ・サーバー定義 1/2 カタログ・サーバー定義 – WebSphere環境でのカタログ・サーバーは、デフォルトでDeployment Managerで起動します。 – Deployment Manager以外のプロセスで稼動するように変更する場合、セルのカスタム・プロ パティへの定義で行います。(ノード・エージェントでのクラスター構成が推奨です。) • 管理コンソールより、「システム管理」→「セル」を開き • 「追加プロパティー」より「カスタム・プロパティー」を選択します 28 IBM Software Group | WebSphere software WAS統合(Java EE)構成例 – カタログ・サーバー定義 2/2 – 「新規作成」をクリックし、「catalog.services.cluster」を定義します • 定義例:nodeagentをカタログ・サーバーとして定義した構成です。 ¾ 7 • 値は以下のエレメントをコロン「:」でつなぎます。複数サーバーを定義する場合はカンマ「,」で区切ります。 (但し、同一マシン上のノード・エージェントでのクラスター構成はネーミング・ルール上不可) – – – – – serverName hostName peerPort clientPort listenerPort プロセスの名称です。セル名から始まる絶対名で記載します。 プロセスが稼動するホスト名です。 カタログ・サーバー同士の通信に使用されるサーバー・ポート番号です。 カタログ・サーバー同士の通信に使用されるクライアント・ポート番号です。 リスナー・ポートです。当該プロセスのBOOTSTRAP_ADDRESSを指定します。l • カタログ・サービス・クラスター構成のリファレンス – http://www-128.ibm.com/developerworks/wikis/display/objectgridprog/Starting+a+catalog+service 29 IBM Software Group | WebSphere software 構築 3. プログラム / ライブラリー管理 30 IBM Software Group | WebSphere software ObjectGrid環境に必要な製品モジュール整理 ogclient.jar wsobjectgrid.jar wsogclient.jar ogagent.jar ** wxsdynacache.jar *** 開発環境 objectgrid.jar Java EE cglib.jar * 環境 Java SE サーバー △ ○ - - - △ △ クライアント △ ○ ○ - - △ - 単体 △ ○ - - - △ △ サーバー △ - - ○ - △ △ クライアント △ - - ○ ○ △ - 単体 △ - - ○ - △ △ △ ○ - ○ - △ △ * CopyOnWriteでEntityManager使用時のみ必要 / ** エージェント機能使用時のみ必要 / *** 動的キャッシュ連携機能使用時のみ必要 個々のモジュールの内容詳細に関しては以下のページを参照 http://publib.boulder.ibm.com/infocenter/wxsinfo/v7r0/index.jsp?topic=/com.ibm.websphere.extremescale.admin.doc/txsinstall.html 31 IBM Software Group | WebSphere software ObjectGrid環境に必要な製品モジュール整理 それぞれの導入ディレクトリー Java SE環境 <WXS_install_dir>¥ObjectGrid¥lib <WXS_install_dir>¥ObjectGrid¥Dynacache¥lib Java EE環境 <WAS_install_dir>¥lib 32 IBM Software Group | WebSphere software ObjectGrid環境に必要な製品モジュールの配布方法 通常構成 – インストーラーが必要なjarを製品ディレクトリにコピー – Java EE(WAS)環境の場合、サーバーがObjectGrid機能を使用できるよ うにするため、WXSプロファイルへの拡張作業が必要 開発環境・テスト環境等 – 製品導入、もしくは導入済み環境よりjarをJVMプロセスが参照可能なクラ スパス上に配置 • ※ 製品導入ディレクトリにFix Pack等を適用した場合、こうしたコピーファイルの タイムスタンプ等を比較しコピーする手順を準備しておく 33 IBM Software Group | WebSphere software プログラムおよび構成の配布の注意点 クライアント・サーバー構成のbootstrap情報 – クライアント・サーバー構成時、クライアント・コードではカタログ・サーバー のロケーションを指定する必要がある – プログラム上にハードコードしてしまうと可搬性が失われるため、プロパ ティ・ファイル等に書き出して管理できるようにする • Webアプリの場合の例 – WebContent¥WEB-INFディレクトリにプロパティ・ファイルを配置 – ClassLoaderクラスを介してプロパティ・ファイルを取得、カタログ・サーバーのcorba locationプロパティを読み取り、ObjectGridManager.connectメソッドで使用 34 IBM Software Group | WebSphere software プログラムおよび構成の配布の注意点 クライアント・サーバー構成のbootstrap情報:プロパティ取得Servletコード例 – 本番用とRADテストサーバーでcorbalocが異なるケース Servletコード Properties Properties prop prop == new new Properties(); Properties(); String String corbaloc corbaloc == null; null; ClassLoader ClassLoader cl cl == getClass().getClassLoader(); getClass().getClassLoader(); try{ try{ InputStream InputStream is is == cl.getResourceAsStream("ogdataaccess.properties"); cl.getResourceAsStream("ogdataaccess.properties"); prop.load(is); prop.load(is); corbaloc corbaloc == prop.getProperty("corbaloc"); prop.getProperty("corbaloc"); url = prop.getProperty("url"); url = prop.getProperty("url"); }} catch catch (IOException (IOException ioe){ ioe){ ioe.printStackTrace(); ioe.printStackTrace(); ogdataacess.propertiesファイル }} :: ClientClusterContext ClientClusterContext ccc ccc == ogMgr.connect(corbaloc, ogMgr.connect(corbaloc, null,null); null,null); ogom ogom == ogMgr.getObjectGrid(ccc, ogMgr.getObjectGrid(ccc, "ISEWXSOGOM"); "ISEWXSOGOM"); ## Production Production Environment Environment corbaloc corbaloc == xd61yam.makuhari.japan.ibm.com:2810 xd61yam.makuhari.japan.ibm.com:2810 ## Test Environment Test Environment ## corbaloc corbaloc == localhost:2812 localhost:2812 35 IBM Software Group | WebSphere software プログラムおよび構成の配布の注意点 Java EE(WAS)クライアント・サーバー構成で共有ライブラリーがある場合 – クライアント・サーバー双方で使用するバリュー・オブジェクトや、JPAロー ダーで使用するJPAなどは共用ライブラリーに格納することで二重メンテナ ンスを回避可能 ObjectGrid Enterprise Application (ear) ObjectGrid共有ライブラリー (jar) 共有ライブラリー ObjectGrid構成ファイル サーバー ObjectGrid Enterprise Application (ear) ObjectGridクライアント・アプリケーション クライアント 36 IBM Software Group | WebSphere software プログラムおよび構成の配布の注意点 変更時の作業 – サーバー構成変更時 • サーバーearの更新導入 – ObjectGrid構成変更のためにはサーバー・プロセスの再起動が必要 – ObjectGrid Deployment構成変更のためには、全サーバー・プロセスの再起動が必要 – クライアント・アプリケーション変更時 • クライアントearの更新導入 – 通常クライアント・プロセス再起動は不要 – WVEアプリケーション・ロールアウト機能なども適用可能 – 共有ライブラリー変更時 • 共有ライブラリーの更新導入は不可能 – 参照先jarのクラスパスを変えるか、削除→再定義 – 参照するアプリケーションが居るサーバー、クライアント・プロセス両方の再起動が必要 – Fix適用時 • サーバー、クライアント双方の製品jarが更新される – サーバー、クライアント・プロセス両方の再起動が必要 37 IBM Software Group | WebSphere software 構築 4. データのロード、アンロード 38 IBM Software Group | WebSphere software データのロード:概要 ObjectGridの定義情報はデータの入れ物の定義のみ – RDBのテーブル相当のものを準備しているだけで、データは無い – RDBと異なり、プロセス起動時点でデータは入っていない RDB ObjectGrid ロード ファイル – 必要なデータを外部から入れ込む作業(ロード)が必要 39 IBM Software Group | WebSphere software データのロード:プリロードと実行時ロード プリロード – ObjectGridプロセス起動時に、必要なデータの全量をロードしておく • 起動後のリクエストは高速に処理が可能 実行時ロード – ObjectGridへのアクセス時点で、必要なデータをロードに行く • 未ロードのデータへの初回アクセスの際に時間がかかってしまう • 一旦ロードされたデータは再度データ・ストアへの参照に行かない プリロード 実行時ロード 40 IBM Software Group | WebSphere software データのロード: Loaderプラグイン 外部データのロードおよび、外部データへの書き出しを行うプラグイン – ObjectGridメソッドと、外部データへの書き込み・読み込みを同期させるた めのJava Interfaceを製品で提供 com.ibm.websphere.objectgrid.plugins.Loader public public interface interface Loader Loader {{ static static final final SpecialValue SpecialValue KEY_NOT_FOUND; KEY_NOT_FOUND; List get(TxID txid, List keyList, List get(TxID txid, List keyList, boolean boolean forUpdate) forUpdate) throws throws LoaderException; LoaderException; void batchUpdate(TxID txid, LogSequence sequence) throws void batchUpdate(TxID txid, LogSequence sequence) throws LoaderException, LoaderException, OptimisticCollisionException; OptimisticCollisionException; void void preloadMap(Session preloadMap(Session session, session, BackingMap BackingMap backingMap) backingMap) throws throws LoaderException; LoaderException; }} • インターフェースを元に、ユーザー・コーディングによりプログラムを書く必要あり • 作成したプログラムを、MapやEntityManager単位(BackingMap単位)にプラグ インとして定義する Loader 41 IBM Software Group | WebSphere software データのロード: JPA Loader コーディングを要求しないLoader – JPAを使用したLoader実装を製品が提供 • JPAのO/Rマッピング・コードをIDEを使用して生成すれば、プラグイン構成を行 うだけでLoaderコードは不要 • ObjectMapのValueにはJPAインスタンスが格納される • EntityManagerのEntityオブジェクト、イコールJPAとなるため、Entityオブジェク トとJPAの二重定義のアノテーションを定義する必要がある – その他の制約に関してはInfoCenter「JPAEntityLoaderプラグイン」を参照 JPA Loader 42 IBM Software Group | WebSphere software データのロード:パーティション環境でのプリロード考慮点 ObjectGridサーバー・プロセスのLoaderは自プロセスを意識したデータを ロードしなくてはならない – キーはカタログ・サーバーによりハッシュで振り分けられているため、各 サーバー・プロセスが自分のデータを認識するためにはコーディング上の 手間が余計にかかる えーっと・・・ どのデータ要るんだっけ? 43 IBM Software Group | WebSphere software データのロード:クライアント・ベースJPAプリロード・ユーティリティ クライアントからのプリロードを行うユーティリティ・プログラム – パーティショニング環境でのデータ・プリロードの課題を解消するため、クラ イアント・アプリケーションとしてデータを区分にロード • プリロード中のObjectGridサーバーへのアクセスを制御するStateManagerを使 用し、AvailabilityState.PRELOADに設定 • ClientLoader.load()メソッドでデータをロード • StateManagerでAvailabilityState.ONLINEに変更 Preload Utility JPA 44 IBM Software Group | WebSphere software データのロード:クライアント・ベースJPAプリロード・ユーティリティ サンプル・コード StateManager StateManager stateMgr stateMgr == StateManagerFactory.getStateManager(); StateManagerFactory.getStateManager(); //// Set ObjectGrid state to PRELOAD Set ObjectGrid state to PRELOAD before before calling calling ClientLoader.loader ClientLoader.loader stateMgr.setObjectGridState(AvailabilityState.PRELOAD, stateMgr.setObjectGridState(AvailabilityState.PRELOAD, ogom); ogom); //// Load Load the the data data ClientLoader ClientLoader clientLoader clientLoader == ClientLoaderFactory.getClientLoader(); ClientLoaderFactory.getClientLoader(); clientLoader.load(ogom, clientLoader.load(ogom, "LoadTest01Map", "LoadTest01Map", "WXSAdmGuideOGJPA", "WXSAdmGuideOGJPA", null, null, LoadTest01.class, LoadTest01.class, null, null, null, null, true, true, null); null); //// Set Set ObjectGrid ObjectGrid state state back back to to ONLINE ONLINE stateMgr.setObjectGridState(AvailabilityState.ONLINE, stateMgr.setObjectGridState(AvailabilityState.ONLINE, ogom); ogom); ClientLoader.load()メソッドのAPIリファレンス void void load(ObjectGrid load(ObjectGrid objectGrid, objectGrid, String String mapName, mapName, String punitName, String punitName, Map Map persistenceProps, persistenceProps, Class Class entityClass, entityClass, String loadQL, String loadQL, Map Map queryNamedParams, queryNamedParams, boolean boolean isPreload, isPreload, ClientLoadCallback ClientLoadCallback callback) callback) throws throws ObjectGridException ObjectGridException ObjectGrid名 ObjectGridマップ名 JPA Persistence Unit名 javax.persistence.EntityManagerFactory作成時の追加プロパティ指定 JPA Entityのクラス(.classで指定) Load用JPQL変更の場合のJPQL指定 クエリー用named parameter trueでプリロード、falseでリロードを表す 開始前・終了後イベント受領用コールバックの定義 45 IBM Software Group | WebSphere software データのアンロード ObjectGrid上で更新されるデータのアンロード方法 – 常時書き出し(Loader定義) • 同期更新:ObjectGrid更新と同期してデータ・ストアに書き出し • 非同期更新:ObjectGrid更新完了後にbest effortでデータ・ストアに書き出し 同期更新 非同期更新 – 停止時書き出し • プロセス停止時の運用として、現行メモリー上のデータを書き出す • ユーティリティ等の提供はないため、停止時書き出しが必要な場合、ユーザー・ アプリケーションとして実装する – 非計画停止時に備え、定期書き出し機能等も実装が必要 46 IBM Software Group | WebSphere software データのアンロード Loader定義での同期・非同期更新の変更 – デフォルトのローダー定義は同期更新 <backingMap <backingMap name="LoadTest01Map" name="LoadTest01Map" writeBehind="T300;C900" writeBehind="T300;C900" pluginCollectionRef="LoadTest01Map"/> pluginCollectionRef="LoadTest01Map"/> :: <backingMapPluginCollection <backingMapPluginCollection id="LoadTest01Map"> id="LoadTest01Map"> <bean id="Loader" className="com.ibm.websphere.objectgrid.jpa.JPALoader"> <bean id="Loader" className="com.ibm.websphere.objectgrid.jpa.JPALoader"> <property <property name="entityClassName" name="entityClassName" type="java.lang.String" type="java.lang.String" value="yam.jpa.LoadTest01"/> value="yam.jpa.LoadTest01"/> </bean> </bean> </backingMapPluginCollection> </backingMapPluginCollection> – 非同期は以下のwriteBehindパラメーターで指定するのみ <backingMap <backingMap name="LoadTest01Map" name="LoadTest01Map" writeBehind="T30;C100" writeBehind="T30;C100" pluginCollectionRef="LoadTest01Map"/> pluginCollectionRef="LoadTest01Map"/> • Tには最終反映時刻からの経過時間を秒数で指定(デフォルト300) • Cにはキューマップに保管するログ・エレメント数を指定(デフォルト1000) • 指定した経過時間が過ぎるか、キュー・マップ内のログ・エレメント数が超過する かのいずれかの条件でLoaderが発動し、DBへ更新の反映を行う • どちらかを省略した場合はデフォルト値が暗黙的に適用される 47 IBM Software Group | WebSphere software 外部データとの整合性維持 外部データ・ストアで発生したObjectGridを介さない更新の反映方法 – 消しこみ(Evictor) • Evictorプラグインを提供、TTL(Time To Live)、LRU(Least Recently Used)、 LFU(Least Frequently Used)等のアルゴリズムで消しこみ – 不整合のウィンドウが生じるが、最も単純で構成・運用負荷が低い – イベント通知 • 外部データの変更を検知、ObjectGridに通知するイベント・リスナーを作成 – JPA時間ベース・アップデーター • 定期的に外部データ・ストアを参照し、変更を反映させるプラグインを定義 消し込み TTL LRU LFU イベント通知 JPA時間ベース・ アップーデーター JPA Updater 48 IBM Software Group | WebSphere software 外部データとの整合性維持:JPA時間ベース・アップデーター構成 DB2でのテーブル定義 ¾自動更新タイムスタンプ列をDB上にGENERATED列として 定義する必要あり ¾タイムスタンプ列を含め定義されたJPAを30秒に一度参照し、 タイムスタンプの変更を検知 create create table table WXSADMG.LOADTEST02 WXSADMG.LOADTEST02 (( LT02_COL1 LT02_COL1 char(10) char(10) not not null, null, LT02_COL2 LT02_COL2 char(40) char(40) not not null, null, LT02_COL3 timestamp LT02_COL3 timestamp NOT NOT NULL NULL GENERATED GENERATED ALWAYS ALWAYS FOR FOR EACH EACH ROW ROW ON ON UPDATE UPDATE AS AS ROW ROW CHANGE CHANGE TIMESTAMP, TIMESTAMP, PRIMARY PRIMARY KEY KEY (LT02_COL1) (LT02_COL1) );); ObjectGrid.xml定義 <backingMap <backingMap name="LoadTest02Map" name="LoadTest02Map" pluginCollectionRef="LoadTest02Map"> pluginCollectionRef="LoadTest02Map"> <timeBasedDBUpdate <timeBasedDBUpdate テーブルの変更検知列がマップされた JPAフィールド timestampField="lt02Col3“ timestampField="lt02Col3“ persistenceUnitName="WXSAdmGuideOGJPA“ persistenceUnitName="WXSAdmGuideOGJPA“ JPAのPersistence Unit名 entityClass="yam.jpa.LoadTest02“ entityClass="yam.jpa.LoadTest02“ JPAの実装クラス名 mode="INVALIDATE_ONLY“ mode="INVALIDATE_ONLY“ モード /> /> </backingMap> </backingMap> ¾モード指定に基づき、ObjectGridデータの消しこみ・追加を行う 49 IBM Software Group | WebSphere software 運用 5. 起動・停止 50 IBM Software Group | WebSphere software 内容 スタンドアロン環境(Java SE環境) – 開始 • Catalogサーバー • ObjectGridサーバー – 停止 • Catalogサーバー • ObjectGridサーバー WAS環境(J2EE環境) – 開始 • Catalogサーバー • ObjectGridサーバー – 停止 • Catalogサーバー • ObjectGridサーバー 51 IBM Software Group | WebSphere software スタンドアロン環境 52 IBM Software Group | WebSphere software JavaSE環境でのCatalogサーバー CatalogServer – 静的デプロイメント • 稼動ノードとポートをあらかじめ指定 例: #単体CataologServer起動 $OG_HOME/bin/startOgServer.sh catalogServer # CataologServerクラスターの起動 $OG_HOME/bin/startOgServer.sh cs1 –catalogServiceEndpoints cs1:ise031:6601:6661,cs2:ise032:6601:6661 この引数は、serverName:hostName:clientPort:peerPort の形式のカタログ・サービス・ エンドポイントのリストを受け入れる。各属性の定義は次ページに記載。 53 IBM Software Group | WebSphere software JavaSE環境でのCatalogサーバー 各属性の定義 値は以下のエレメントをコロン「:」でつなぎます。複数サーバーを定義する場合はカンマ「,」で 区切ります。 serverName 起動しようとしているプロセスを識別する名前を指定 hostName サーバーを起動するコンピューターのホスト名を指定 clientPort ピア・カタログ・グリッド通信に使用されるポートを指定 peerPort ピア・カタログ・グリッド通信に使用されるポートを指定 ※重要: すべてのカタログ・サーバーを同時に始動してください。 グリッドに入っているカタログ・サーバーは、それぞれのサーバーが、他のカタログ・サーバー がコア・グループに参加するのを休止して待つため、同時に始動する必要があります。グリッド 用に構成されているカタログ・サーバーは、グループ内の他のメンバーを識別するまで始動し ません。カタログ・サーバーは、他のサーバーがいずれも使用可能にならないと、最終的にタイ ムアウトになります。 54 IBM Software Group | WebSphere software カタログ・サーバーの起動パラメーター一覧 1/2 -catalogServiceEndPoints <server:serverHost:clientPort:peerPort,server:serverHost:cli entPort:peerPort> サーバーのセットを開始してカタログ・サービスを実行するには、 このオプションを使用する必要がある。この引数は、 serverName:hostName:clientPort:peerPort の形式のカタロ グ・サービス・エンドポイントのリストを受け入れる。各属性の定 義は前頁に記述あり。 -clusterSecurityFile <cluster security xml file> セキュリティー記述子 XML ファイルが置かれているロケーション を指定 -clusterSecurityUrl <cluster security xml URL> セキュア・カタログ・サービスを開始する際にこの引数を指定。こ の引数はobjectGridSecurity.xml ファイルを指定。このファイル は、すべてのサーバー (カタログ・サーバーおよびコンテナー・ サーバーを含む) に共通するセキュア・プロパティーを記述する もの。 -domain <domain name> ドメインに名前を付けるには、-domain オプションを使用。ただし、 カタログ・サービスを開始するとき、ドメイン・ネームは必要ではな い。デフォルトのドメイン・ネームは defaultDomain 。 -listenerHost <host name> Internet Inter-ORB Protocol (IIOP) との通信に使用するリス ナー・ホストを指定 デフォルト: localhost -listenerPort <port> IIOP との通信に使用するリスナー・ポートを指定 デフォルト: 2809 -serverProps <server properties file> サーバー固有のセキュリティー・プロパティーが含まれている サーバー・プロパティー・ファイルを指定。このプロパティーに対し て指定されるファイル名の形式は、単なるプレーン・ファイル・パ ス形式。 例えば、c:/tmp/og/catalogserver.props など 55 IBM Software Group | WebSphere software カタログ・サーバーの起動パラメーター一覧 2/2 -JMXServicePort <port> デフォルト: 1099 -traceSpec <trace specification> 例: ObjectGrid=all=enabled Java Management Extensions (JMX) との通信に使用する ポート番号を指定 サーバーが始動したとき使用可能になるトレースの有効範囲を 指定するストリングを指定 ObjectGrid*=all=enabled -traceFile <trace file> トレース情報を保存するファイルのパスを指定 例: ../logs/c4Trace.log -timeout <seconds> サーバーの始動がタイムアウトになる秒数を指定 -script <script file> カスタム・スクリプトを作成する際に使用。作成されたら、それを パラメーター化したり、編集したりすることが可能。 -jvmArgs <JVM arguments> JVM 引数 (複数可) を指定。 -jvmArgs パラメーターより後にあ るパラメーターは、すべてサーバー Java 仮想マシン (JVM) を 始動するために使用されるもの。 -jvmArgs パラメーターを使用 するときは、最後に指定されるスクリプト引数 (オプション) になる ようにする 例:-jvmArgs -Xms256M -Xmx1G 56 IBM Software Group | WebSphere software JavaSE環境でのObjectGridサーバー ObjectGridサーバー – 動的デプロイメント • • CatalogServerのbootstrapポートを指定して起動 2つの構成ファイルを引数に渡す – objectGridFile: OGのインスタンスやマップ、プラグインの情報を指定 – deploymentPolicyFile:レプリカやパーティションの情報を指定 例: $OG_HOME/bin/startOgServer.sh ogServer1 -catalogServiceEndpoints ise031:2809,ise032:2809 -objectGridFile $OG_HOME/work/xml/accountGridConfig.xml -deploymentPolicyFile $OG_HOME/work/xml/accountGridDeployment.xml -jvmArgs -cp $OG_HOME/work/apps/OG70TestUtility.jar ¾ V6.1までの静的デプロイメントは非推奨なのでご注意ください。 57 IBM Software Group | WebSphere software コンテナー・サーバーの起動パラメーター一覧 1/2 -catalogServiceEndPoints<hostName:port,hostName:port> デフォルト: localhost:2809 -deploymentPolicyFile <deployment policy xml file> このオプションを使用して、カタログ・サービス上のオブジェクト・ リクエスト・ブローカー (ORB) のホストとポートを参照する。カタ ログ・サービスでは、-listenerHost および -listenerPort オプショ ンを使用して ORB バインディング用のホストとポートを指定可 能。コンテナーを開始する場合は、このオプションを使用して、カ タログ・サービスで -listenerHost および -listenerPort オプション に渡される値を参照。 デプロイメント・ポリシー・ファイルへのパスを指定 例: ../xml/SimpleDP.xml -deploymentPolicyUrl <deployment policy xml url> deployment.xmlファイルへのパスを指定 -listenerHost <host name> Internet Inter-ORB Protocol (IIOP) との通信に使用するリス ナー・ホストを指定 デフォルト: localhost -listenerPort <port> IIOP との通信に使用するリスナー・ポートを指定 デフォルト: 2809 -serverProps <server properties file> サーバー・プロパティー・ファイルへのパスを指定 例:../security/server.props -zone <zone name> サーバー内のすべてのコンテナーのために使用するゾーンを指 定 -traceSpec <trace specification> サーバーが始動したとき使用可能になるトレースの有効範囲を 指定するストリングを指定 例: ObjectGrid=all=enabled ObjectGrid*=all=enabled 58 IBM Software Group | WebSphere software コンテナー・サーバーの起動パラメーター一覧 2/2 -traceFile <trace file> トレース情報を保存するファイルのパスを指定 例: ../logs/c4Trace.log -timeout <seconds> サーバーの始動がタイムアウトになる秒数を指定 -script <script file> カスタム・スクリプトを作成する際に使用。作成されたら、それを パラメーター化したり、編集したりすることが可能。 -jvmArgs <JVM arguments> JVM 引数 (複数可) を指定。 -jvmArgs パラメーターより後にあ るパラメーターは、すべてサーバー Java 仮想マシン (JVM) を 始動するために使用されるもの。 -jvmArgs パラメーターを使用 するときは、最後に指定されるスクリプト引数 (オプション) になる ようにする 例:-jvmArgs -Xms256M -Xmx1G 59 IBM Software Group | WebSphere software スタンドアロン環境 <停止> カタログ・サーバーを停止する場合 stopOgServer.sh|bat <server> -catalogServiceEndPoints <csHost:csListenerPort,csHost:csListenerPort> [options] 例: $OG_HOME/bin/stopOgServer.sh c0 -catalogServiceEndPoints MyServer1.company.com:2809 ObjectGridコンテナー・サーバーを停止する場合 stopOgServer.sh|bat <server> -catalogServiceEndPoints <csHost:csListenerPort,csHost:csListenerPort> [options] 例: $OG_HOME/bin/stopOgServer.sh catalogServer -bootstrap MyServer1.company.com:6601 60 IBM Software Group | WebSphere software サーバーの停止パラメーター一覧 -clientSecurityFile <security properties file> この引数を使用し、クライアント・セキュリティー・プロパティーを 設定可能 -traceSpec <trace specification> サーバーが始動したとき使用可能になるトレースの有効範囲を 指定するストリングを指定 例: ObjectGrid=all=enabled ObjectGrid*=all=enabled -traceFile <trace file> トレース情報を保存するファイルのパスを指定 例: ../logs/c4Trace.log -jvmArgs <JVM arguments> -jvmArgs オプションより後にあるパラメーターは、すべてサー バー Java仮想マシン (JVM) を始動するために使用されるもの。 -jvmArgs オプションが使用される場合には、そのオプションが、 指定された最後のオプション・スクリプト引数であることを確認す る。 61 IBM Software Group | WebSphere software WAS環境 62 IBM Software Group | WebSphere software J2EE(WAS)環境での CatalogServerおよびObjectGridサーバー CatalogServer – デフォルトではDeployment Manager上で稼動 ObjectGridサーバー – アプリケーション起動時に自動配置される • Web/EJBモジュールのMETA-INFに構成ファイルを配置 – objectGridConfig.xml – objectGridDeployment.xml 【eXtreme Scale XML ファイル】 objectGrid.xml ファイル 通常は eXtreme Scale 記述子 XML ファイルと呼ばれているもの objectGridDeployment.xml ファイル 通常はデプロイメント記述子 XML ファイルと呼ばれているもの entity.xml ファイル エンティティーが使用された場合 (オプション)。 entity.xml ファイル 名は、objectGrid.xml ファイルに指定されている名前と一致しなけ ればならない。 ※eXtreme Scale ランタイムはこれらのファイルを検出し、カタログ・サービスに連絡して、別の コンテナーを使用してこの eXtreme Scale の断片(シャード)をホストできることを通知する。 63 IBM Software Group | WebSphere software WAS環境でのCatalogサーバー WAS NDでのカタログ・サーバー・クラスターの始動 – WebSphere環境でのカタログ・サーバーは、デフォルトでDeployment Managerで起動 – Deployment Manager以外のプロセスで稼動するように変更する場合、セルのカスタム・プロ パティへの定義で行う • 管理コンソールより、「システム管理」→「セル」→ 「追加プロパティー」より「カスタム・プロ パティー」→ 「新規作成」をクリックし、「catalog.services.cluster」を定義 定義例:nodeagentをカタログ・サーバーとして 定義した構成 64 IBM Software Group | WebSphere software WAS環境でのCatalogサーバー カスタム・プロパティー値の各属性の定義 値は以下のエレメントをコロン「:」でつなぎます。複数サーバーを定義する場合はカンマ「,」で 区切ります。 serverName カタログ・サービスをホストするサーバーの WebSphere プロセス (cellName、 nodeName、serverName など) の完全修飾名を指定 例: cellA¥node1¥nodeagent hostName ホスティング・サーバーの名前を指定 clientPort ピア・カタログ・グリッド通信に使用されるポートを指定 peerPort ピア・カタログ・グリッド通信に使用されるポートを指定 listenerPort listenerPort は、WebSphere サーバー構成で定義される ※BOOTSTRAP_ADDRESS 値と一致しなければならない。 有効な値の例 cellA¥node1¥nodeagent:host.local.domain:6600:6601:2809,cellA¥node2¥ nodeagent:host.foreign.domain:6600:6601:2809 65 IBM Software Group | WebSphere software カタログ・サーバー起動時 ログ出力 例: [09/12/21 17:55:03:468 JST] 0000002c PlacementServ I CWOBJ8102I: マスター・カタログ・サーバーがドメイン= xd70Cell02、IOR= IOR:00bdbdbd0000003a49444c3a636f6d2e69626d2e77732f6f626a656374677269642f636174616c6f672f49444c506c6163656d65 6e74536572766963653a312e3000bdbd00000001000000000000009a000102bd0000001f7864363179616d2e726f70706f6e67692e6a 6170616e2e69626d2e636f6d00bd26acbdbd0000002f4c4d42490000001511c328fe00290019184f626a65637447726964436174616c 6f6753657276696365000400000001bd00000003000000010000001400bdbdbd0501000100000000000101000000000049424d0a0000 000800bd00011500000100000026000000020002 で作成されたことを通知します。 [09/12/21 17:55:03:796 JST] 0000002c PlacementServ I CWOBJ8106I: マスター・カタログ・サーバー・クラスター は、クラスター CatalogCluster[xd70Cell02 quorumMet=true, 1 master: 0 standbys] でアクティブ化されます。 66 IBM Software Group | WebSphere software ObjectGridサーバー起動時 ログ出力 例: [09/12/21 17:58:57:265 JST] 0000002e ApplicationMg A WSVR0200I: 次のアプリケーションを開始します: OGTest [09/12/21 17:59:06:187 JST] 0000002e ServerAgent I CWOBJ1720I: HAManager コントローラーは、Objectgrid サーバーが、スタンドアロン HAManager を初期化して開始するのではなく、WebSphere HAManager を使用して、 WebSphere 環境にあることを検出しました。 [09/12/21 17:59:06:187 JST] 0000002e ServerImpl I CWOBJ2501I: ObjectGrid サーバー xd70Cell02¥xd70Node11¥DC_ONLINE2_01 を起動しています。 [09/12/21 17:59:12:656 JST] 0000002e ServerImpl I CWOBJ1001I: ObjectGrid サーバー xd70Cell02¥xd70Node11¥DC_ONLINE2_01 は要求を処理する用意ができています。 [09/12/21 17:59:18:906 JST] 0000003a ReplicatedPar I CWOBJ1511I: SimpleGrid:IBM_SYSTEM_ENTITYMANAGER_MAPSET:0 (primary) は使用可能です。 [09/12/21 17:59:18:968 JST] 0000003b ReplicatedPar I CWOBJ1511I: SimpleGrid:mapSet1:0 (primary) は使用可能 です。 [09/12/21 17:59:24:171 JST] 0000002e VirtualHost I SRVE0250I: Web モジュール OGTestWeb3 は default_host[*:9080,*:80,*:9443,*:5060,*:5061,*:443,*:9083,*:9087,*:9088,*:9089,*:9090] にバインドされました。 [09/12/21 17:59:24:312 JST] 0000002e ApplicationMg A WSVR0221I: アプリケーションが開始されました: OGTest 67 IBM Software Group | WebSphere software WAS環境での<停止>手順 すべてのプロセスを停止 サーバーを停止 was_root/bin/stopServer.sh ObjectGridサーバー モジュールが停止すると、停止 ノードを停止 profile_root/bin/stopNode.sh デプロイメント・マネージャーを停止 profile_root/bin/stopManager.sh CatalogServer デプロイメント・マネージャーが停止すると、停止 68 IBM Software Group | WebSphere software 運用 6.チューニング 69 IBM Software Group | WebSphere software 6-1.ネットワーク・チューニング 70 IBM Software Group | WebSphere software ネットワーク・チューニング [Linux] 設定値確認方法 – sysctl –a 設定方法 – /etc/sysctl.conf を編集、sysctrl –p で再読込みを実施 Infocenter 推奨設定値解説 パラメータ名 デフォルト 推奨値 パラメータの意味 net.ipv4.tcp_timesta mps 1 0 0(無効)に設定することで、システムの連続稼働時間を探ら れることを防ぐ net.ipv4.tcp_tw_reu se 0 1 TIME_WAIT ソケットの素早い再利用を有効にする net.ipv4.tcp_tw_recy cle 0 1 プロトコルの面から見て問題ない場合に新規コネクションに TIME_WAIT 状態のソケットを再利用することを許可する net.ipv4.tcp_fin_tim eout 60 30 ソケットを強制的にクローズする前に、 最後の FIN パケット を待つ時間を秒単位で指定 71 IBM Software Group | WebSphere software ネットワーク・チューニング [Linux] Infocenter 推奨設定値解説 パラメータ名 デフォルト 推奨値 パラメータの意味 net.ipv4.tcp_keepali ve_time 7200 180 接続がアイドル状態になってから、keep-alive 確認パケット を送信するまでの時間 net.ipv4.tcp_rmem 4096 87380 4194304 4096 87380 8388608 TCP 受信バッファサイズ調整のためのパラメータ 3つの値がそれぞれ、各TCPソケットが使用できる受信バッ ファの最小値、デフォルト値、最大値を示す net.ipv4.tcp_wmem 4096 87380 4194304 4096 87380 8388608 TCP 送信バッファサイズ調整のためのパラメータ 3つの値がそれぞれ、各TCPソケットが使用できる送信バッ ファの最小値、デフォルト値、最大値を示す net.ipv4.tcp_max_sy n_backlog 1024 4096 接続クライアントからの ACKを未だ受信していない接続要 求のキューに置ける最大値 72 IBM Software Group | WebSphere software ネットワーク・チューニング [AIX] 設定値確認方法 – no –a 設定方法 – no –p –o パラメータ名=値 Infocenter 推奨設定値解説 パラメータ名 デフォルト 推奨値 パラメータの意味 tcp_sendspace 16384 65536 データを送信するためのシステムのデフォルト・ソケット・ バッファー・サイズ tcp_recvspace 16384 65536 TIME_WAIT ソケットの素早い再利用を有効にする udp_sendspace 42080 65536 プロトコルの面から見て問題ない場合に新規コネクションに TIME_WAIT 状態のソケットを再利用することを許可する udp_recvspace 9216 65536 ソケットを強制的にクローズする前に、 最後の FIN パケット を待つ時間を秒単位で指定 so_maxconn 1024 10000 Listenバックログの最大値 73 IBM Software Group | WebSphere software ネットワーク・チューニング [AIX] Infocenter 推奨設定値解説 パラメータ名 デフォルト 推奨値 パラメータの意味 tcp_nodelayack 0(無効) 1(有効) 有効にすると、TCP は即時に肯定応答 (Ack) パケットを送 信側に送ります。無効の場合は、TCP は Ack パケットの送 信を最大 200 ミリ秒まで遅らせます。 これによりAck を応 答と結合させることができ、システムのオーバーヘッドが最 小化されます tcp_keepinit 150 (75秒) 40 (20秒) TCP 接続の初期タイムアウト値を0.5秒単位で指定 tcp_keepintvl 150 (75秒) 10 (5秒) TCP 接続を検査するため、何秒おきにパケットを送信する かの間隔を、0.5 秒単位で指定 その他の推奨設定値 パラメータ名 デフォルト 推奨値 パラメータの意味 tcp_keepidle 14400 (2時間) 360 (180秒) アイドルTCP接続をアクティブにしておく時間を0.5秒単位で 指定 74 IBM Software Group | WebSphere software ネットワーク・チューニング [Windows] 設定値確認方法/設定方法 – レジストリ・エディタにおいて、HKEY_LOCAL_MACHINE¥SYSTEM¥ CurrentControlSet¥Services¥Tcpip¥Parametersの値を編集 Infocenter 推奨設定値解説 パラメータ名 デフォルト 推奨値 パラメータの意味 MaxFreeTcbs ※1 dword:00 011940 Determines the number of TCP control blocks (TCBs) the system creates to support active connections ※物理メモリのサイズに依存 MaxHashTableSize ※2 dword:00 010000 TCP 接続の状態を記憶するハッシュ テーブルのサイズ ※2: デフォルト値は128 にシステムのプロセッサ数の二乗 を乗算した値 MaxUserPort dword:00 001388 (5000) dword:00 00fffe (65534) アプリケーションがシステムに使用可能なユーザー ポート を要求したときに TCP が割り当てられる最大のポート番号 TcpTimedWaitDelay dword:00 0000f0 (240) dword:00 00001e (30) アプリケーションが TCP 接続を閉じた後で、OS がポートを 再利用するまでに待機する秒数 75 IBM Software Group | WebSphere software 6-2.ORBチューニング 76 IBM Software Group | WebSphere software [参考] 用語解説 ORB : Object Request Broker – 分散コンピューティング環境において、 ネットワークを介してコンピュータ間 でのプログラムの呼び出しを可能にする仕組み CORBA : Common Object Request Broker Architecture – 標準化団体OMGが定義した標準規格 GIOP : General Inter ORB Protocol – ORBコンポーネントが通信するための抽象プロトコル IIOP : Internet Inter ORB Protocol – GIOPの実装の一つ。CORBAに準拠したORB間での通信プロトコル RMI-IIOP : Remote Method Invokation over Internet Inter ORB Protocol – CORBAの堅牢さとRMIの柔軟性を組合わせたJavaインターフェース – EJBでお馴染み 77 IBM Software Group | WebSphere software ORBのチューニング設定方法 StandAlone環境 – <JAVA_HOME>/jre/lib/orb.propeties を編集 WAS ND環境 – 管理コンソールより設定可能 • アプリケーション・サーバー > [サーバー名] > コンテナー設定 > コンテナー・ サービス > ORBサービス • 一般プロパティにないものに関しては、カスタム・プロパティとして指定 78 IBM Software Group | WebSphere software ORBプロパティのチューニング パラメータ名 デフォルト (単体) デフォルト (WAS) 推奨値 パラメータの意味 com.ibm.CORBA. FragmentSize 1024 1024 検証値 ORBが通信に使用するGIOPフラグメントのサイズ。 このサイズを超えた要求は分割して送付され、オー バーヘッドがかかる。0を指定した場合、フラグメン テーションは発生しない。検証を実施し、通常時想定 されるオブジェクトが分割されないサイズに設定(※) com.ibm.CORBA. BufferSize 2048 2048 検証値 ソケットでの読込みの際に、1度に読み込めるGIOP メッセージ・サイズ。FragmentSize同様要求メッセー ジサイズを鑑みて設定(※) com.ibm.CORBA. RequestTimeout 0 (無制限) 180 数秒 ORB要求が要求の応答を待機する時間 com.ibm.CORBA. ConnectTimeout 0 (無制限) 0 (無制限) 数秒 IIOP接続の確立時に待機する時間。0指定時はOS のタイムアウトでタイムアウトする com.ibm.CORBA. FragmentTimeout 0 0 (無制限) 数秒 ORBが次のGIOPフラグメントを待機する秒数 com.ibm.CORBA. LocateRequestTi meout 0 180 数秒 ORBがLocateRequestの応答を待機する時間 ※次ページでチューニング方法を解説 79 IBM Software Group | WebSphere software GIOPメッセージ・サイズの確認方法 1. ORBカスタム・プロパティにcom.ibm.CORBA.CommTrace=trueを設定 2. トレース・ストリングとして ORBRas=all を指定 80 IBM Software Group | WebSphere software GIOPサイズの確認方法(続き) 3. アプリケーションを実行し、生成されたトレース・ファイルを確認する [09/12/10 17:36:50:200 JST] 00000034 ORBRas OUT GOING: Request Message Date: 2009/12/10 17:36:50 JST Thread Info: WebContainer : 0 Local Port: 59719 (0xE947) Local IP: 9.188.255.173 Remote Port: 9100 (0x238C) Remote IP: 9.188.255.173 GIOP Version: 1.2 Byte order: big endian Fragment to follow: Yes Message size: 1012 (0x3F4) -Message header fragmented Request ID: 84 3 com.ibm.rmi.ras.Trace dump:84 WebContainer : 0 フラグメントが発生していることが分かる。 同じRequest IDのメッセージのサイズを合計し、 元のメッセージのサイズを算出する 0000: 47494F50 01020200 000003F4 00000054 GIOP...........T 0010: 03000000 0000BDBD 0000002F 4C4D4249 .........../LMBI 0020: 00000015 144D42AC 00290019 184F626A .....MB..)...Obj 0030: 65637447 72696443 6174616C 6F675365 ectGridCatalogSe 0040: 72766963 65000400 000000BD 00000014 rvice........... 0050: 67657450 6C616365 6D656E74 53657276 getPlacementServ 0060: 69636500 00000002 0000000F 000008F4 ice............. 81 IBM Software Group | WebSphere software ORBスレッド・プールの指定[WAS ND] スレッド・プール設定 – ORBオブジェクト固有のスレッド・プール属性ではなく、WASスレッド・プー ル・マネージャ管理下のORB.thread.poolに変更 • コンテナー・サービス > ORBサービスの設定ページ 82 IBM Software Group | WebSphere software 6-3.JVMチューニング 83 IBM Software Group | WebSphere software GCポリシーの選択 WXSのような高速応答性能が求められるシステムでは、GCによる停止時間 の最適化が必須となる – JVM上に配置されるオブジェクトの生存期間に着目しGCポリシーを検討 • WXS上に保持されるデータ • ORB要求/応答に関わるテンポラリー・オブジェクト • SessionやLogSequenceなど処理に関わるテンポラリー・オブジェクト GCポリシーの選択の指針 – 参照中心のシステム: gencon • WXS上に長時間保持されるデータはtenured領域に移行 • テンポラリー・オブジェクトはnursery領域でGCされる • tenured領域でのglobal gc発生回数を抑えることができる – 更新中心のシステム: optavgpause • 更新中心の場合genconを採用してもtenured領域でのglobal gc発生回数を抑制できない • Concurrent Mark/Concurrent Sweepにより、global gcの時間を相対的に短縮できる – 最終的にはパフォーマンステストで比較をして決定 84 IBM Software Group | WebSphere software WebSphere Real Time の検討 「止まらない」Java – 通常のIBM J9 VMのGCポリシーではお客様要件を満たせない場合、 WebSphere Real Time採用による Metronome GCも検討する – Metronome GC • トータル・スループットは犠牲となるが、確定性のあるGCを提供 – 連続したGC一時停止時間(quanta)が一定時間を越えない – 一定時間内のGC停止時間の総計が指定された割合を超えない – 起動時にアプリケーションの実行に 最低限割当てられるべき割合を指定 500μs (デフォルト70%) 10ms 時間 GC処理 アプリケーション処理 85 IBM Software Group | WebSphere software その他の考慮点 大規模Javaヒープは長時間GCの原因となり得る – 少数の大規模JavaヒープのJVMよりも、1G程度のJavaヒープの複数JVM に分割した方が、GC停止時間の影響は抑えられる より新しいJVMで向上したGCパフォーマンスと生産性のメリットを得る – WXSはV1.4.2/V5.0よりも、V6.0 JVMの方がパフォーマンスが向上する 本番環境でもverbose:gcを取得、運用時の定期モニタリング対象とする 単体JVM環境では、共有クラス機能の使用も検討 – 起動時間短縮とメモリー・フットプリントの削減 • WAS ND環境ではデフォルト有効 – 共有クラスを有効に設定 • -Xshareclasses:name=<shareclassname>,groupAccess,nonFatal • -Xscmx50M(キャッシュの最大値を指定) 86 IBM Software Group | WebSphere software 6-4.障害検知 87 IBM Software Group | WebSphere software Standalone環境での障害検知 プロセス障害 – 即時検知可能:プロセス間で接続を張っており、その切断で検知 ネットワーク障害、ノード障害 – startOgServerスクリプトに –heartbeatパラメータとして指定 値 アクション パラメータの意味 -1 高速 通常、5 秒以内にフェイルオーバーを検出 安定したネットワーク環境が前提 0 標準 (デフォルト) 通常、30 秒以内にフェイルオーバーを検出 1 低速 通常、180 秒以内にフェイルオーバーを検出 88 IBM Software Group | WebSphere software WAS ND環境での障害検知 プロセス障害 – 即時検知可能:プロセス間で接続を張っており、その切断で検知 ネットワーク障害、ノード障害 – コア・グループのハートビートにより検知 • ハートビート伝送間隔=750ミリ秒 • ハート・ビート・タイムアウト=1500ミリ秒 9 実環境で負荷試験を実施し、 高負荷状況で誤検知が発生しないか確認 • 長時間GCによる誤検知に注意 89 IBM Software Group | WebSphere software スレッド・ハング検知時間の短縮 デフォルトのハング検知時間 10分からの短縮が必要 – 以下の検証開始値を元に、誤検知のない値を検討 パラメータ名 デフォルト 検証開始値 パラメータの意味 com.ibm.websphere. threadmonitor.interval 180 20 ハング確認間隔(秒) com.ibm.websphere. threadmonitor.threshold 600 30 スレッドをハングとみなすための処理時間の閾値 com.ibm.websphere. threadmonitor.false.alarm .threshold 100 100 閾値を誤って短く設定した場合、指定した回数以上 の警告が発生した場合は、自動的に1.5倍ずつ増 やします 90 IBM Software Group | WebSphere software 運用 7. 監視 91 IBM Software Group | WebSphere software 一般的な監視 – 監視要件 監視の目的 – システムの稼動状態を正確に把握し、イベント発生時に迅速に対処できる ように備えることが監視の目的 監視の種類 – 障害の発生を監視 • サービス監視 • ログ監視 – 稼動状況を監視 • ステータス監視 • パフォーマンス監視 • リソース監視 – 他に、ネットワーク監視、セキュリティ監視などの監視がありますが、ここで はWXSが直接的に関与する監視について取り扱います。 92 IBM Software Group | WebSphere software 一般的な監視 – 監視内容 障害の発生を監視 – サービス監視 • プロセスが起動しているか、また、プロセスがあがっている場合であっても、正常にサービ スできているか否か、を監視する – ログ監視 • ログにエラーを示すメッセージが書き込まれていないかを監視する 稼動状況を監視 – ステータス監視 • 現在、どのような状態(プライマリ/セカンダリ、パテーティション等の各区画がどのノードで 動いているか、や、ONLINE/QUIESCE/OFFLINE/PRELOADのどの状態にあるか)で稼 動しているかを監視する – パフォーマンス監視 • どれくらいのスループットが発揮されているか、性能的な問題はないか、を確認する – リソース監視 • どれくらいのリソースを使用しているか、を確認する 93 IBM Software Group | WebSphere software 監視の観点でのWXSアーキテクチャー ObjectGrid クライアント JVM StatsAccessor API Deployment Manager WebSphere PMI Modules (WAS Process Only) 監視アプリ TPV 内部統計データ wsadmin クライアント Mbean API 監視アプリ StatsAccessor API WebSphere PMI Modules (WAS Process Only) 内部統計データ ObjectGrid サーバー JVM :製品提供外。プログラムもしくはベンダーツールで対応 94 IBM Software Group | WebSphere software 監視の観点でのWXSアーキテクチャー WXSの監視は、内部統計データツリーから情報を取得することで行う • MBean API • 主に3rdパーティーの監視ツール(後述)と統合する場合に使用されるイン ターフェース。APIを使用してプログラムを書くことも可能。 監視 アプリケーション • xsadminコマンド • トポロジーに関する情報をテキスト形式で出力するサンプルユ ーティリティー。 Mbean API WebSphere StatsAccessor PMI API • Statistics API • 分散環境では使用不可。同一JVM内のツリー内データに直接 アクセスするAPI。 内部統計データツリー • WAS PMI • WAS 環境で使用時のみ使用可能。WAS PMIの仕組みを利用 してWXS固有のデータを利用できる。 95 IBM Software Group | WebSphere software 監視の観点でのWXSアーキテクチャー 内部統計データツリー – 以下に示すように、統計データはツリー状に保管されています。 – (以下はObjectMapをJMXで確認した例です。) ObjectGridのスコープ Mapのスコープ Mapが属するトポロジ パーティションID JMXでのAttriubute(属性)データ JMXでのオペレーション 96 IBM Software Group | WebSphere software 監視のためのAPI ‐ Statistics API 1/3 概要 – Statistics API は、内部統計ツリー内の統計データの汎用ルックアップ・メ カニズムとして使用します。統計データ取得のためにはコードを書く必要が あります。 – OGクライアントまたはOGサーバーと同一JVM内のアプリケーションでの みStatistics API を使用することができます。 • 同一JVM内のオブジェクトの情報のみ参照可能であるので、分散環境の場合、 そのままでは全てのJVMのデータを統合的に参照できません。 – 統計データの取得は、デフォルトでは使用不可になっていますが、アプリ ケーションのコードでStatsSpec インターフェースを実装することで使用す ることができます。 97 IBM Software Group | WebSphere software 監視のためのAPI ‐ Statistics API 2/3 使用方法 // retrieve a handle to the StatsAccessor StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor(); // Set the spec via the static field StatsSpec spec = new StatsSpec(StatsSpec.OG_ALL); accessor.setStatsSpec(spec); モジュールへアクセスするためのStatsAccessorオブジェクトを生 成します。これは、OgjectGridのコードの前に記述しておく必要が あります。 取得する統計データの仕様を指定します。この指定は、トランザク ション開始前に実施しておく必要があります。 具体的に計測したいトランザクション=sessionに名前を付けます。 //統計情報取得のためのトランザクションタイプの指定 sess.setTransactionType("insertTime"); sess.begin(); : sess.commit(); // Retrieve StatsFact StatsFact fact = accessor.getStatsFact("0/root/SimpleObjectGrid", StatsModule.MODULE_TYPE_OBJECT_GRID); // Retrieve module and time OGStatsModule module = (OGStatsModule)fact.getStatsModule(); 統計モジュールを取得するためのインターフェースとなる StatsFactオブジェクトを生成します。 統計データを保持するStatsModuleを取得します。StatsModule の種類は次ページを参照してください。 ActiveTimeStatistic timeStati = module.getTransactionTime("insertTime", true); 統計データオブジェクトを取得します。 time = timeStati.getMeanTime(); 統計データオブジェクトから統計データを取り出します。 98 IBM Software Group | WebSphere software 監視のためのAPI ‐ Statistics API 3/3 取得可能な項目 – OGStatsModule • トランザクション応答時間など、ObjectGrid インスタンスの統計を提供します。 – MapStatsModule • エントリー数やヒット率など、単一マップの統計を提供します。 – QueryStatsModule • 計画作成や実行時間など、照会の統計を提供します。 – AgentStatsModule • シリアライズ時間や実行時間など、DataGrid API エージェントの統計を提供しま す。 – HashIndexStatsModule • HashIndex 照会および保守の実行時間の統計を提供します。 – SessionStatsModule • HTTP セッション・マネージャー・プラグインの統計を提供します。 99 IBM Software Group | WebSphere software 監視のためのAPI ‐ MBean API 1/4 概要 – 他ベンダー含む監視ソフトウェアと統合する場合は、MBean APIを使用することに なります。(※P114「ベンダー提供監視ツールでのWXSの監視」参照) – JMX(Java Management eXtensions)では、リソースの属性(Attribute)取得と、 オペレーションを行う事が可能です。 • WXSでは、JMXのリソース取得をプログラムの中から直接取得することは出来ません。 従って、ベンダーツールを通して行う事になります。 • オペレーションについては、プログラムからコールしたり、ベンダーツールから操作したりす ることが可能です。 – Statistics APIはローカル環境のみモニター可能であるので、分散eXtreme Scale を実行中の場合は、MBean API を使用します。 使用方法 – 統計情報取得 を有効にする • サーバー・プロパティファイル中の、statisticsSpec に、取得したいデータの種類を指定す る。(詳細は、構成参照) • コードの中でStatsAccessorインターフェースを使用して有効化する。 100 IBM Software Group | WebSphere software 監視のためのAPI ‐ MBean API 2/4 取得項目 カテゴリ Agent Manager ObjectGrid ObjectGridContainer 項目 説明 MapName Gets the name of the map associated with this MBean. ObjectGridName Gets the name of the ObjectGrid containing the map associated with this MBean. OGCount The number of transactions processed. OGTransPerSecond The transactions per second for the ObjectGrid. ObjectGridName Gets the name of the map associated with this MBean. ServerName Gets the name of the server for the ObjectGrid associated with this MBean. OGMeanTranTime The mean transaction time for the ObjectGrid. OGMinTranTime The minimum transaction time for the ObjectGrid. OGMaxTranTime The maximum transaction time for the ObjectGrid. OGTotalTranTime The total transaction time for the ObjectGrid. OGStatsModule String form of OGStatsModule. ActiveShardCount Retrieve the number of active shards hosted in this ObjectGrid container. ActivatedShardCount Retrieve the total number of shards that have been activated for the life of this ObjectGrid container. DeactivatedShardCount Retrieve the total number of shards that have been deactivated for the life of this ObjectGrid container DomainName Retrieve the name of the catalog server grouping administering this container ZoneName Retrieve the name of the zone grouping that this container belongs to. Status Retrieve the status information for the shards in this container. 101 IBM Software Group | WebSphere software 監視のためのAPI ‐ MBean API 3/4 取得項目 カテゴリ ObjectGridServer ObjectMap 項目 説明 AvailableProcessors The answer from the Runtime call on the JVM hosting this server FreeMemory The answer from the Runtime call on the JVM hosting this server MaxMemory The answer from the Runtime call on the JVM hosting this server TotalMemory The answer from the Runtime call on the JVM hosting this server HostName Returns the host name for this process. ServerName Gets the name of the server associated with this MBean. ZoneName Returns the zone name for this process SafeToShutdown Returns false if server has only copy of data with replication enabled, true otherwise. MapName Gets the name of the map associated with this MBean ObjectGridName Gets the name of the ObjectGrid containing the map associated with this MBean. ServerName Gets the name of the server containing the replication group member for the map associated with this MBean. MapBatchUpdateMeanTime The mean batch update time for the map. MapBatchUpdateMinTime The min batch update time for the map. MapBatchUpdateMaxTime MapBatchUpdateMaxTime MapBatchUpdateTotalTime The total batch update time for the map MapStatsModule MapStatsModule MapCountStatistic The number of entries in the map. MapHitRateStatistic The hit rate for the map. PartitionId The identifier for this partition 102 IBM Software Group | WebSphere software 監視のためのAPI ‐ MBean API 4/4 取得項目 カテゴリ 項目 説明 CoreGroups Gets the coregroup status. ObjectGridNames Gets the ObjectGrids and mapsets in the domain HeartBeatFrequencyLevel Retrieve the heartbeat frequency level. QueryManager ObjectGridName Gets the name of the ObjectGrid containing the map associated with this MBean. QuorumManager ActiveServers Gets the number of active servers QuorumServers Gets the number of servers required for quorum ObjectGridName Retrieve the name of the ObjectGrid in which the shard resides. MapSetName Retrieve the name of the MapSet in which the shard resides. PartitionName Retreive the name of the partition in which the shard resides. Type Retrieve the type of the shard. DomainName Retrieve the name of the catalog server grouping administering this shard. State Retrieve the state of the shard. ProcessedRequestCount Retrieves the number of requests that this shard has processed since its inception. ActiveRequestCount Retrieves the number of requests currently being processed by this shard. ContainerName Retrieve the name of the container in which the shard resides. PlacementService Shard 103 IBM Software Group | WebSphere software 監視のためのAPI ‐ WAS PMI 1/5 概要 – PMI は、WebSphere Application Server に統合された環境でWebSphere eXtreme Scale を実行中の場合に使用できます。 – Statistics APIと同様に、内部統計データにアクセスし、それをWASのPMIで扱える ようにしているAPIです。 使用方法 – 項目設定 • WAS管理コンソールのメニュー「Monitoring and Tuning」から、「Performance Monitoring Infrastructure (PMI)」を選択します。取得対象のプロセスを選択して、取得す る項目を選択します。 – 表示 • WAS管理コンソールのメニュー「Monitoring and Tuning」から、「Performance Viewer / Current activity」を選択します。対象プロセスを選択して項目のデータを表示します。 ※WASのPMIに統合されているため、設定・表示方法はWASのPMIに準ずる事にな ります。 104 IBM Software Group | WebSphere software 監視のためのAPI ‐ WAS PMI 2/5 取得可能項目 – ObjectGrids – ObjectGrid Map 105 IBM Software Group | WebSphere software 監視のためのAPI ‐ WAS PMI 3/5 取得可能項目 – ObjectGrid Queries 106 IBM Software Group | WebSphere software 監視のためのAPI ‐ WAS PMI 4/5 取得項目 – HashIndex 107 IBM Software Group | WebSphere software 監視のためのAPI ‐ WAS PMI 5/5 取得項目 – AgnetManager 108 IBM Software Group | WebSphere software 監視のためのAPI ‐ xsadminコマンド 1/5 概要 – WXSのトポロジーに関する情報をテキスト表示するユーティリティーです。 • プライマリ / レプリカ 区画がどのプロセス上で稼動しているか、各マップにどれく らいのエントリが保管されているか、などの情報をテキスト表示します。 使用方法 – 以下のコマンドを実行します。 • <INSTALL_ROOT>/bin/xsadmin.[ sh | bat ] オプション – 指定するオプションは、次ページを参照してください。 109 IBM Software Group | WebSphere software 監視のためのAPI ‐ xsadminコマンド 2/5 取得対象データ指定オプション – どのようなデータを出力するかを以下のリストのひとつを指定することで規 定します。 対象データオプション 説明 -containers 全てのコンテナを表示します。 -primaries 全てのプライマリ区画を表示します。 -unassigned 全ての未アサインの区画を表示します。 -mapsizes 全てのマップのサイズを表示します。 -hosts 全てのホストを表示します。 -mbeanservers 全てのMBean サーバーのエンドポイントを表示します。 -coregroups 全てのコアグループを表示します。 -settracespec TraceSpecを設定します。 -overridequorum カタログサーバーにquorumをオーバーライドするよう通知します。 -quorumstatus カタログサーバーのquorumの状態を表示します。 -l 全てのオブジェクトグリッドとマップを表示します。 -teardown サーバーの詳細を表示します。サーバーのリストをコンマ区切りで指定します。 -routetable 現在のルーティングテーブルを表示します。 110 IBM Software Group | WebSphere software 監視のためのAPI ‐ xsadminコマンド 3/5 セキュリティ関連オプション – セキュリティが有効になっている場合、もしくはSSLを使用している場合に は以下のオプションが必要です。 セキュリティオプション 説明 -username ユーザー名を指定します。 -password パスワードを指定します。 -ssl SSLでの認証を有効にします。 -trustPath 証明書ストアへの絶対パスを指定します。 -trustPass 証明書ストアのパスワードを指定します。 -trustType 証明書ストアのタイプを指定します。 111 IBM Software Group | WebSphere software 監視のためのAPI ‐ xsadminコマンド 4/5 フィルタリングのためのオプション – 以下のオプションは、結果をフィルタリングする場合に指定します。 任意オプション 説明 -g ObjectGrid名を指定します。 -m マップセット名を指定します。 -ch カタログサービス JMXホスト名を指定します。デフォルトはlocalhostです。 -p カタログサービス JMXポートを指定します。デフォルトはlocal環境で1099、分散環境 (DM)接続で9809です。 -jmxUrl MBeanサーバーのURLを直接指定する場合に使用します。 -dmgr 分散環境でDMへ接続する場合に指定します。 -empties 空のコンテナーを表示させる場合に指定します。 -reserved 予約済みのコンテナーのみを表示させる場合に指定します。 -continuous continous map size resultsを表示させる場合に指定します。 -nopredetermine 必要なエンドポイントの事前決定を無効にしたい場合に指定します。 -force プロンプトを無効にして強制実行させる場合に指定します。バッチ実行する場合に有効な オプションです。 112 IBM Software Group | WebSphere software 監視のためのAPI ‐ xsadminコマンド 5/5 任意指定のオプション – 以下のオプションの指定は任意です。 任意オプション 説明 -fnp プライマリが存在しないサーバーをフィルタします。 -fh 指定したホストのみの結果となるようフィルタします。 -fc 指定したコンテナーのみの結果となるようにフィルタします。 -fp 指定したパーティションのみの結果となるようにフィルタします。 -fs 指定したサーバー名のみの結果となるようにフィルタします。 -fz 指定したゾーンのみの結果となるようにフィルタします。 -fm 指定したマップのみの結果となるようにフィルタします。 -fst P | A | S のどれかを指定します。(P=プライマリ、A=非同期レプリカ、S=同期レプリカ) 指定したコンテナーのタイプのみの結果となるようにフィルタします。 113 IBM Software Group | WebSphere software ベンダー提供監視ツールでのWXSの監視 ベンダー提供ツールでのWXS監視 – 特に以下のツールはWXSと容易に統合可能 • IBM Tivoli Enterprise Monitoring Agent for WebSphere eXtreme Scale • CA Wily Introscope • Hyperic HQ 114 IBM Software Group | WebSphere software IBM Tivoli Enterprise Monitoring Agent for WXS 概要 – IBM Tivoli Enterprise Monitoring Agent (ITEM agent)は、OSや各種ミドルウェアを統合的に監視するソ リューションです。 – WXSも、 IBM Tivoli Enterprise Monitoring Agent 用にカスタマイズされたエージェントを提供しています。 必要なもの – IBM Tivoli Monitoring Version 6.2.1 with fix pack 2 or later – Tivoli OS agent – WebSphere eXtreme Scale agent • IBM Open Process Automation Library (OPAL) からダウンロード可能 http://www-01.ibm.com/software/brandcatalog/portal/opal/details?catalog.label=1TW10TM8A 設定方法概略 – Tivoli Monitoring Agent の導入 – eXtreme Scale application support files の導入 – Tivoli OS agent の導入 – WebSphere eXtreme Scale agent の設定 – OGサーバーの設定 取得項目 – Transactions関連データ – Primary Shard関連データ – Memory関連データ – ObjectMap関連データ 115 IBM Software Group | WebSphere software Hyperic HQ 概要 – Hyperic HQは、OSSもしくは製品版として提供されているWebインフラ監視ソフトウェアです。 – サーバー上のミドルウェアを自動的に検知し、監視対象に組み込むことが可能です。 – WXSでも、HQが自動検知するためのプラグインを提供しています。 – Hyperic HQでは、スタンドアロン環境でのモニタリングのみサポートしています。(WAS統合 環境はサポートしていない) 必要なもの – Hyperic HQ Agent と Server 設定方法概略 – OGサーバーを起動 – プラグイン構成ファイル(extremescale-plugin.xml)とライブラリ(wxshyperic.jar)をAgentと Serverのプラグインディレクトリに配置 – Agentを構成(agent.propertiesを編集) – Agentを起動(起動で自動検知を開始) – Serverを起動 – 管理画面にアクセスしてモニタリング 取得項目 – P100 「監視のためのAPI ‐ MBean API 」 を参照ください 116 IBM Software Group | WebSphere software 【参考】Jconsoleでの統計データ参照 概要 – Jconsoleは、JDK付属の管理・監視ツールです。 – JVMのリソース使用状況や、JMXを使用してアプリケーションの稼動状況 をモニタリングすることが出来ます。 必要なもの – JDK 設定方法 – Jconsoleを起動し、URLを入力するのみ 取得項目 – P100 「監視のためのAPI ‐ MBean API 」 を参照ください 117 IBM Software Group | WebSphere software WXSの監視 まとめ 実装容易性 取得対象データの 豊富さ 監視形態 Statistics API MBeans API WebSphere PMI xsadmin × △ ○ ○ コードを書く必要があり、そ のまますぐに使えるというも のではありません。(が、そ の分柔軟性があります。) コードを書くことも出来ます が、3rdベンダーの監視ツー ルと組み合わせると比較的 簡単に実装できます。 WASのPMIの仕組みをそ のまま使用できるため、設 定のみでデータ取得が可能 です。 WXSのトポロジーのデータ がメインですが、コマンドラ インで簡単に情報の出力が 出来ます。 ○ ○ △ △ 取得可能データは豊富です。 取得可能データは豊富です。 主要なデータは取得可能で すが、詳細な取得項目は設 定することが出来ません。 z独自実装プログラム z独自実装プログラム (実装如何でリアルタイム監 視、性能情報取得量タイプ ともに可) (実装如何でリアルタイム監 視、性能情報取得量タイプ ともに可) zWAS管理コンソールでの リアルタイム状況確認 zログに書き出しての統計 データ取得 トポロジー関連のデータが 主要な取得データです。 z必要に応じてコマンド実行 (スケジューラなどに組み込 んで定期実行する形態が フィットします) z3rdベンダー監視ツールに よるリアルタイム監視 運用負荷 中 プログラムのメンテナンスが 必要 低 or 中 ツール実装では低 プログラム実装は中 高 高 管理コンソールにログインし て確認する必要あり 逐一コマンドを実行する必 要あり ログ書き出しでバッチ的に 参照する場合も、統計のた めのデータ加工が必要 スケジューラからの自動実 行の場合もスクリプトなどの メンテナンスが必要 118 IBM Software Group | WebSphere software 運用 8. ログ管理 119 IBM Software Group | WebSphere software 内容 ログ 製品が出力するログおよびダンプ ログの確認場所 トレース トレースの設定方法 FFDC ディレクトリーおよびファイル IBMサポートを受けるために必要なログ トレース仕様で使用可能なコンポーネント 120 IBM Software Group | WebSphere software ログ 121 IBM Software Group | WebSphere software 製品が出力するログおよびダンプ JVMログ • 障害解析の際に、まず確認すべきログ プロセス・ログ • verbose:gcやverbose:classを設定、GCやクラスロードの問題解析に使用 • OutOfMemory発生時にも確認 トレース・ログ • 製品機能に問題が疑われる場合に、PassportAdvantageのサポートを受け取得 javacore / javadump • スレッド・ハングや長時間実行スレッドの問題解析に使用 heapdump • メモリー・リークやOutOfMemoryエラー発生時の解析に使用 FFDC • 製品開発部門が問題判別の際に使用する 122 IBM Software Group | WebSphere software ログの確認場所 JVMログ profile_root/logs/server_name/SystemOut.log profile_root/logs/server_name/SystemErr.log プロセス・ログ profile_root/logs/server_name/native_stderr.log profile_root/logs/native_stdout.log トレース・ログ カタログ・サービスによるトレース <WXS_home>/bin/logs/<catalog_service_name>/trace.log コンテナー・サーバーでのトレース <WXS_home>/bin/logs/<server_name>/trace.log ※ログ・ロケーションを設定する方法は次ページに記載 123 IBM Software Group | WebSphere software ログのロケーション設定 コンテナー・サーバーのログ・ロケーションの設定 デフォルトでは、コンテナーのログは、サーバー・コマンドが実行されたディレクトリーにある。 <eXtremeScale_home>/bin ディレクトリーでサーバーを始動する場合、ログおよびトレース・ ファイルは bin ディレクトリーの logs/<server_name> ディレクトリー内にある。コンテナー・サー バー・ログの代替ロケーションを指定するには、以下のコンテンツを使用して server.properties ファイルなどのプロパティー・ファイルを作成する。 workingDirectory=<directory> traceSpec= systemStreamToFileEnabled=true workingDirectory プロパティーは、ログおよびオプションのトレース・ファイルのルート。 WebSphere eXtreme Scale は、traceSpec オプションでトレースが使用可能になっていると、 SystemOut.log ファイル、SystemErr.log ファイル、およびトレース・ファイルを使用して、コンテ ナー・サーバーの名前を持つディレクトリーを作成する。コンテナー開始中にプロパティー・ファイ ルを使用するには、-serverProps オプションを使用して、サーバー・プロパティー・ファイルのロ ケーションを指定する。 124 IBM Software Group | WebSphere software トレース 125 IBM Software Group | WebSphere software トレースの設定方法 WAS ND : 通常と同様、管理コンソールよりログ詳細レベルを設定 Standalone環境 : 起動スクリプトでの設定 • 起動スクリプトに -traceSpec / -traceFile パラメータを指定 startOgServer.sh catalogServer -traceSpec ObjectGridPlacement=all=enabled -traceFile /work/trace.log startOgServer.sh ogServer01 ・・・ -traceSpec ObjectGridJPA=all=enabled -traceFile /work/trace.log 126 IBM Software Group | WebSphere software トレースの設定方法 WASおよびStandalone環境両方 objecgtGridServer.propertiesファイルでの設定 – クラスパス内に存在すれば、自動的にロードされる • <WXS_ROOT>ObjectGrid/properties下にサンプルがあるので、編集して利用 プログラミングでの設定 ObjectGridManager manager = ObjectGridManagerFactory.getObjectGridManager(); manager.setTraceEnabled(true); manager.setTraceFileName("logs/myClient.log"); manager.setTraceSpecification("ObjectGridReplication=all=enabled") Xsadminスクリプトを使用しての指定 <WXS_ROOT>ObjectGrid/bin/xsadmin.sh -setTraceSpec "ObjectGridReplication=all=enabled" 127 IBM Software Group | WebSphere software トレースの設定方法 カタログ・サービスでトレース 以下はその例 startOgServer.sh catalogServer -traceSpec ObjectGridPlacement=all=enabled -traceFile /home/user1/logs/trace.log スタンドアロン・コンテナー・サーバーでのトレース 以下はその例 startOgServer.sh c0 -objectGridFile ../xml/myObjectGrid.xml –deploymentPolicyFile ../xml/myDepPolicy.xml -catalogServiceEndpoints server1.rchland.ibm.com:2809 -traceSpec ObjectGridPlacement=all=enabled -traceFile /home/user1/logs/trace.log 128 IBM Software Group | WebSphere software FFDCディレクトリーおよびファイル FFDC ファイルは、IBM サポートがデバッグの補助とするファイル ・問題が生じた場合に IBM サポートによって要求される場合がある ・ffdc というラベルの付いたディレクトリーに存在し、以下のファイルに類似したファイ ルが含まれている 以下、例 server2_exception.log server2_20802080_07.03.05_10.52.18_0.txt 129 IBM Software Group | WebSphere software IBMサポートを受けるために必要なログ トレースを使用可能にすることで、ご使用の環境に関する情報をIBMサポートに提供 することが可能 トレースについて WXS のトレースは、いくつかの異なるコンポーネントに分けられる。 WAS のトレース と同様、使用するトレース・レベルを指定可能。 <一般的なトレースのレベル> all、debug、entryExit、および event トレース・ストリングの例 ObjectGridComponent=level=enabled 130 IBM Software Group | WebSphere software トレース仕様で指定可能なコンポーネント コンポーネント 説明 ObjectGrid 汎用・コア・キャッシュ・エンジン。 ObjectGridBalancer 動的デプロイメント断片バランス構成。 ObjectGridCatalogServer 汎用カタログ・サービス。 ObjectGridChannel 静的デプロイメント・トポロジー通信。 ObjectgridCORBA 動的デプロイメント・トポロジー通信。 ObjectGridDataGrid AgentManager API。 ObjectGridEntityManager EntityManager API。Projector オプションとともに使用。 ObjectGridEvictors ObjectGrid 組み込み Evictor。 ObjectGridLocking ObjectGrid キャッシュ・エントリー・ロック・マネージャー。 ObjectGridPlacement カタログ・サーバー断片配置サービス。 ObjectGridReplication レプリケーション・サービス。 ObjectGridRouting クライアント/サーバー・ルーティングの詳細。 ObjectGridServerSessionCache ObjectGrid セッション・キャッシュ。 131 IBM Software Group | WebSphere software トレース仕様で指定可能なコンポーネント コンポーネント 説明 ObjectGridStats ObjectGrid 統計。 ObjectGridStreamQuery ストリーム照会 API。 Projector EntityManager API 内のエンジン。 QueryEngine オブジェクト照会 API および EntityManager 照会 API のための照会エンジン。 QueryEnginePlan 照会計画診断。 ObjectGridDynaCache WebSphere eXtreme Scale 動的キャッシュ・プロバイ ダー。 ObjectGridMBean 管理 Bean ObjectGridJPA Java™ Persistence API (JPA) ローダー。 ObjectGridJPACache JPA キャッシュ・プラグイン。 132 IBM Software Group | WebSphere software 運用 9. 問題判別 133 IBM Software Group | WebSphere software 問題が発生したら・・・ まず SystemOut.log / SystemErr.log を確認 – アプリケーションの問題か製品の問題かの切り分けを実施 • 例外がスローされている場合は、例外の内容およびスタック・トレースから、 どのクラスがどのような原因で例外をスローしたのかを絞り込む 製品のエラー・メッセージが出力されている場合は、InfoCenterでエラー・ コードとその対応を確認 – http://publib.boulder.ibm.com/infocenter/wxsinfo/v7r0/index.jsp?topic=/com.ibm.w ebsphere.extremescale.prog.doc/rxsmessages.html 類似の問題が報告されていないか、製品サポート・サイトを確認 – http://www-01.ibm.com/software/webservers/appserv/extend/support/ 134 IBM Software Group | WebSphere software 一般的な問題への対応 スレッド・ハング/処理の遅延が発生したら・・・ – javacoreを取得 – IBM Support Assistant に含まれる TMDA で解析 • • IBM Thread and Monitor Dump Analyzer for Java (TMDA) どの処理から呼び出されたどのメソッドが処理待ちとなっていたかを確認する 135 IBM Software Group | WebSphere software 一般的な問題への対応 OutOfMemoryが発生したら・・・ – Heapdumpを取得 – IBM Support Assistant に含まれる MDD4J で解析 • • Memory Dump Diagnostic for Java (MDD4J) Leakの可能性のあるオブジェクト候補まで、自動で解析 136 IBM Software Group | WebSphere software 運用 10.セキュリティ 137 IBM Software Group | WebSphere software WXSの提供するセキュリティ機能 1. トランスポート層の暗号化 – SSL/TCLにより、通信の暗号化をサポート 2. 認証/認可 – 認証(Authentication) • クライアント・サーバー間のクレデンシャル認証をサポート – OGクライアントは認証に必要な認証情報(Credential)をOGサーバーに送付する > 認証情報はユーザー名/パスワード、クライアント証明書、ケルベロス・チケットなど可能 • サーバー・サーバー間のクレデンシャル認証をサポート – 認可(Authorization) • 基本認可機能 マップ認可:マップに対して挿入、参照、更新、削除、無効化が可能か否か ObjectGrid認可:OGにおいてObjectQuery / EntityQueryを実行可能か否か データ・グリッド エージェント認可:OGに対して、データ・グリッド エージェントをデプロイ可能か否か サーバー側マップ認可:サーバー側マップをクライアントに複製できるか否か、サーバー側マップに 対して動的インデックスを作成できるか否か – 管理認可:管理タスクを実行できるか否か – – – – • 作成者限定アクセス認可機能 138 IBM Software Group | WebSphere software セキュリティ構成ファイル 3つのセキュリティ構成ファイル – セキュリティ記述子XMLファイル : objectGridSecurity.xml • ObjectGrid全体に関係するセキュリティ情報を記述 – セキュリティ機能の有効/無効、シングル・サイン・オン設定、認証キャッシュ設定、管理 認証/認可設定、認証機能設定、システムCredentialGenerator関連設定 – サーバー・プロパティ・ファイル : objectGridServer.properties • サーバー固有のセキュリティ情報を記述するプロパティ・ファイル – セキュリティ機能の有効/無効、認証サポートレベル設定、SSL関連設定、セキュア・トー クン機能設定 – クライアント・プロパティ・ファイル : objectGridClient.properties • セキュアなObjectGridサーバーに接続するために必要なクライアント・プロパ ティ・ファイル – セキュリティ機能の有効/無効、認証サポートレベル設定、認証リトライ回数設定、 CredentialGenerator関連設定、SSL関連設定 139 IBM Software Group | WebSphere software トランスポート層の暗号化 TLS/SSLによる通信の暗号化 – objectgridClient.properties / objectgridServer.properties内の transportTypeプロパティの値によって決定 – transportTypeには、以下の3つの値が選択可能 • TCP/IP : TCP/IP接続のみサポート • SSL-Supported : デフォルト値、TCP/IP接続およびSSL接続をサポート。通信相手もSSL 接続が可能な場合SSLが選択される • SSL-Required : SSL接続のみサポート。通信相手がSSL接続をサポートしない場合エ ラーとなり接続できない OG Server OG Client TCP/IP SSL Supported SSL Required TCP/IP TCP/IP TCP/IP エラー SSL Supported TCP/IP SSL SSL SSL Required エラー SSL SSL 140 IBM Software Group | WebSphere software トランスポート層の暗号化(つづき) SSLの構成 – objectgridClient.properties / objectgridServer.properties内で設定 プロパティ名 有効値 解説 alias 任意 鍵ストア内に複数の証明書がある場合に、使用する証明 書のエイリアスを指定 contextProvider IBMJSSE2、 IBMJSSE、 IBMJSSEFIPS トラスト・サービスのコンテキスト・プロバイダーの名前を 指定 protocol SSL、SSLv2、SSLv3、 TLS、TLSv1 使用するセキュリティ・プロトコルのタイプを、 Java Secure Socket Extension (JSSE) プロバイダーに 基づいて設定 keyStore 任意 使用する鍵ストアへのフル・パスを指定 keyStoreType JKS、JCEK、PKCS12 使用する鍵ストアのタイプ keyStorePassword 任意 使用する鍵ストアのパスワード(エンコード可能) trustStore 任意 使用するトラスト・ストアへのフル・パスを指定 trustStoreType JKS、JCEK、PKCS12 使用するトラスト・ストアのタイプ trustStorePassword 任意 使用するトラスト・ストアのパスワード(エンコード可能) 141 IBM Software Group | WebSphere software OGコンポーネント WXSの認証・認可の仕組み 4.Credential ObjectGrid Client 3.Credential 1.getCredential( ) 2.Credential Credential Generator ObjectGrid Server Runtime プラグイン 5.Credential Authenticator 外部サービス User Registry 6.Subject 9.true / false 7.Subject & Permission ObjectGrid Authorization ObjectGrid Server 8.Subject & Permission Authorization Service Credential 認証 認可 1. 7. 2. 3. 4. 5. 6. OGクライアントがCredentialGeneratorプラグイ ンのgetCredentialを呼出す CredentialGeneratorがCredentialを生成しOG クライアントに戻す 要求とともにCredentialをサーバーに送付 要求を処理する前に、Authenticatorプラグインを 使用して、Credentialの認証を実施 AuthenticatorプラグインがLDAPなどのユー ザー・レポジトリを確認し、認証の可否を決定 正常に認証された場合、OGクライアントをあらわ すSubjectが返される 8. 9. サーバー・ランタイムがSubjectと必要なパーミッ ションの情報をAuthorizationプラグインに送付 Authorizationプラグインは、 Subjectと必要な パーミッションの情報をAuthorization Serviceに 送り、認可の可否を決定 認可の可否がtrue/falseで返される 142 IBM Software Group | WebSphere software WXSにおける認証 以下の3つのプラグイン実装が必要 1. Credentialプラグイン – クライアントのアイデンティティを表現するオブジェクト – ObjectGridクライアント側に配置 2. CredentialGeneratorプラグイン – Credentialオブジェクトのファクトリー・クラス – ObjectGridクライアント側に配置 3. Authenticatorプラグイン – ObjectGridクライアントから渡されたCredentialオブジェクトの認証を実施 – 正常に認証が行われた場合には、Subjectを返す – ObjectGridサーバー側で稼働 143 IBM Software Group | WebSphere software WXSにおける認証:認証に関わるプラグイン 1. Credentialプラグイン – クライアントのアイデンティティを表現するオブジェクト – com.ibm.websphere.objectgrid.security.plugins.Credentialを実装 • 製品提供クラス (いずれもパッケージは com.ibm.websphere.objectgrid.security.plugins.builtins) 製品提供クラス名 用途 ClientCertificateCredential クライアント証明書に基づくクレデンシャル UserPasswordCredential ユーザーID/パスワードの組み合わせによるクレデンシャル WSTokenCredential WASトークンによるクレデンシャル 2. CredentialGeneratorプラグイン – Credentialオブジェクトのファクトリー・クラス – com.ibm.websphere.objectgrid.security.plugins.CredentialGeneratorを実装 • 製品提供クラス (いずれもパッケージは com.ibm.websphere.objectgrid.security.plugins.builtins) 製品提供クラス名 用途 UserPasswordCredentialGenerator UserPasswordCredentialのジェネレーター WSTokenCredentiaGenerator WSTokenCredentialのジェネレーター 144 IBM Software Group | WebSphere software WXSにおける認証:認証に関わるプラグイン(つづき) 3. Authenticatorプラグイン – ObjectGridクライアントから渡されたCredentialオブジェクトの認証を実施 – 正常に認証が行われた場合には、Subjectを返す – com.ibm.websphere.objectgrid.security.plugins.Authenticatorを実装 • 製品提供クラス (いずれもパッケージは com.ibm.websphere.objectgrid.security.plugins.builtins) 製品提供クラス名 用途 KeyStoreLoginAuthenticator キー・ファイルに対してユーザーID/パスワードで認証を実施 ※サンプルとしての提供。本番環境での使用不可 LDAPAuthenticator LDAPに対してユーザーID/パスワードで認証を実施 ※サンプルとしての提供。本番環境での使用不可 CertificateMappingAuthenticator SSL証明書の内容を単純にSubjectにマップ ※サンプルとしての提供。本番環境での使用不可 WSTokenAuthenticator WASトークンの認証を実施 145 IBM Software Group | WebSphere software WASセキュリティ・インフラとWXS認証の統合 WASセキュリティ・インフラと統合するためには、以下のプラグインを指定 – Credentialプラグイン • com.ibm.websphere.objectgrid.security.plugins.builtins.WSTokenCredential – CredentialGeneratorプラグイン • com.ibm.websphere.objectgrid.security.plugins.builtins.WSTokenCredential Generator – Authenticatorプラグイン • com.ibm.websphere.objectgrid.security.plugins.builtins.WSTokenAuthentic ator 146 IBM Software Group | WebSphere software WXSにおける認可 2種類の認可メカニズムをサポート – JAASによる認可 – ObjectGridAuthorizationプラグインによるカスタム認可 • カスタム認可ではTAMとの連携や ポリシー・データベース、ポリシー・ サーバーとの連携も可能 認可メカニズムの設定方法 – ObjectGrid構成ファイルでの指定 <objectGrids> <objectGrid name=“secureClusterObjectGrid” securityEnabled="true" authorizationMechanism= “AUTHORIZATION_MECHANISM_JAAS”> ・・・ </objectGrid> </objectGrids> • authorizationMechanism 属性に いずれかの値を指定 – AUTHORIZATION_MECHANISM_JAAS – AUTHORIZATION_MECHANISM_CUSTOM – プログラミングでの指定 • ローカル構成のみサポート • ObjectGridインターフェース setAuthorizationMechanism()メソッドで指定 147 IBM Software Group | WebSphere software WXSにおける認可 認可検査期間の設定 – パフォーマンスを向上させるため、マップ認可検証結果のキャッシングをサポート • デフォルトでは、認可が必要なリソースにアクセスする毎に認可処理が発生 • 認可検査期間が設定されている場合、Subjectに基づいてキャッシュ内を検索。キャッシュ 内でオブジェクトが見つからない場合、認可処理を実施し、結果をキャッシュに格納 – 設定方法 • ObjectGrid構成ファイルで、permissionCheckPeriod属性を秒数で指定 <objectGrids> <objectGrid name=“secureClusterObjectGrid” securityEnabled="true" authorizationMechanism=“AUTHORIZATION_MECHANISM_JAAS” permissionCheckPeriod=“30” > ・・・ </objectGrid> </objectGrids> • プログラミングで指定 – ローカル構成のみサポート – ObjectGrid.setPermissionCheckPeriod(int period) 148 IBM Software Group | WebSphere software WXSにおける認可 5つの処理に分けて認可の設定が可能 – MapPermission • ObjectMapインターフェースのメソッドに対するアクセス制御 – – 許可: read / write / insert / remove / invalidate / all ObjectGridPermission • ObjectGridインターフェースのメソッドに対するアクセス制御 – – 許可アクション: query / dynamicmap ServerMapPermission サーバー側のObjectMapインターフェースのメソッドに対するアクセス制御 • – – 許可アクション: replicate / dynamicIndex AgentPermission • GridAgentインターフェースのメソッドに対するアクセス制御 – – 許可アクション: エージェント実装クラス名 またはパッケージ名をコンマで区切ったストリング AdminPermission • WXS管理機能の処理に対するアクセス制御 – 許可アクション: admin / monitor 149 IBM Software Group | WebSphere software WXSにおける認可:JAAS WXSはSubjectと現行要求のアクセス制御コンテキストのマッチングを実施 – Subjectには複数のPrincipalを持たせることができる(ユーザー名やグループ名) – ポリシーが特定のPrincipalに許可を与えているかを自動的に確認 JAAS認可ポリシー・ファイル – 設定方法 • Javaポリシー・ファイル(<JVM_ROOT>/jre/lib/security/java.policy)に直接記述 • JAAS認可ポリシー・ファイルを作成し、JVM引数として指定 – -Djava.security.auth.policy=file:[JAAS_AUTH_POLICY_FILE] – ポリシーファイルの指定例 grant codebase “http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction” Principal com.ibm.ws.security.common.auth.WSPrincipalImpl “myPrincipal1” { permission com.ibm.websphere.objectgrid.security.MapPermission “mySecureObjectGrid.employees”, “read,insert”; permission com.ibm.websphere.objectgrid.security.MapPermission “mySecureObjectGrid.offices”, “read,insert”; }; 150 IBM Software Group | WebSphere software WXSにおける認可:カスタム認可 ObjectGridAuthorizationプラグインの実装 – checkPermission(Subject subject, Permission permission) に認可ロジックを 実装 • Tivoli Acccess Managerポリシー・サーバーなどとの連携も可能 実装したObjectGridAuhtorizationプラグインを設定 – 設定方法 • ObjectGrid構成ファイルで 実装クラス名を指定 <objectGrids> <objectGrid name=“secureClusterObjectGrid” securityEnabled="true" authorizationMechanism= “AUTHORIZATION_MECHANISM_CUSTOM”> <bean id="ObjectGridAuthorization" className="com.test.ObjectGridAuthorizationImpl" /> ・・・ </objectGrid> </objectGrids> • プログラミングで指定 – ローカル構成のみサポート – ObjectGrid.setObjectGridAuthorization(ObjectGridAuthorization) 151 IBM Software Group | WebSphere software WXSにおける認可:作成者限定アクセス認可 作成者限定アクセス認可機能 – 作成者限定アクセス認可機能を使用することで、データ作成者のみに対するアクセ ス制御を設定可能 – MapPermissionによる設定はMapレベルでのアクセス制御であり、個別エントリー に対するアクセス制御ではない – 3つのモードを提供 • disabled : 作成者限定アクセス機能は使用不可 • complement : マップ許可と 作成者限定アクセスの機能の両方が有効 • supersede : 作成者限定アクセス機能のみ有効 – 設定方法 • ObjectGrid構成ファイルで、 accessByCreatorOnlyMode属性を指定 <objectGrids> <objectGrid name=“secureClusterObjectGrid” securityEnabled="true“ accessByCreatorOnlyMode="supersede“ > ・・・ </objectGrid> </objectGrids> • プログラミングで指定 – ローカル構成のみサポート – ObjectGrid.setAccessByCreatorOnlyMode(int accessByCreatorOnlyMode) 152 IBM Software Group | WebSphere software WXSにおける認可:作成者限定アクセス認可(つづき) 以下のMapPermissionと組合わせた場合のアクセス認可 grant codebase “http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction” Principal com.acme.PrincipalImpl “Manager1“ { permission com.ibm.websphere.objectgrid.security.MapPermission ”banking.account”, “all” }; grant codebase “http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction” Principal com.acme.PrincipalImpl “Employee1” { permission com.ibm.websphere.objectgrid.security.MapPermission "banking.account", "read,insert" }; プリンシパルと 作成者限定アクセス認可モード read insert update delete invalidate Manager1 disabled ○ ○ ○ ○ ○ complement ※ ※ ※ ※ ※ supersede ※ ※ ※ ※ ※ disabled ○ ○ × × × complement ※ ※ × × × supersede ※ ※ ※ ※ ※ Employee1 凡例: ○マップ内の全データにアクセス可能 ※自分自身がロードしたデータに限りアクセス可能 ×アクセス不可 153 IBM Software Group | WebSphere software グリッド間認証 SecureTokenManagerプラグイン – サーバー間認証を実装することが可能 • クラスターに参加するサーバーが、正しいサーバーかの確認を実施 • パスフレーズが一致するか否かで認証を実施 • そのまま使用可能な製品実装クラスも提供 – objectgridServer.properties内で設定を実施 • authenticatorSecret – サーバー間認証に使用されるパスフレーズ。デフォルト・パスフレーズはObjectGridDefaultSecret • secureTokenManager – none: SecureTokenManagerを使用しない – custom: ユーザー実装 SecureTokenManager を使用 – default: 製品提供SecureTokenManager を使用。 > defaultの場合、ScureTokenの暗号化に使用される以下の情報も指定が必要 secureTokenKeyStore, secureTokenKeyStorePassword, secureTokenKeyStoreType, secureTokenKeyPairAlias, secureTokenKeyPairPassword, secureTokenSecretKeyAlias, secureTokenSecretKeyPassword, secureTokenCipherAlgorithm, secureTokenSignAlgorithm 154 IBM Software Group | WebSphere software セキュリティを有効にしたサーバーの起動[Standalone] CatalogServer – 追加でセキュリティ記述子ファイルとサーバー・プロパティ・ファイルを指定 ./startOGServer.sh catalogServer ・・・ -clusterSecurityFile <セキュリティ記述子XMLファイル> -serverProps <サーバー・プロパティ・ファイル> ObjectGridサーバー – 追加でサーバー・プロパティ・ファイルを指定 ./startOGServer.sh <server_name> ・・・ -serverProps <サーバー・プロパティ・ファイル> ObjectGridクライアント – 追加でクライアント・プロパティ・ファイルを指定 ./startOGServer.sh <server_name> ・・・ -clientProps <クライアント・プロパティ・ファイル> 155 IBM Software Group | WebSphere software セキュリティを有効にしたサーバーの起動[WASND] CatalogServer – 汎用JVM引数にセキュリティ記述子ファイルとサーバー・プロパティ・ファイルを指定 -Dobjectgrid.cluster.security.xml.url=file://<PATH>:<セキュリティ記述子XMLファ イル> -Dobjectgrid.server.props=<PATH>/<サーバー・プロパティ・ファイル> ObjectGridサーバー – 汎用JVM引数に追加でサーバー・プロパティ・ファイルを指定 -Dobjectgrid.server.props=<PATH>/<サーバー・プロパティ・ファイル> ObjectGridクライアント – 汎用JVM引数にクライアント・プロパティ・ファイルを指定 -Dobjectgrid.client.props=<PATH>/<クライアント・プロパティ・ファイル> 156 IBM Software Group | WebSphere software 参考資料 製品マニュアル – WebSphere eXtreme Scale wiki • http://www.ibm.com/developerworks/wikis/display/extremescale/Home – InfoCenter • http://publib.boulder.ibm.com/infocenter/wxsinfo/v7r0/index.jsp フォーラム – WebSphere Extended Deployment • https://www.ibm.com/developerworks/forums/forum.jspa?forumID=778 ガイド – WebSphere eXtreme Scale (WXS) V6.1 ObjectGrid デザイン・ガイド • http://www.ibm.com/developerworks/jp/websphere/library/wxd/wxs61_design_guide/ – WebSphere XD V6.1 テクニカル・ワークショップ • http://www.ibm.com/developerworks/jp/websphere/library/wxd/wxd61_ws/ developerworks (US) – IBM Extreme Transaction Processing (XTP) Patterns: Scalable and robust HTTP session management with WebSphere eXtreme Scale • http://www.ibm.com/developerworks/websphere/library/techarticles/0905_gaur/0905_gaur.html – Know your WebSphere Application Server options for a large cache implementation • http://www.ibm.com/developerworks/websphere/techjournal/0801_alcott/0801_alcott.html 157