...

WXS V7.0 2009/12 ISE Workplace XD team © 2009 IBM Corporation

by user

on
Category: Documents
35

views

Report

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
Fly UP