Comments
Description
Transcript
システム設計 1 ISE Webシステム基盤 佐藤 なみえ()
システム設計 ISE Webシステム基盤 佐藤 なみえ([email protected]) 1 05. システム設計 Disclaimer この資料は日本アイ・ビー・エム株式会社ならびに 日本アイ・ビー・エム システムズ・エンジニアリング株式会社の正式なレビューを受けておりませ ん。 当資料は、資料内で説明されている製品の仕様を保証するものではありません。 資料の内容には正確を期するよう注意しておりますが、この資料の内容は2010年12月現在の情 報であり、製品の新しいリリース、PTFなどによって動作、仕様が変わる可能性があるのでご注意 下さい。 今後国内で提供されるリリース情報は、対応する発表レターなどでご確認ください。 2 WAS V7 最新動向Workshop 2 05. システム設計 Agenda §1. JVM GCポリシーの選択 §2. セキュリティ – §2.1. SSLの証明書期限切れ問題 – §2.2. SSLの2010年問題 – §2.3. SAMLサポート §3. タイマー設計 §4. MDBリスナーサービスの選択 3 よく聞かれる 最新事例 よく聞かれる 重要 V7.0.0.7 New よく聞かれる Update WAS V7 最新動向Workshop 3 セッション番号. セッション番号. セッションタイトル §1. JVM GCポリシーの選択 4 WAS V7 最新動向Workshop 4 05. システム設計 JVM設計でよくある質問 GCポリシーは何を選択すればよいですか? genconは使われていますか? 考慮点は何ですか? 大容量ヒープの場合の考慮点は何ですか? 確認 GC(ガーベッジ・コレクション)とは 9GCは、JVMが動的に確保したメモリ領域のうち、不 要になった領域を自動的に解放する機能 9GCの実行時間はアプリケーションが停止する 5 JVM WAS V7 最新動向Workshop GCとはJavaヒープ上の不要オブジェクトを自動的に開放する機能です。 GCの実行時は、アプリケーションが停止します。 IBMJDKで提供されている4つのGCポリシーの選択基準、特にgenconについてご 紹介します。 5 05. システム設計 GCのポリシー選択、ヒープサイジングのステップ ステップ1 アプリケーション特性を把握する ステップ2 要件定義 設計 アプリケーション特性を基に、適切なGCポリシーを選択する GCのメカニズムを理解する GCに適した一般的なアプリケーション特性を理解する ステップ3 ヒープサイズを見積もる ステップ4 構築 テスト ステップ5 6 パフォーマンス要件とアプリケーション特性を把握する 大容量ヒープの考慮点を把握する ヒープサイズが適切であることを確認する GCのモニタリング方法を理解する 一般的な評価基準を把握する 十分なテスト・チューニングを行う WAS V7 最新動向Workshop GCやポリシーの調整については、テストフェーズでのGCのモニタリング方法やモ ニタリング結果の評価基準についてのガイドがあります。 今回は、設計フェーズでGC/ヒープサイズの観点でやるべきことをご紹介します。 6 05. システム設計 ステップ1:アプリケーション特性の把握 アプリケーション特性とパフォーマンス要件を把握する アプリケーション特性を把握する – 例 • DBアクセスなどトランザクションが多く発生する • セッションオブジェクトが多く、セッションタイムアウトが長い レスポンス • バッチタイプのアプリケーションである タイム スルー プット パフォーマンス要件を把握する – 例 • スループット(システムが処理できるデータ量)を最大にしたいのか? • レスポンスタイムを最小にしたいのか? – 平均レスポンスタイムと最大レスポンスタイムのどちらが重要なのか? – 同じGCの実行時間でも、それが問題になるかどうか?はパフォーマンスの 要件に依存する – アプリケーションのレスポンスタイムに影響するものとして、GCはそのひとつ である 7 WAS V7 最新動向Workshop まず最初にアプリケーション特性とパフォーマンス要件を把握します。 特に、JVMのパフォーマンスに問題があるかどうか?はパフォーマンスの要 件に依存します。 GCの実行時間が500ミリ秒でも、問題となるケースもあるし問題とな らないケースもあります。 数十ミリ秒のGC実行時間の改善が、有用であるケースもあるしそう でないケースもあります。 また、基本的なことですが、GCの実行時間とアプリケーションのレスポンス タイムはイコールではない点も認識しておく必要があります。 GCの実行時間はアプリケーション処理は停止しますが、停止時間 が短いからといって、レスポンスタイムが保証されるわけではありませ ん。また、レスポンスタイムが長さが、すべてGCの停止時間に起因し ているわけでもありません。 7 05. システム設計 ステップ2:GCメカニズムの理解 GCポリシー optthruput (Optimize for throughput) JDK 6(WAS 7)の デフォルト optavgpause (Optimize for pause time) スループットと停止時間 のトレードオフ gencon (Generational concurrent) optthruputとoptavgpause のハイブリッド subpool (Subpooling) アプリケーションスレッドとGCスレッドの関係 アプリ稼動 スレッドn GC 時間 スループットが 高い GCによる停止時間 が長い Global GC Scavenge GC スレッドn Concurrent mark 時間 GCによる停止時間 が低い スループットが optthruputより低い (GCとAppの 並行処理のため) Concurrent sweep スレッドn 時間 ライフサイクルの短 いObjに対しては、 短いGC処理 ライフサイクルの長いObj に対しては、GCとAppの 並行処理 POWERアーキテクチャー・プラットフォームのSMP構成マシンでのみ有効。 JDK 6ガイドでは16CPU以上、WAS 7ガイドでは8CPU以上での使用が推 奨される。 8 WAS V7 最新動向Workshop 適切なGCポリシーを選択する前に、各GCの動きを確認します。 詳細は、下記ドキュメントをご参照ください。 WebSphere Application Server V7.0によるWebシステム基盤設計ワークショップ 資料 JVM設計 http://public.dhe.ibm.com/software/dw/jp/websphere/was/was7_guide/WASV 70Design_02JVM.pdf JVM設計-参考http://public.dhe.ibm.com/software/dw/jp/websphere/was/was7_guide/WASV 70Design_reference_02JVM.pdf 8 05. システム設計 【参考】ステップ2:GCメカニズムの理解 genconの動作 確認 9 オブジェクト寿命の傾向に着目したGC方式 9 GC対象となる確率の低いオブジェクトにはGCはあまりかけずに、GC対象とな る確率の高いオブジェクトにGCが多くかかるようにオブジェクトの配置を決定 New領域(new obj 割当) Scavenge GC実行 Allocate space Survivor space ①Before Scavenge GC ②After Scavenge GC Old領域(old obj 割当) Global GC実行 Tenured space GC対象obj 使用中obj Survivorへコピー 長い期間(JVMが 自動調整)GCされ ない使用中obj Old領域へコピー Allocate spaceとSurvivor space が入れ替わる 9 WAS V7 最新動向Workshop genconポリシーの場合は、他のポリシーと異なり、オブジェクトのライフサイクルに あわせて領域がNew領域とOld領域に分割されます。New領域は、さらに AllocateSpaceとSurvivorSpaceに分割されます。 New領域にアロケートされたオブジェクトは、一定期間GC対象にならない場合は Old領域に移動されます。 9 05. システム設計 ステップ2:GCポリシーの選択 GCポリシー GC実行によ 適するアプリケーション る停止時間 optthruput 長い レスポンスタイムよりス ループットを重視するア プリケーション(バッチ 処理等) 短い 一般的に、 opttruputの 90~95% スループットよりレスポ ンスタイムを重視する アプリケーション New領域 (ライフサ イクルの 短いobj) 短い ライフサイクルの短い オブジェクトが多いアプ リケーション(トランザク ション・ベース等) Old領域 (ライフサ イクルの 長いobj) 長い 発生頻度 が低い optavgpause gencon よく聞かれる ヒープサイズ 設定箇所 初期ヒープサイズ 最大ヒープサイズ 実績 多数 WAS 7のデフォルト 値 少ない 初期ヒープサイズ 最大ヒープサイズ + New領域/Old領域 のサイズ 10 多数 WebSphere Portal のデフォルト値 WESB 7のデフォル ト値 WAS 8のデフォルト 値(β版InfoCenter より) WAS V7 最新動向Workshop GCポリシーの選択について上記にまとめました。 一般的に、optthruputは、GC実行による停止時間が長いかわりにスループットがよ いので、バッチ型処理やスループット重視型のアプリケーションに向いています。 genconは、オブジェクトのライフサイクルが短いトランザクションとオブジェクトのライ フサイクルが長いフレームワークが共存するようなトランザクション型の処理に向い ているといわれています。 10 05. システム設計 ステップ3:ヒープサイズの見積もり ヒープサイズを見積もる例 – アプリケーション・サーバのメモリ・フットプリント • • 領域 OLD メモリのモニタリングツール(後述verbose:gcログやTPV)でアプリケーションサーバ起動時のメモリ使用量を把握 管理コンソールの有無、ランタイム・プロビジョニング機能の有無とOS、アプリケーションのタイプにより、メモリ使用 量が異なる – アプリケーション・フレームワークの使用領域 • サンプルシナリオを実行し、メモリのモニタリングツールで、GC実行後の使用領域等から推定 – セッション・オブジェクト • 最大セッション・サイズ*最大セッション数 – TPVで最大セッション・サイズを把握 – 最大セッション数は、サーバ台数とAffinityの有無、セッションタイムアウトも考慮 – メモリ間セッションパーシスタンスの有無も考慮 領域 NEW – トランザクションが使用する領域 • (1トランザクション処理で使用する領域+データ量)*最大同時トランザクション数 – 1トランザクション処理で使用する領域は、サンプルシナリオを実行して確認 – 最大同時トランザクション数はサーバ台数も考慮 – ファイル等の大きいデータを扱うシナリオも考慮 – 安全率、余裕率を掛ける • 例)1.5倍~2倍程度 – JVM環境の調整分を掛ける • • • 例) genconの場合、New領域はSurvivor spaceを考慮して2倍する 例) JVMはヒープ使用率を40~70%で自動調整するため、1.2倍する 例) 64ビット版JVMの場合、32ビット版JVMに比べて最大で60%(note参照)程度のメモリを使用するため、1.2倍す る 11 WAS V7 最新動向Workshop ヒープサイズの見積もりには、明確なガイドがありません。しかし、ヒープサイズが全 く想定できない場合や、見積もったヒープサイズと大きな隔離が無いかを確認する ために、見積もりが必要な場合があります。 見積もりの観点を例として、上記にまとめました。 genconの場合は、アプリケーション・サーバ、フレームワーク、セッション・オブジェ クトが使用する領域がOld領域となり、トランザクションが使用する領域がNew領域 となります。 安全率やJVM環境の調整分も考慮する必要があります。 64bitの場合、32bitJVMに比べて最大60%のメモリを使用しますが、WAS 7では参 照圧縮の機能があるため、10%から20%に抑えることができます。 11 05. システム設計 ステップ3:巨大ヒープ を使用する場合の考慮点 よく聞かれる 巨大ヒープの必要性を確認する ヒープサイズが大きいほど、ネイティブヒープも使用する 32ビットJVMの場合、制限値と推奨値がある プラットフォーム AIX オプション automatic Linux Hugemem Kernel Windows /3GB z/OS 設定可能最大ヒープサイズ 推奨最大ヒープサイズ 3.25GB 2.5GB 2GB 1.5GB 3GB 2.5GB 1.8GB 1.5GB 1.8GB 1.8GB 1.7GB 1.3GB 出典:http://www-01.ibm.com/support/docview.wss?uid=swg27013824 初期値としてgenconを検討する ヒープダンプの出力先に十分な空き領域を確保する – ヒープダンプは、Javaヒープ上で存続している(アプリケーションで使用中の)す べてのオブジェクトをダンプしたファイル(次ページ参照) 12 WAS V7 最新動向Workshop 当然ではありますが、ヒープサイズとGC実行時間はトレード・オフとなりますので、 まずは巨大ヒープが本当に必要かどうか?を確認する必要があります。 また、32bit版の場合、下記リンクのように最大ヒープサイズの推奨値があります。 Webcast replay: Best Practices for Tuning Java 5.0 Garbage Collection on the IBM Platforms http://www-01.ibm.com/support/docview.wss?uid=swg27013824 ヒープダンプは最大ヒープサイズの1/4のサイズで出力されるため、十分な空き領 域を確保しておく必要があります。 12 05. システム設計 設計フェーズでのGCポリシーとヒープの選択 プロジェクトや プロジェクトや アプリの アプリの 推奨値は? 推奨値は? ない アプリケーション特性は? アプリケーション特性は? トランザクション タイプ パフォーマンス要件は? パフォーマンス要件は? バッチタイプ ある レスポンスタイム 重視 スループット 重視 optthruput optthruput ガイド・要件に沿って設定 ガイド・要件に沿って設定 ある程度見積もる ことができる gencon gencon 最大・最小ヒープサイズは? 最大・最小ヒープサイズは? 検討を つけられない。。。 最大ヒープ:物理使用可能メモリの 最大ヒープ:物理使用可能メモリの 1/2より小さく 1/2より小さく 最小ヒープ:最大ヒープの1/4 最小ヒープ:最大ヒープの1/4 ある程度 見積もることができる genconの場合 genconの genconの 最大・最小New/Oldは? 最大・最小New/Oldは? 13 検討を つけられない。。。 デフォルトからスタート デフォルトからスタート または または New/Old最大は最大ヒープの1/2ずつ New/Old最大は最大ヒープの1/2ずつ 物理メモリに余裕があれば 物理メモリに余裕があれば 最大ヒープ 1024MB 最大ヒープ 1024MB 最大New領域 512MB 最大New領域 512MB 最大Old領域 512MB 最大Old領域 512MB 使用量をみて大きければ減らす 使用量をみて大きければ減らす WAS V7 最新動向Workshop 設計フェーズでのGCポリシーとヒープサイズ選択方法についてまとめました。 genconの場合はNew/Old領域の調整が必要なりますが、この点に関してはP.16 でご紹介いたします 13 05. システム設計 【参考】ステップ4:GCのモニタリング方法の理解 解析対象資料 説明 設定方法 verbose:gcログ Javaヒープの使用状況 やGCの稼動状況の情 報 管理コンソール(冗長ガーベッ ジ・コレクションプション)、また は、JVM引数で設定 デフォルトで、 native_stderr.logに出力 解析ツール(*) Garbage Collection and Memory Visualizer IBM Pattern Modeling and Analysis Tool for java Garbage Collector GC Collector Javaダンプ (javacore) ヒープダンプ デフォルトでJVMのクラッシュ JVMに関するダンプ情 報。OS情報、環境変数、 時や、QUIT(kill -3)シグナルを 稼動する全実行スレッド 受け取ったときに生成 のダンプ情報 JVMが使用するヒープ 上に存在する全liveオブ ジェクトのダンプ情報(メ モリを多く使用している オブジェクト等が確認可 能) デフォルトで、OutOfMemory発 生時に自動生成 (クラッシュ時にも生成するよう に環境変数で設定変更可能) IBM Thread and Monitor Dump Analyzer for Java ThreadAnalyzer HeapAnalyzer HeapRoots Java用メモリー・ダンプ診断 (MDD4J) (*)解析ツールの青字部分はIBM Support Assistance (ISA)で提供 上記のファイルを解析するツールに加えて、TPV、Health CenterなどJVMの状況をリアルタイムで把 握できるツールも提供(Health Center詳細は「システム運用」セッションを参照) 14 WAS V7 最新動向Workshop GCモニタリング方法をご紹介しています。 詳細は下記リンクをご参照ください。 IBM Support Assistant 4.1 利用ガイド http://www.ibm.com/developerworks/jp/websphere/library/was/isa41_guide/ 14 05. システム設計 【参考】ステップ4:ヒープサイズに関する一般的な指針 ヒープサイズ – JVMはヒープサイズの使用率を40%~70%で維持しようとして拡張・縮小する • • 70%以上の場合は、GCが頻発しパフォーマンスが低下する可能性がある 40%以下の場合は、GC実行時間が必要以上に長くなり、パフォーマンスが低下する可能性がある GCの稼動状況を確認する – (1)GCの実行間隔の平均は、GC1回の実行時間の平均の5~6倍 • • GCの平均実行間隔は、10秒以下だと短いとされている GCの平均実行時間は、1秒以上だと長いとされている – (2)GCの合計実行時間は、アプリケーション全体の合計実行時間の5~20% • • 一般的には13%~15%程度がよいとされている 値が低い場合、ヒープサイズが大きすぎる、またはGCポリシーが適切でない可能性がある ネイティブヒープと物理メモリを考慮して最大ヒープサイズを決定する – Javaプロセスサイズ=Javaヒープ+ネイティブヒープ – ネイティブヒープはJavaヒープのような制御ではないため、ネイティブヒープが枯渇した場合 の振る舞いは予測できない • アプリケーションが機能し続ける場合もあるし、OutOfMemoryErrorをスローする場合もある 15 WAS V7 最新動向Workshop 赤字部分はWAS7のマニュアル、その他はDeveloperDomain等に公開されている ガイドより抜粋しています。 GCでのモニター結果をこれらの指針に合わせてご確認ください。 そのガイドをご紹介します。 IBM の Java 仮想マシンの調整 http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ib m.websphere.nd.doc/info/ae/ae/tprf_tunejvm_v61.html Webcast replay: WebSphere Application Server V6.1 Performance and Tuning http://www-01.ibm.com/support/docview.wss?uid=swg27011085 Webcast replay: Best Practices for Tuning Java 5.0 Garbage Collection on the IBM Platforms http://www-01.ibm.com/support/docview.wss?uid=swg27013824 15 05. システム設計 重要 genconのヒープサイズ調整 New領域(new obj 割当) Allocate Survivor space space Old領域(old obj 割当) Tenured space 9 初期ヒープサイズ(-Xms):WAS 7デフォルト50MB 9 最大ヒープサイズ(-Xmx):WAS 7デフォルト256MB New領域の デフォルト値 が小さい 9 固定エリアサイズ(-Xmn): 9 初期エリアサイズ(-Xmns):JDK 6デフォルト-Xmsの25% 9 最大エリアサイズ(-Xmnx):JDK 6デフォルト-Xmxの25% JDK 5のデフォルト は-Xmsの25%と 64MBの小さいほう 9 固定エリアサイズ(-Xmo): 9 初期エリアサイズ(-Xmos):JDK 6デフォルト-Xmsの75% 9 最大エリアサイズ(-Xmox):JDK 6デフォルト-Xmxと同じ New領域 –デフォルト値では小さい場合が多いため注意が必要 •WebSphere では512MBから試行することを推奨するガイドあり –リクエストのスループットを優先したい場合・・・New領域を大きくする –一回のGC時間を短くしたい場合・・・New領域を小さくする Old領域 –持続性のあるデータが格納される十分な領域が必要 •一般的なWAS上アプリは100~400MBであるというガイドあり –適切な設定の場合、Global GCの発生頻度は非常に少ない 16 WAS V7 最新動向Workshop NEW領域の初期値には注意が必要です。 JDK5(WAS 6.1)のNEW領域の初期値は、初期ヒープサイズの25%か64MBの 「小さいほう」であったため、どんなに大きなヒープサイズを指定しても64MBになっ てしまうため注意が必要です。 JDK6ではNEW領域の64MBの制限がなくなりましたが、それでもNEW領域は小さ い可能性があるため注意が必要です。 JDK5 Garbage Collector command-line options http://publib.boulder.ibm.com/infocenter/javasdk/v5r0/topic/com.ibm.java.doc. diagnostics.50/diag/appendixes/cmdline/cmdline_gc.html JDK6 Garbage Collector command-line options http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/topic/com.ibm.java.doc. user.lnx.60/diag/appendixes/cmdline/commands_gc.html Webcast replay: Overview of the IBM SDK for Java Version 6 http://www-01.ibm.com/support/docview.wss?uid=swg27012709&aid=1 16 05. システム設計 【参考】ヒープサイズ設定のふたつのアプローチ ダイナミック・アプローチ – 初期ヒープサイズ、最大ヒープサイズを異なる値に設定 Fixedアプローチ – Fixedアプローチの有用性、適切なヒープサイズを確認するためには、ある程 度の試行錯誤が必要 – 長時間、ヒープ中の使用メモリが一定である場合に適する – 初期ヒープサイズと最大ヒープサイズを同じ値に設定 • ヒープサイズを、アプリ使用最大メモリの1.5倍の設定から試行することが推奨さ れている – 不必要なヒープの縮小・拡張処理を削減することでパフォーマンスをアップさ せる • 初期ヒープと最大ヒープは別々に設定し、縮小処理だけ無効にする(-Xmaxf=1) 方法もあり – NewとOldの領域を固定する(-Xmn/-Xmoを指定)アプローチもあり 17 WAS V7 最新動向Workshop ヒープサイズの最もよくあるパターンは、初期ヒープサイズと最大ヒープサイズは異 なる値を設定して、最適なヒープサイズの値をJVMに任せるアプローチです。 一方、長期間、ヒープの使用メモリが一定である場合には、初期ヒープサイズと最 大ヒープサイズを同じ値に設定するFixedアプローチを選択することも可能です。 Fixedアプローチを選択する場合は、その有用性、最適なヒープサイズの確認等に、 ある程度のトライ&エラーが必要です。 17 05. システム設計 最低限やっておくべきこと 設計フェーズ – – – – – WASのverbose:gcは常時Onにする GCポリシーはデフォルト(optthruput)で様子をみる 最大ヒープサイズは利用可能物理メモリの1/2以下とする 最小ヒープサイズは最大ヒープサイズの1/4とする DMノードの物理メモリに余裕を持たせる • DMの最大ヒープデフォルト値256MBが、アプリデプロイ等で、テスト・運用 フェーズで不足するケースがあるため – javacoreとヒープダンプの出力先を指定し、十分な空き容量を確保する • OSのコア出力容量も考慮する テストフェーズ – 以下の状況からメモリ使用状況がボトルネックでないことを確認する • OSのメモリ使用状況 • JVMのメモリ使用状況(GC平均実行時間、GC平均実行間隔、GC実行時間 の割合) 18 WAS V7 最新動向Workshop 設計フェーズで最低限必要な項目をまとめました。 GCポリシーと最大・最小ヒープサイズについては、P.13のフローを参考にしてくだ さい。 18 05. システム設計 【参考】ネイティブヒープを使用するJavaコンポーネント JITコンパイラー – Javaバイトコードからネイティブ・バイナリーコードへのコンパイルと、その出力にNative Memoryを使用する – JITでコンパイルされたメソッドが多数含まれるJavaアプリケーションは、多くのNative Memoryを使用する クラスとクラスローダー – IBM Java5以降はクラスローダーごとにNative Memoryを割りあて、そこにクラス・データを格納する(共有ク ラスとして使用される) • 業務アプリケーション、フレームワーク、アプリケーション・サーバ、サード・パーティのライブラリー等のすべてのクラス – クラスローダの数が多いほど、ロードするクラスが多いほどNative Memoryが使用される • それぞれ 1 つのクラスをロードする多数のクラスローダーを使用すると、1 つのクラスローダーで多数のクラスをロードす るよりも、ネイティブ・メモリーの使用量は増える JSPのクラス java.lang.reflect API の使用時 JNI NIO – Java 1.4 で追加された新規 I/O (NIO) クラス – データを保持するバッファーの一部がNative Memoryを使用する スレッド – Nativeスタック(ローカル変数を保持し、関数呼び出しの際に状態を維持するためのメモリー領域)、内部 データ構造用などのNative Memoryが必要 – 標準的な値は、256KB から 756KB の間で指定可能(要確認) – スレッド数が多いと多くのNative Memoryを使用することになる 19 WAS V7 最新動向Workshop JVMを稼動させる場合、ヒープサイズと同様に、ネイティブヒープが使用されている 点も重要です。 上記にネイティブヒープを使用するコンポーネントをまとめましたのでご参照くださ い。 また、WASのAIO(Asynchronous I/O)機能がネイティブ・ヒープを消費するため、 無効化することでネイティブ・ヒープの消費量を抑える方法が下記ガイドで紹介され ています。 Disabling AIO (Asynchronous Input/Output) native transport in WebSphere Application Server http://www-01.ibm.com/support/docview.wss?uid=swg21366862 19 05. システム設計 【参考】ヒープダンプとJavacoreの出力先 重要 Javacore(Javaダンプ)とヒープダンプは、WebSphereの場合、デフォルトで、 /<Profile Root>/<Profile Name>/ 直下に出力される native_std.errに出力状況が書き込まれるため確認することが可能 – 例: • • JVMDUMP010I Java ダンプは /opt/IBM/WebSphere70/AppServer/profiles/AP01/javacore.20100601.135015.3986.0001.txt に書き込まれました JVMDUMP010I Heap ダンプは /opt/IBM/WebSphere70/AppServer/profiles/AP01/heapdump.20100601.161235.13688.0002.phd に書き込まれまし た 出力先の指定 – 出力先は以下の順序で決定される • JVMコマンドライン(-Xdump)で指定したファイル名 – 例)-Xdump:java:file=/core/javacore/javacore.%Y%m%d.%H%M%S.%pid.%seq.txt – -Xdump:heap:file=/core/heapdump/heapdump.%Y%m%d.%H%M%S.%pid.%seq.phd – -Xdump:snap:file=/core/snap/Snap.%Y%m%d.%H%M%S.%pid.%seq.trc • 以下の環境変数で指定されたディレクトリ (WAS管理コンソールの場合、[アプリケーション・サーバー]>[アプリケーションサーバー名]>[Javaおよびプロセス管 理]>[プロセス定 義]>[環境エントリー] で設定) – IBM_JAVACOREDIR ・・・javacore出力先 – IBM_HEAPDUMPDIR ・・・heapdump出力先 – IBM_COREDIR ・・・systemdump.snap出力先 • カレント作業ディレクトリ(WASの場合、 /<Profile Root>/<Profile Name>/ 直下) – 空き領域不足、権限不足など、上記のディレクトリに書き込めない場合は、以下の順序で書 き込まれる • • • • 20 Windowsの場合、C:¥WINDOWS ディレクトリ TMPDIR環境変数で指定されたディレクトリ /tmpディレクトリ Windowsの場合、C:¥Temp ディレクトリ WAS V7 最新動向Workshop ヒープダンプとJavacoreの出力先は上記のように決定されます。十分な空き容量を 確保してください。 20 05. システム設計 まとめ Q. GCポリシーは何を選択すればよいですか? A. バッチタイプ・スループット重視であればoptthruput、トラ ンザクションタイプ・レスポンスタイム重視であれば genconを選択してください。 Q. genconは使われていますか?考慮点は何ですか? A. genconの事例は多数存在します。 ヒープサイズのチューニング箇所が増える点に注意してく ださい。適切な値が設定されれば、GC実行時間が大幅 に短縮される可能性があります。 Q. 大容量ヒープの場合の考慮点は何ですか? A. 32ビットの場合は制限値があります。ヒープダンプ出力の ための十分な空き容量も必要です。 21 WAS V7 最新動向Workshop GCポリシーは、バッチタイプ・スループット重視であればoptthruput、トランザクショ ンタイプ・レスポンスタイム重視であればgenconを選択してください。genconの事 例は多数存在します。 21 セッション番号. セッション番号. セッションタイトル §2. セキュリティ SSLの証明書期限切れ問題 SSLの2010年問題 SAMLサポート 22 WAS V7 最新動向Workshop 22 05. システム設計 セキュリティの最新トピック よく聞かれる 重要 V7.0.0.7 New SSLの証明書期限切れ問題 – WAS 7 で機能改善されたものの問い合わせが多い SSLの「 暗号アルゴリズムにおける2010年問題」 – 2011年も引き続き2,048bit証明書への移行検討が必要な場合がある – 証明書の移行後も注意点がある WAS 7 FixPack7 でのSAMLサポート – シングルサインオン(SSO)、ID情報伝播方法の新しい選択肢 – 2010/12現在、日本語版InfoCenterでは検索・目次表示ができないため注意、 英語版での確認が必要(note部分参照) – バグFixの観点からFP11以上の利用を推奨 証明書期限切れを発生させないためには どうしたらよいですか? 2010年問題に対して、何をすればいいですか? SAMLサポートって何ができるんですか? 23 WAS V7 最新動向Workshop WAS FixPack7からSAMLがサポートされました。現在、日本語版InfoCenterでは、 検索等機能が一部使用できないため、ブラウザの言語を英語にして検索してくだ さい。 Securing Web services using Security Assertion Markup Language (SAML) http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp? topic=/com.ibm.websphere.nd.doc/info/ae/ae/cwbs_samlovervi ew.html 23 05. システム設計 WASが使用するSSL SSLは、WASを使用するサーバーとクライアント間の安全な接続のために、トランスポート層の セキュリティーを提供 – HTTP/IIOP/LDAP/SOAPの通信を保護 – – サービスのアクセスは、インバウンド・アウトバンドともSSLで通信の保護が可能 管理者のアクセスとWASセル内コンポーネント間の通信もSSLで保護 (WASの管理セキュリティ:デフォルトOn) 証明書有効 期限切れ問題 DBサーバ WASセル 管理者 デプロイ メント マネージャ 2010年問題 MQサーバ LDAPサーバ 負荷分散装置 ノード エージェント Webサーバ エンドユーザ 認証サーバ イン バウンド 24 アプリ ケーション アウト サーバ バウンド アプリ ケーション サーバ ESB WAS V7 最新動向Workshop SSLはエンドユーザからアプリケーションアクセスに対して用いられるインバウンド SSLだけでなく、アプリケーションサーバから別コンポーネントへアクセスするアウト バウンドにも用いられます。 証明書有効期限切れ問題は、WASの管理セキュリティをOnにしてWASセル内の アクセスをSSLにした場合の問題です。 2010年問題は、認証局発行の証明書を使用している場合に該当する可能性があ ります。これは証明書を配置しているコンポーネントに該当するためWebサーバに 限りません。 24 05. システム設計 【参考】SSLの仕組み SSLの仕組み 確認 クライアント Webサーバー Client Hello ルート 証明書 ブラウザはルート証明書 を持つ ルート証明書を用いて サーバ証明書を検証 サーバからの 公開鍵を用いて セッション鍵の 元データを暗号化 ⇒共通鍵生成 サーバ 証明書 Server Hello Server Certificate サーバは、公開鍵を付けた サーバ証明書と秘密鍵を持つ サーバ 証明書 Server Hello Done Client Key Exchange サーバは自身の 秘密鍵で復号(重い処理) ⇒共通鍵生成 ここから暗号化 Change cipher spec Finished Change cipher spec Finished Application Data exchange 25 WAS V7 最新動向Workshop SSL通信では、サーバ側には、公開鍵を付けたサーバ証明書と、秘密鍵を持つ、 ということを確認してください。 25 05. システム設計 【参考】チェーン証明書の仕組み 確認 チェーン証明書の仕組み ルート証明書は、ブラウザ開発者の定める基準に合格した認証局が発行した証明書 –ブラウザには、大手認証局のルート証明書があらかじめインストールされている 認証局が発行する証明書は、ブラウザにインストールされた「ルート証明書」のいずれかで 電子署名される あるいは、 「ルート証明書」のいずれかで電子署名された「中間証明書」で、サーバ証明書 に電子署名 される 最終的にブラウザに登録されたルート証明書に行き着けば、そのサーバ証明書は信頼で きる、と判断する 26 WAS V7 最新動向Workshop WAS7ではチェーン証明書を使用しています。チェーン証明書の仕組みを確認し てください。 26 05. システム設計 §2.1 SSLの証明書期限切れ問題 27 WAS V7 最新動向Workshop 27 05. システム設計 WASでのSSL実装 WASは、JSSEを用いてSSLを実装する – JSSE (Java Secure Socket Extension):SSLを実装するためのJava標準API JSSEでは、サーバ証明書と鍵をキーストア・トラストストアファイルで管理する – 証明書は、X.509 証明書 を使用 – WASは、PKCS12 フォーマットを使用(JKS, JCEKS, PKCS12 の3種類のフォーマットをサポート) – IHS、プラグインはKDBフォーマットを使用しており、 PKCS12とは互換性がないため管理の際は注意 WAS管理セキュリティーでは、Javaプロセス間の双方向SSL通信を実施する – サーバー認証とクライアント認証の両方を実施 キーストア –自分の証明書、鍵などの機密情報のリスト トラストストア –機密情報を含まない –SSL通信したい相手の証明書のリスト SSL通信のためには、 相手のサーバを信頼する=トラストストアに相手の証明書がリストされている 必要がある 28 WAS V7 最新動向Workshop WASでSSLを実装する場合はJSSEを使用します。JSSEではサーバー証明書と 鍵を、キーストア・トラストストアというファイルで管理することを定義しています。 SSL通信のためには、相手のサーバを信頼するために、トラストストアに相手の証 明書がリストされている必要があります。 28 05. システム設計 重要 WASが使用するキーストア・トラストストア WASセル root-key.p12 DmgrDefaultRootStore ルート証明書鍵ストア ルート 15年 証明書 デプロイ メント マネージャ ③SSL通信 可能になる ノード エージェント アプリ ケーション サーバ trust.p12 CellDefaultTrustStore 共通トラストストア ルート 15年 証明書 key.p12 CellDefaultKeyStore デフォルト鍵ストア 署名 チェーン 1年 証明書A ①同期で配布 ②信頼できるサーバとしてリスト trust.p12 key.p12 NodeDefaultTrustStore NodeDefaultKeyStore 共通トラストストア デフォルト鍵ストア ルート 15年 証明書 署名 チェーン 1年 証明書B 29 WAS V7 最新動向Workshop 上図は、WASが使用するキーストア・トラストストアです。 ルート証明書は署名者証明書、チェーン証明書はルート証明書で署名された個人 証明書です。 29 05. システム設計 重要 証明書の有効期限切れと自動更新 WASセル STEP 1 1 root-key.p12 ルート 15年 証明書 trust.p12 DM trust.p12 ルート 15年 ルート 15年 証明書 証明書 NA AS trust.p12 trust.p12 ルート 15年 証明書 ルート 15年 証明書 key.p12 2 key.p12 チェーン 1年 チェーン 1年 証明書A 証明書A key.p12 2 key.p12 チェーン 1年 証明書B チェーン 1年 証明書B 1 2 ルート鍵ストアの検証 STEP 2 残りの鍵ストアの検証 STEP 3 証明書の有効期限切れが 検知される STEP 4 署名者証明書ごと置き換え られる STEP 5 新規証明書が同期して各 ノードに配布される 同期が 重要 30 WAS V7 最新動向Workshop 証明書の有効期限がどのようにチェックされ、証明書が自動更新するかを示した図 です。 ND環境では、共通トラストストアを各ノードに同期して配布するため、自動更新に は同期処理が重要となります。 SSL での証明書有効期限のモニター http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ib m.websphere.nd.doc/info/welcome_nd.html 30 05. システム設計 【参考】証明書の有効期限切れ問題 事例 同期に失敗して問題となったケースと対応 – 運用方法 • • • • • • – 管理セキュリティはOn 証明書の有効期限はデフォルト 証明書自動更新はOn DMは常時停止 自動同期はOff 運用シェルでプロセスを起動停止 DMノード ルート15年 チェーン1年 ASノード(NA&AS) 停止失敗のよ 運用シェルで うに見える 停止 ルート15年 現象 チェーン1年 ① 証明書の有効期限が切れる ② アプリケーション・サーバを停止しようとすると、証明書関連のプロンプトが出力される ③ 停止運用シェルの処理が上記②で一時停止し、アプリケーション・サーバが停止した ようにみえる – 対応 ① ② ③ ④ 31 DMを起動 wsadminコマンドで証明書更新 同期実施 アプリケーション・サーバを手動で一旦停止・起動 WAS V7 最新動向Workshop 従って、WAS 7では証明書有効期限切れ問題が無くなった、といわれていますが、 同期処理が実行できない場合は、追加対応が必要となるケースがあるため、注意 が必要です。 31 05. システム設計 WASでのSSL証明書 設計のポイント プロファイル作成時に、証明書の有効期限を長く設定する 重要 – ルート証明書 15年(デフォルト)~25年 を指定可能 – チェーン証明書 1年(デフォルト)~15年 を指定可能 プロファイル作成後に、証明書置き換えも可能 – 手順は下記ガイド参照 • 【FAQ】WAS V7.0 個人証明書(チェーン証明書)の置き換え手順 • http://www-06.ibm.com/jp/domino01/mkt/websphere.nsf/doc/006170D2 証明書の有効期限をモニター機能有効化を検討する – 以下の条件であれば自動更新に問題なし • DMは常時起動している • 同期は自動同期 – DMを常時停止している場合、自動同期を無効化している場合は、更新手順を 確認 • 【考慮事項】WAS ND V7.0 証明書自動更新機能について (WAS-09-024) • http://www.ibm.com/jp/domino01/mkt/cnpages1.nsf/page/default-0007F8D1 32 WAS V7 最新動向Workshop WASのSSL証明書で有効期限切れを起さないために最もよい方法は、プロファイ ル作成時に有効期限を長く設定することです。 ただし、プロファイルを既に作成済みの場合は、証明書の置き換えや、自動更新機 能の有効化を検討してください。 32 05. システム設計 【参考】管理コンソールからのSSL証明書管理 33 WAS V7 最新動向Workshop WASで管理するSSL証明書は、上記リンクから確認することができます。 33 05. システム設計 §2.2 SSLの2010年問題 34 WAS V7 最新動向Workshop 34 05. システム設計 暗号アルゴリズムの2010年問題とは 米国立標準技術研究所(NIST)が現在の標準暗号の利用を廃止し、より安全性の高い であろう次世代暗号への2010年内に移行を強制する方針を打ち出したこと が発端 暗号技術要素 移行対象となった規格 共通鍵暗号 2-key Triple DES(2TDES) 推奨される規格 AES 公開鍵暗号 1024-bit RSA/DH/DSA 2048-bit RSA/DH/DSA以上 or 256-bitECDSA/ECMQV以上 ハッシュ関数 SHA-1 SHA-2(SHA-224以上) 但し日本では2010年から「要件」とし、2013年までに移行を「完了」 するスケジュール CA/ブラウザ・フォーラムではNISTの方針を受け,EV-SSL証明書について,2010年12 月末までに1024bit鍵長の加入者(End-Entity)証明書を失効させるよう決定 → 2010年以降は2048bit鍵長のEV-SSL証明書を使用を強制 さらに、ベリサインでは、グローバル・サーバーIDおよびセキュア・サーバーID についても2010年内に1024bitから2048bitに仕様変更する旨を公表 35 WAS V7 最新動向Workshop マシン能力の向上に伴い、現行の暗号アルゴリズムが安全と言い切れない状況に なってきました。 その背景を踏まえて、NISTでは、より強度の高い暗号化アルゴリズムへの移行を推 奨しています。 サーバ証明書に関しても、EV-SSL証明書については2048bit鍵長への移行が必 要です。 さらにそれ以外の証明書についても対応が必要な場合があります。 35 05. システム設計 2010年問題への対応 ベンダーへ置き換えの要否を確認する – 証明書には信頼性に応じて複数の証明書がある – EV-SSL証明書 • 2010年中に、暗号化強度1024ビットから2048ビットへの置き換えが必須 – その他の証明書 • 各ベンダーによって対応が異なるため、ベンダーへ置き換えの要否を確認す る • 現状ではベリサインが早くも他の規格の証明書でも2048bit化を推進を表明 IHSでサーバ証明書の置き換えが必要となった場合 – サーバーの暗号化・復号処理のためのCPU負荷が増大するため、検証 環境等で負荷を確認する – チューニング・パラメータを見直す 36 WAS V7 最新動向Workshop 証明書の置き換え要否については、各ベンダーによって対応が異なるため、確認 してください。 その結果、IHSでサーバ証明書の置き換えが必要となった場合、サーバのCPU負 荷が増大します。いくつかチューニング・パラメータを見直す必要があります。 36 05. システム設計 【参考】日本ベリサインの「暗号アルゴリズムにおける2010 年問題」対応ガイド 今年2010年末までに、鍵長2,048bit証明書対応の検証を推奨 – 2010年末で鍵長1,024bit証明書の新規発行が停止するため ハッシュ関数SHA-1の対応完了期日については、現時点では明言されていない – クライアント環境のSHA-256への対応状況が十分でないため 2011年以降は 現在利用している 1,024bit証明書の 更新の際に 2,048bitへの対応 が必要 37 WAS V7 最新動向Workshop 37 05. システム設計 【参考】SSL証明書の種類 SSL証明書には複数の種類が存在する 信頼性 高 EV-SSL証明書 企業認証SSL証明書 登記簿謄本、TDBやTSRの登録情報から 第三者認証局がその企業の実在性を認証 した上で発行される証明書 ドメイン認証SSL証明書 ドメイン名/IPアドレスの登録者等の情報が 参照できる「Whois」の情報を元に、サーバ の実在を証明した上で発行される証明書 独自の認証局で発行される証明書 OpenSSL等で認証局を独自に立てて、 その認証局で発行される証明書 ・次ページ ・取得までに時間はかかるが、厳格な認証 プロセスを通すので、信頼性は高い ・各認証局の独自の認証プロセスを持つ ・短期間かつ低コストで取得可能 ・第三者からの発行なので、最低限の 安全は確保できる ・2006年にドメイン認証でフィッシングサイトが 発見された ・第三者からの承認は不要 ・コストは発生しない ・外部公開サイトで使用する場合は信頼性が 皆無 低 38 WAS V7 最新動向Workshop 38 05. システム設計 【参考】EV SSL証明書とは 「Extended Validation SSL証明書」の略 CA/ブラウザフォーラムによって確立される検証プロセス に基づいて発行 組織の実在性だけでなく、その他に事業活動などの 実在性も審査対象となり、業界内の統一基準をクリア した企業だけが導入可能 IE7等のブラウザではアドレスバーが緑色に変化 →ネット・ユーザーからWebサイトの確かさが一目でわかる EV SSL証明書を導入するメリット フィッシング対策にかかわるサポートコストの削減 厳格な認証プロセスのもとに発行されるため、フィッシングを行う犯罪者がEV SSL証明書を取得 もしくは偽装することは困難 → フィッシング対策に関する企業側のサポートコストは、ほとんど必要ない コンバージョンレートの向上(情報入力の促進) ネットユーザーの約2割は、クレジットカードの情報をネットに流すことに不安があるという理由で、 インターネットで 物品・サービスを購入しない →EV SSL証明書はブラウザで導入が把握できるため,ネットユーザーは安心して取引できる 実際, 資料請求や物品購入までのコンバージョンレートが向上、ネット上の売り上げが向上したりする事例が 増加 39 WAS V7 最新動向Workshop 39 05. システム設計 【参考】SSLハンドシェイクの2048bit化で影響を受ける箇所 クライアントのブラウザ Webサーバー Client Hello Server Hello 以降の通信の元になる pre_master_secretを復号する 部分で負荷がかかる Server Certificate Server Hello Done Client Key Exchange ここから暗号化 Change cipher spec Finished Change cipher spec Finished Application Data exchange 40 WAS V7 最新動向Workshop 公開鍵の暗号化強度をあげた場合、SSLハンドシェイクでは、Client Key Exchangeの部分に負荷がかかります 40 05. システム設計 【参考】1024bitから2048bitに変更した際の負荷 検証マシン(IHS) HW: IntelliStation M Pro 621910J Pentium4 2.4GHz OS: Red Hat Enterprise Linux 4 update 6 負荷ツール: Apache JMeter 2.3.4 検証結果: ClientKeyExchangeを有するSSLハンドシェイクの場合 ClientKeyExchangeを有さないSSLハンドシェイクの場合 90 80 80 70 2048bit 1024bit ( C 60 P U 50 使 用 40 率 ) ) C P 50 U 使 40 用 率 30 30 20 20 10 10 0 0 0 500 (リクエスト数/分) 1000 約4倍の負荷 41 2048bit 1024bit 70 ( 60 1500 2000 0 5000 10000 15000 (リクエスト数/分) 負荷は大差なし 20000 25000 WAS V7 最新動向Workshop 上記はIHSV7での負荷テスト結果です。CPU使用率が約4倍になりました。 41 05. システム設計 【参考】2048bitの負荷の極小化のポイント(1/2) KeepAlive (デフォルト On) – 接続を使いまわすことができれば,余計なSSLハンドシェイクを行わずに済む KeepAliveTimeout (デフォルト15秒) – KeepAliveTimeoutで設定した期間中はスレッドが占有されてしまうので、1~2秒程度の短い値を設定 MaxKeepAliveRequests(デフォルト100) – 平均コンテンツ数程度が推奨 SSLV3Timeout (デフォルト120秒) – SSLセッションIDを有効にして,不要にClientKeyExchangeを有するSSLハンドシェイクを行わないよう にする – セキュリティー低下(なりすまし)につながる恐れもあるため,長時間の値は設定しない – 120秒を超える値を設定した場合,クライアントが使用するInternet Explorerのバージョンによっては, 120秒以内にブラウザがSSLセッションIDを破棄するため,SSLV3Timeoutで設定した値が有効になら ない場合がある GSK_V3_SIDCACHE_SIZE (OSの環境変数) – Windows系あるいはSSLCacheDisableを明示的に記述した場合、GSKitでSSLセッションIDをキャッ シュする – デフォルト512エントリーで,それを超えるリクエストがある場合,超えた分のSSLセッションIDはキャッ シュされないので、注意が必要 – 1~4096まで設定可能なので、システムの同時接続数から設定値を見積もる 42 WAS V7 最新動向Workshop IHSのhttpd.confまたはOSの環境変数でポイントとなるパラメータをリストしました。 42 05. システム設計 【参考】2048bitの負荷の極小化のポイント(2/2) 分散環境の場合は以下も考慮する必要がある Affinity – SSLセッションIDはサーバー固有のものであるため,負荷分散装置により接続ごと に異なるサーバーに割り振られる場合,その都度新規のSSLハンドシェイクを実施し てしまうので、負荷が高まってしまう – Edge Components等でアフィニティーを設定できる場合はなるべく設定する ETag (デフォルトではiNodeを含む情報でキャッシュ判断) – デフォルトではサーバー依存のパラメータをEtagに含んでしまうため、別サーバーに 割り振られた場合に不要なキャッシュミスが生じてしまう – バージョン6以下のIEはキャッシュミス時にRSTパケットを返すため、後続のリクエス トは再度SSLハンドシェイクを行うことになる(IE7以上, Firefox, Google Chromeは 発生しない) 43 WAS V7 最新動向Workshop 分散環境の場合は、Affinity、ETagについても考慮してください。 43 05. システム設計 §2.3 SAMLサポート 44 WAS V7 最新動向Workshop 44 05. システム設計 SOA/クラウドを考慮したSSO/ID連携の課題 企業内・企業間のサービス連携やクラウドにおけるID連携の需要の高まり – セキュリティーの境界を越えた企業・組織とサービス連携をするケースが増加 • ドメイン間のWebシングル・サインオン(SSO) • サービス間のID連携 – SSOやID連携が、個々のサービスの技術に依存しない柔軟な実現性が必要 これらを実現する技術としてSAMLが注目される a.com b.com サービス間のID連携 Webシングルサインオン(SSO) c.com 45 WAS V7 最新動向Workshop SAMLは企業内・企業間のシングルサインオン・サービス間のID連携に使用するこ とができます。 SOA/クラウド環境でSSO/ID連携をする場合、即座に柔軟な対応が求められるた め、標準仕様であるSAMLが注目されています 45 05. システム設計 なぜSAMLが注目されるか? SAMLとは・・・ID認証情報を伝播するためのXML仕様 9標準仕様のためベンダーや製品に依存しない 9ID認証情報だけでなく属性情報も伝播可能 9署名・暗号化によりトークンの妥当性・信頼性が確認可能 STS WS-Trustを使用してSAMLトークンの発行依頼、発行 トークンを発行するWebサービス Webサービス クライアント SAML 46 Security Token Service (STS) WAS V7 最新動向Workshop SAML(Security Assertion Markup Language)のメリットは以下になります ・Organization for the Advancement of Structured Information Standards(OASIS)によって標準化 ベンダーや製品への依存が解消される ・XMLベースのフレームワーク インターネット・アプリケーションに適用しやすい XMLパーサー、XML署名、XML暗号化技術が使用できる 拡張スキーマが使用できる ・ID認証情報、属性情報をSAMLアサーションという形式で表現 認証や認可に属性情報が伝播/使用できる ・SAMLトークンに署名鍵の添付が可能 トークン受信者は鍵の所有者を検証できる ・SAMLトークンに発行機関の署名が可能 トークン受信者はトークンの信頼性を検証できる トークン受信者はトークン発行者との信頼性に基づいて、認証情報/ 属性情報を使用できる 46 05. システム設計 V7.0.0.7 WAS 7 で出来ること(1/2) New Webサービスの認証情報伝播 – WS-SecurityのセキュリティトークンとしてSAMLが使用可能 Security Token Service (STS) ②トークン 発行依頼 SAML Webサービス クライアント (WAS) ①認証 ③トークン 発行 SAML ④SAMLトークン を添付してサ ービス要求 ドメインA ⑤トークン検証 Webサービス (WAS) ドメインB WAS V7 最新動向Workshop 47 SAMLと併せて登場する単語が、WS-TrustとSTSです。 WS-Trust(Web Services Trust Language) WS-Securityをベースとしたトークンの発行・使用するためのフレー ムワーク OASISによって定義された標準仕様 STS (Security Token Service) WS-Trustで定義されている、トークンを発行するWebサービス WS-Trust では、STS Web サービス・インターフェースを使用せず に、SOAP メッセージ・ヘッダーに直接セキュリティー・トークンを含 めることが可能 STSの機能を提供するIBM製品としてTFIMが提供されている 47 05. システム設計 【参考】Webサービスの標準化されたID情報伝播方法 WebサービスでID情報を伝播するために、WS-Securityのセキュリティ トークンのフォーマットが標準化 WS-Securityのセキュリティトークン – UserIDトークン – バイナリセキュリティ・トークン • X.509トークン • Kerberosサービス・チケット • SAML – WebSphereでは、IBM独自のセキュリティトークンであるLTPAトークンも、バ イナリセキュリティトークンとして使用可能 これらの標準的なフォーマットを用いない場合は、アプリケーション独自に 実装 48 WAS V7 最新動向Workshop WebサービスでID情報を伝播するためにはSAMLだけではなく様々なトークンを使 用することができます 48 05. システム設計 【参考】ID情報伝播方法の比較 実装方法 WS-Security Uname トークン 評価項目 実装可能なプロトコル、API WS-Security 開発容易性 前提知識 開発工数 バイナリ・セキュリティ・トークン X.509 LTPA トークン トークン パラメータの一部 として実装 Kerberos SAML サービス・チケッ トークン 制限なし WS-Security、セキュリティトークンの知識が必要 インフラの設定、テストの工数が必要 伝播可能項目ユーザID パスワード 属性項目 必要なコンポーネント (サーバ要件) ○ ○ ○ ○ ○ 必要なし 必要なし 必要なし ×:必要な場合はパラメータの一部として実装 N/A KDC アプリケーションサーバでは各仕様の準拠が必要 セキュリティトークンの 妥当性 ID+ XML パスワード検証 署名、暗号化 SOAPメッセージ の完全性・ 秘匿性 トランスポート のセキュリティ 標準化・拡張性 相互接続性 ○ 必要なし ○ STS セキュリティ を考慮した 設計が必要 アプリケーション 設計・開発・ テストが必要 自由に設定可能 実装方法に依存 秘密鍵 秘密鍵 XML トークンを個別にチケットを個別に 署名、暗号化 暗号化 暗号化 追加でXML署名 実装方法に依存 △ IBM製品のみ × 独自仕様 SSL ○ ○ 49 ○ ○ WAS V7 最新動向Workshop ID情報伝播方法を比較した表です。 49 05. システム設計 V7.0.0.7 WAS 7 で出来ること(2/2) New カスタムのWebシングル・サインオン – Webアプリケーションの認証済みトークンとしてSAMLが使用可能 – 開発が必要 – TFIM (Tivoli Federated Identity Manager)と併用するパターンが現実的 ①認証 SAML ②トークン 発行 ③SAMLトークン 添付し強制的にリ ダイレクト SAML Identity Provider ドメインA 開発した SAML TAI Web アプリケーション (WAS) ④コンテンツ表示 ドメインB 50 SAMLを使ったSSOの うち、 Brower/Bost/Pushモデ ルの例 フローを一部省略して いるため注意 WAS V7 最新動向Workshop WAS 7のSAMLサポートでWebのSSOをする場合、開発が必要となりますので、 TFIMの使用を検討頂く事が現実的です 50 05. システム設計 V7.0.0.7 【参考】WAS 7のSAMLサポート New WAS 7 Fix Pack7から以下をサポート(一部Fix Pack9からサポート) – Web Services Security: SAML Token Profile 1.1仕様のサポート • Web Services Security: SAML Token Profile 1.1仕様では、Web Services Security: SOAP Message Security 1.1仕様におけるSAML V1.1/V2.0アサーションを使用する 方法が定義 • 3つのサブジェクト確認方法 – “Bearer”、“Holder of Key” – “Sender Vouches”のみFP9でサポート – 外部セキュリティー・トークン・サービス(STS)との連携 • WS-Trust V1.2/V1.3プロトコルをサポート • STSを実現するソフトウェアとして、IBM製品ではTivoli Federated Identity Manager を提供 – SAML関連APIの提供 • SAMLアサーションの発行/使用を行うためのAPI(SAML Token Factory API) – SAMLトークンの自己発行が可能 • セキュリティー・トークン・サービスにアクセスするためのAPI(WS-Trust Client API) 51 WAS V7 最新動向Workshop WAS 7のSAMLサポートの詳細です 51 05. システム設計 【参考】ID伝播の概要図 DomainA Security Token Service (TFIM) Service Consumer (WAS) 統合アクセス 制御が可能 メッセージレベル のセキュリティ・ア クセス制御 DomainB Service Provider (WAS) Gateway (WDP/ WESBなど) Service Provider (WAS) DomainC Service Provider (WAS) User Registry 52 Service Provider (WAS) WAS V7 最新動向Workshop SAMLでWebサービスのID情報を伝播する場合、WASだけでなく、Webサービス のGatewayとなるWebSphere DataPowerやWebSphere ESBでもSAMLを処理 することも可能です 52 05. システム設計 【参考】シーケンス図 下図は、リクエストフローの例です。次ページ以降に、各リクエストのSOAPメッセージを示します。 53 WAS V7 最新動向Workshop 上記は、前頁での構成をした場合のリクエストフロー図です。 53 05. システム設計 【参考】1.1 トークンリクエストのSOAPメッセージ例 STS宛先(WSAddressing) <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> <s:Security xmlns:s="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" soapenv:mustUnderstand="1"> <u:Timestamp> <u:Created>2010-10-24T23:04:21.756Z</u:Created> </u:Timestamp> <s:UsernameToken u:Id="unt_20"> <s:Username>user01</s:Username> <s:Password Type=“http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile1.0#PasswordText">password01</s:Password> </s:UsernameToken> </s:Security> <wsa:To>https://fim:9443/TrustServerWST13/services/RequestSecurityToken</wsa:To> <wsa:MessageID>urn:uuid:8FC1B5B948CE9D89881287961462196</wsa:MessageID> <wsa:Action>http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue</wsa:Action> トークンタイプ(SAMLV2) </soapenv:Header> の記述 <soapenv:Body> <wst:RequestSecurityToken xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512"> <wst:TokenType>http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0</wst:TokenType> <wst:RequestType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue</wst:RequestType> <wst:KeyType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Bearer</wst:KeyType> <wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"> トークンを使用してアクセス <wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/08/addressing"> するエンドポイント <wsa:Address>https://9.188.198.166:3099/WSSampleSei/EchoService12</wsa:Address> </wsa:EndpointReference> </wsp:AppliesTo> </wst:RequestSecurityToken> </soapenv:Body> </soapenv:Envelope> トークン発行要求 (WS-Trust) STSへのキータイプ(SAML Bearer:認証キーが添付され ない形式)の記述 54 STSへのトークン要求の記述 Issue/Validate/Renew/Cancelの 種別がある WAS V7 最新動向Workshop P.53のリクエストフロー図でのSOAPメッセージ例です。 54 05. システム設計 【参考】1.2 トークンを返すSOAPメッセージ例(1/2) <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsa="http://www.w3.org/2005/08/addressing"> <soapenv:Header> <wsa:Action soapenv:mustUnderstand="false">http://docs.oasis-open.org/ws-sx/wstrust/200512/RSTRC/IssueFinal</wsa:Action> <wsa:MessageID soapenv:mustUnderstand="false">urn:uuid:8FC1B5B948CE9D89881287961462196</wsa:MessageID> <wsa:RelatesTo soapenv:mustUnderstand="false">urn:uuid:8FC1B5B948CE9D89881287961462196</wsa:RelatesTo> <ns1:Security soapenv:mustUnderstand="false" xmlns:ns1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-secext-1.0.xsd"> <ns2:Timestamp xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <ns2:Created>2010-10-24T23:06:54Z</ns2:Created> </ns2:Timestamp> </ns1:Security> トークンタイプ(SAMLV2) </soapenv:Header> の記述 <soapenv:Body> <wst:RequestSecurityTokenResponseCollection xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512"> 応答トークンの情報 <wst:RequestSecurityTokenResponse wsu:Id="uuide07e96d2-012b-17b9-8553-b202718337de" (WS-Trust) xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wst:TokenType>http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile1.1#SAMLV2.0</wst:TokenType> <wsp:AppliesTo xmlns:wsa="http://www.w3.org/2005/08/addressing" トークンを使用してアクセス xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"> するエンドポイント <wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/08/addressing"> <wsa:Address>https://9.188.198.166:3099/WSSampleSei/EchoService12</wsa:Address> </wsa:EndpointReference> </wsp:AppliesTo> <wst:Lifetime xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512"> トークンの有効期限 <wsu:Created>2010-10-24T23:06:54Z</wsu:Created> <wsu:Expires>2010-10-29T03:06:54Z</wsu:Expires> </wst:Lifetime> STSからの応答 (WS-Addressing) 55 WAS V7 最新動向Workshop P.53のリクエストフロー図でのSOAPメッセージ例です。 55 05. システム設計 【参考】 1.2 トークンを返すSOAPメッセージ例(2/2) 応答トークン (WS-Trust) <wst:RequestedSecurityToken> <saml:Assertion ID="Assertion-uuide07e9730-012b-1def-aaee-b202718337de" IssueInstant="2010-1024T23:06:54Z" Version="2.0" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"> トークン発行者の記述 <saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameidformat:entity">fim.makuhari.ibm.com</saml:Issuer> <saml:Subject> 認証の対象 <saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid有効期限 format:emailAddress">user01</saml:NameID> <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"/> </saml:Subject> トークンを使用してアクセ <saml:Conditions NotBefore="2010-10-20T19:06:54Z" NotOnOrAfter="2010-10-29T03:06:54Z"> 条件 スするエンドポイント <saml:AudienceRestriction> <saml:Audience>https://9.188.198.166:3099/WSSampleSei/EchoService12</saml:Audience> </saml:AudienceRestriction> </saml:Conditions> <saml:AuthnStatement AuthnInstant="2010-10-24T23:06:54Z"> 認証の状態 <saml:AuthnContext> <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml:Authn ContextClassRef> </saml:AuthnContext> </saml:AuthnStatement> </saml:Assertion> </wst:RequestedSecurityToken> <wst:RequestedAttachedReference xmlns:wss="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecuritysecext-1.0.xsd"> <wss:SecurityTokenReference wss11:TokenType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profileトークンの参 1.1#SAMLV2.0" xmlns:wss="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 照先 xmlns:wss11="http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd"> <wss:KeyIdentifier ValueType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLID" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:wss="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">Assertion-uuide07e9730-012b-1def-aaeeb202718337de</wss:KeyIdentifier> </wss:SecurityTokenReference> </wst:RequestedAttachedReference> </wst:RequestSecurityTokenResponse> </wst:RequestSecurityTokenResponseCollection> </soapenv:Body> </soapenv:Envelope> SAMLアサー ションによる 認証の証明 56 WAS V7 最新動向Workshop P.53のリクエストフロー図でのSOAPメッセージ例です。 56 05. システム設計 【参考】 1.3 サービスリクエストのSOAPメッセージ例 <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" セキュリティヘッダ soapenv:mustUnderstand="1"> (WS-Security) <wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsu:Created>2010-10-24T23:04:18.704Z</wsu:Created> </wsu:Timestamp> <saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="Assertion-uuide07e9730-012b-1def-aaeeSAMLアサー b202718337de" IssueInstant="2010-10-24T23:06:54Z" Version="2.0"> ションによる トークン発行者の記述 <saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid認証の証明 format:entity">fim.makuhari.ibm.com</saml:Issuer> <saml:Subject> 認証の対象 <saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">user01</saml:NameID> 有効期限 <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"></saml:SubjectConfirmation> </saml:Subject> <saml:Conditions NotBefore="2010-10-20T19:06:54Z" NotOnOrAfter="2010-10-29T03:06:54Z"> トークンを使用してアクセ 条件 <saml:AudienceRestriction> スするエンドポイント <saml:Audience>https://9.188.198.166:3099/WSSampleSei/EchoService12</saml:Audience> </saml:AudienceRestriction> </saml:Conditions> <saml:AuthnStatement AuthnInstant="2010-10-24T23:06:54Z"> 認証の状態 <saml:AuthnContext> <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml:AuthnContextClassR ef> </saml:AuthnContext> </saml:AuthnStatement> </saml:Assertion> </wsse:Security> <wsa:To>https://9.188.198.166:3099/WSSampleSei/EchoService12</wsa:To> エンドポイント宛先 <wsa:MessageID>urn:uuid:8FC1B5B948CE9D89881287961462109</wsa:MessageID> (WS-Addressing) <wsa:Action>echoOperation</wsa:Action> </soapenv:Header> <soapenv:Body> <ns2:echoStringInput xmlns:ns2="http://com/ibm/was/wssample/sei/echo/"> <echoInput>Message String</echoInput> </ns2:echoStringInput> </soapenv:Body> </soapenv:Envelope> 57 WAS V7 最新動向Workshop P.53のリクエストフロー図でのSOAPメッセージ例です。 57 05. システム設計 まとめ Q. 証明書の有効期限切れを発生させないためにはどうした らよいですか? A. プロファイル作成時に有効期限を長く設定するのがお勧 めです。 プロファイル作成済みであれば、証明書置き換え、モニ ター機能有効化を実施してください。 Q. 2010年問題に対して、何をすればいいですか? A. 各認証局ベンダーへ、証明書置き換えの必要性を確認し てください。 2048bitの証明書に置き換えると、CPU使用率が上がり ます。本番適用前のリソース状況確認とチューニングパラ メータ見直しを実施してください。 Q. SAMLサポートって何ができるんですか? A. WebサービスでのID情報伝播、WebのSSOが可能です。 SAMLを使用したWebのSSOは開発が必要なため、要件 がある場合はTFIMとの連携も検討してください。 58 WAS V7 最新動向Workshop この章では、セキュリティの最新動向についてご紹介しました。 証明書有効期限切れのために注意すべき点、2010年問題のための要対応項目、 SAMLサポートでできることについてご紹介しました。 58 セッション番号. セッションタイトル §3. タイマー設計 59 WAS V7 最新動向Workshop 59 05. システム設計 タイマー設計のポイント タイマー種別の分類/定義 – クライアント非活動タイムアウト(セッションタイムアウト) • クライアントが指定時間以上操作をしない場合、タイムアウトとなる – 処理タイムアウト • リクエスト処理時間のタイムアウトで、クライアントがリクエストを送信し、 指定時間以上経過しても応答が返らない場合、タイムアウトとなる タイマー設計の一般的なポイント –クライアントからバックエンドへ向かって徐々に短く設定する –ユーザに表示されるタイムアウト画面とユーザの後続処理を確認する 処理タイムアウトでは以下の点も確認 –タイムアウトするタイミングと開放されるリソース –タイムアウト発生時に、その処理が中断/ロールバックされるか、処理が 継続されるか –タイムアウト発生時のエラーハンドリングと検知方法 60 WAS V7 最新動向Workshop 各コンポーネントのタイムアウト値を決める前に、タイマー設計の注意点を確認して ください。 60 05. システム設計 タイムアウトの設定箇所 処理タイマー(トランザクションタイマー) よく聞かれる 青字がパラメータ – ブラウザー – 負荷分散装置 • Edge – stickytimeout – 認証サーバ – アプリケーション・サーバ • プラグイン • WAS – ServerIOTimeout – トランザクション・タイマー » 合計存続時間タイムアウト » 最大トランザクション・タイムアウト » クライアント非活動タイムアウト – EJB関連タイマー » com.ibm.CORBA.requestTimeout – Webサービス関連タイマー » 要求タイムアウト(JAX-WSとJAX-RPCで設定箇所が異なるため注意が必要) – JDBC(DB2) • • • setQueryTimeout (メソッド) blockingReadConnectionTimeout (データソース拡張プロパティ) loginTimeout (データソース拡張プロパティ) – データベース・サーバ • DB2 – Workload ManagerのACTIVITYTOTALTIME(合計実行時間) 61 WAS V7 最新動向Workshop 各コンポーネントのタイムアウト値を抽出しました。 各環境やアプリケーションに応じて、必要なパラメータを抽出し、前頁で列挙した注 意点について確認してください。 トランザクションタイムアウトは、下記情報をご参照ください。 WebSphere Application Server V7.0によるWebシステム基盤設計ワークショップ 資料 トランザクション設計 http://public.dhe.ibm.com/software/dw/jp/websphere/was/was7_guide/WASV 70Design_03Transaction.pdf 特に、下記Technoteに記載されているとおり、トランザクション・タイムアウトが発生 してもすぐにユーザ処理 が停止しないケースがあるので注意が必要です。これは タイムアウトとユーザコードが異なるスレッドで処理されており、Javaの仕様ではス レッドが別のスレッドをキャンセ ルすることがサポートされていないためです。 JavaBean Can Not Call another Method after a Transaction Timeout Rollback http://www-01.ibm.com/support/docview.wss?uid=swg21271805 61 05. システム設計 タイムアウトの設定箇所 接続タイマー よく聞かれる 青字がパラメータ – アプリケーション・サーバ • • プラグイン:ConnectTimeout(Web サーバープラグインからWebコンテナへの接続) データソース:接続タイムアウト TCP/IP送受信タイマー – OS – Webサーバ • • IHS:Timeout WAS:HTTPトランスポートチェーン読み取り・書き込みタイムアウト その他のタイムアウト – IHS:KeepAliveTimeout • リクエスト処理時間には影響しない – WAS:接続プールのタイムアウト • データソース接続プール – 未使用タイムアウト – 経過タイムアウト • J2C接続プール – 未使用タイムアウト – 経過タイムアウト 62 WAS V7 最新動向Workshop 接続タイマー、TCP/IP送受信タイマーも処理タイムアウトに影響します。 その他、処理タイムアウトには影響しないタイムアウトもご紹介します。 62 05. システム設計 プラグインのServerIOTimeout 9 WAS 7 では、デフォルト値が60秒と短いため注意(WAS 6 では無制限) 9 IHS:WAS=1:N 構成の場合、クライアント側は ServerIOTimeout*N 秒 でタイムアウトする 9 WAS 7.0.0.3 以降で動作に変更点があるため注意(noteを参照) 9正の値、負の値の設定でサーバをダウンとみなすかどうかが異なる V7.0.0.3 Update DBサーバのテイクオーバ時に発生するタイムアウトの例 ④プラグインがWAS#1でタイムアウトし WAS#2にリクエストを転送する ③DBアク セスで Wait APサーバ#1 負荷分散 装置 ⑥プラグインがWAS#2で タイムアウト 正の値・・・サーバダウンと みなさない 負の値・・・サーバダウンと みなす 63 WAS#1 ①クライアント リクエストが 転送される IHS#2 WAS#2 APサーバ#2 サービス IP IHS#1 ②サービスIPが 無応答 ⑤DBアクセス でWait DB#1 NFS#1 DBサーバ#1 Take Over *DB *NFS *サービスIP DB#2 NFS#2 DBサーバ#2 WAS V7 最新動向Workshop WAS 7.0.0.3 以降では、SeverIOTimeoutに一部動作に変更点があるため注意してください。詳細 は、下記InfoCenterの英語版を参照してください plugin-cfg.xml ファイル http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.n d.doc/info/ae/ae/rwsv_plugincfg.html 【障害情報】POSTリクエストを再送させない設定時、プラグインがタイムアウト発生時にダウンと検知 しない問題の解決策 (WAS-09-006) http://www-06.ibm.com/jp/domino01/mkt/cnpages1.nsf/page/default-00083294 ○ServerIOTimeoutが正の値の場合 ServerIOTimeout経過後、該当サーバーをダウンと判断しません。 ○ServerIOTimeoutが0の場合 ServerIOTimeoutは無効です。 ServerIOTimeoutを明示的に設定していない場合、ServerIOTimeout=0を設定した場合と同等で す。 ○ServerIOTimeoutが負の値の場合 ServerIOTimeout経過後、該当サーバーをダウンと判断します。 プラグインは、そのほかにも重要なパラメータがあります。下記ガイドもあわせて確認してください。 Webサーバー・プラグインでのWAS障害検知方法と推奨設定について (WAS-07-037) http://www-06.ibm.com/jp/domino01/mkt/cnpages1.nsf/page/default-00099AB8 How do the properties ServerIOTimeout and PostBufferSize affect plug-in behavior? http://www-01.ibm.com/support/docview.wss?uid=swg21408884 Webserver Plugin configuration http://www-01.ibm.com/support/docview.wss?uid=swg21450051 63 05. システム設計 タイマー設計全体図(設計書の例) Client IHS (Plugin) DB JDBC 他 システム SQL タイマ ロック タイマ 30s 30s ハング スレッド 検知 40s プラグイン タイマ datasource 30s 認証 タイマ WAS Servlet 600s 600s * 2(nodes) Edge タイマ 認証 1800s 2000s 3600s クライアント タイマ Edge 接続 タイマ 64 他シス タイマ WAS V7 最新動向Workshop 設計書に、タイマー設計の章を追加して、タイマーの依存関係に問題ないかを確 認しましょう。 上記のような図を使用すると分かりやすいかもしれません。 WASでは、スレッドが指定した時間を超過してアクティブであった場合に、WASの SystemOut.logにその旨を出力させるという、スレッドハング検知機能が提供されて います。デフォルトで10分に設定されてるため、10分以上アクティブなスレッドが存 在している場合にログに出力されます。 しかしこの機能は、ログに出力されるだけであり、スレッドをキャンセルすることはで きません。従って、ログ監視を行い、想定以上に長時間処理されているスレッドの 数が多い場合はWASの再起動を行うなど、運用で対応をする必要があります。 スレッドハング検知の設定は下記情報を参照してください。 WAS V7.0 InfoCenter 「ハング検出ポリシーの構成」 http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ib m.websphere.nd.multiplatform.doc/info/ae/ae/ttrb_confighangdet.html 64 セッション番号. セッションタイトル §4. MDBのリスナー機能 65 WAS V7 最新動向Workshop 65 05. システム設計 MDBのリスナー機能 MDBのリスナーとは 確認 9MDB(Message Driven Bean) Java EE標準のメッセージ駆動型処理を行うEJB ¾Web環境で非同期メカニズムを実現ために利用される ¾宛先にメッセージが到着した時にEJBコンテナによって呼び出される z他のEJBとは異なり、EJBクライアントから直接呼び出すことはできない ¾EJBコンテナが起動時に複数のMDBインスタンスを作成し、並行処理を実行 することが可能 9WASが提供するMDBのリスナー 宛先へのメッセージ到着をリッスンする機能が2種類提供されている ¾アクティベーション・スペック ¾リスナー・ポート メッセージ送信 (J2EE標準) (WAS独自機能) メッセージ到着 リスナー アプリケーション 宛先 66 WAS MDB MDB onMessage() WAS V7 最新動向Workshop WASが提供するMDBのリスナーは、標準のアクティベーション・スペックと、WAS 独自のリスナーポートがあります。 66 05. システム設計 リスナーの最新トピック Update リスナーポートの安定化 – WAS 7 リリース当初、リスナーポートは非推奨機能であったが、安定化機能へ変更された • • 非推奨機能・・・当該バージョンでサポートされるが将来削除予定の機能 安定化機能・・・次期バージョンでも削除や非推奨への変更予定のない機能 – ワークショップ資料(WASV7アナウンスメントWS、WASV7基盤設計WS)は修正済み – 2010/11現在、日本語版InfoCenterでは、依然、非推奨との記載があるため注意(note部 分参照) WAS 7 FixPack5での変更 – WMQCommonServicesスレッドプールが使用されない – リスナーポートのセッションプールモニタリング機能追加 – 2010/11現在、日本語版InfoCenterには記載がない部分があるため注意(note部分参照) リスナーポート関連のドキュメントは、英語版で最新情報を確認する必要がある リスナーポートとアクティベーションスペックは どちらを選択すればよいですか? 67 WAS V7 最新動向Workshop リスナーポートは、WAS 7リリース当初、非推奨機能となっていましたが、安定化機能に変更となりま した。 2010/11現在、日本語版InfoCenterでは、依然、非推奨との記載があるため注意してください。 http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.n d.doc/info/ae/ae/rmig_stabfeat.html 英語のみ、安定化機能としてリスナーポートの記載あり http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.n d.doc/info/ae/ae/rmig_depfeat.html 日本語のみ、非推奨機能としてリスナーポートの記載あり http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.n d.doc/info/ae/ae/cmb_aslp.html (英語)For WebSphere Application Server Version 7 and later, listener ports are stabilized. For more information, read the article on stabilized features. (日本語)WebSphere Application Server バージョン 7 以降では、リスナー・ポートは推奨 されていません。 したがって、リスナー・ポートを使用する WebSphere MQ メッセージ駆動 型 Bean のデプロイメント構成を、アクティベーション・スペックを使用する構成に移行する 準備を行う必要があります。 WASV7 FP5より、WMQCommonServicesスレッドプールが使用されない、(リスナーポートのセッ ションプールモニタリング機能追加)などの変更があった 2010/11現在、日本語版InfoCenterには記載がないため注意 http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.webs phere.nd.doc/info/ae/ae/tmb_adm14.html http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.webs phere.nd.doc/info/ae/ae/tmb_adm14.html 67 05. システム設計 MDBでメッセージを受け取るための構成 接続の設定 リスナーの設定 WAS WebSphere MQ WMQ メッセージング・プロバイダ アプリケーションサーバ キュー接続 ファクトリー リスナー サービス アプリ キュー宛先 リスナー ポート(LP) MDB WMQ リソースアダプタ キュー宛先 アクティベーション スペック(AS) MDB サーバに搭載 された機能 SIBUS デフォルト メッセージング・プロバイダ SIB JMS リソースアダプタ キュー宛先 68 アクティベーション スペック(AS) 論理的な定義 MDB WAS V7 最新動向Workshop リスナーポートはアプリケーション・サーバの機能の一部として提供されるため、ア プリケーションの起動停止に依存せず、リスナーポートを制御することができます。 68 05. システム設計 アクティベーション・スペックとリスナー・ポート よく聞かれる アクティベーション・スペック リスナーポート 仕様 J2EE標準 JCA 1.5準拠(メッセージングに限らずEIS(DB、TPな ど)への共通の接続アーキテクチャを規定) WAS独自提供機能 JMS 1.1(ASF)準拠(JMSプロバイダーへの接続アーキ テクチャを規定) 設定 セル・ノード・クラスタ・サーバの範囲で設定可能 (アプリケーションサーバのリソースとしてJNDIネーム スペースに定義) 別途、キューのJNDI定義が必要 サーバに設定 (アプリケーションサーバのメッセージ・リスナー・サービス に定義) 別途、接続ファクトリとキューのJNDI定義が必要 起動/停止 MDBのランタイム(メッセージ・エンドポイント)に対し、 pause/resumeが可能(MDB/キューのクラスター有無 によって影響範囲が異なる) WAS起動時の初期状態(起動/停止)はアプリケーショ ンに対して設定 ListenerPortに対し、起動/停止が可能 WAS起動時の初期状態(起動/停止)をリスナーポートに 設定可能 並行稼動設定 ActivationSpecのMaxPoolDepth (MaximumServerSessions) ListenerPortの最大セッション数(セッションプールの最大 接続数) セレクター設定 アプリケーションでの設定だけでなく、WASの設定も可 能 アプリケーションで設定 ポイズンメッ セージ対応 バックアウトキューへの退避可能 エンドポイントの停止も可能 バックアウトキューへの退避可能 リスナーポートの停止も可能 コネクション・エ ラー対応 リソース・アダプターの設定で自動再接続可能 パージポリシー設定はなし リスナー・ポートの設定で自動再接続可能 障害検知時にプール内のコネクションを破棄するかどう かのパージポリシー設定が可能 順序保証 保証なし NON.ASFモードでサポート 69 WAS V7 最新動向Workshop アクティベーション・スペックとリスナー・ポートの比較表です。異なる点は、起動/停 止と順序保証です。 69 05. システム設計 起動/停止 重要 MDB処理の開始・一時停止・再開を制御したい要件がある場合 – リスナーポート・・・アプリケーションの起動状態に依存せず、起動・停止が可能 – アクティベーション・スペック・・・アプリケーション起動後に、起動・停止が可能 異なる点は、アプリケーションサーバ起動時にMDB処理を開始させたくない場合の対応 – リスナーポート・・・MDBアプリケーションを起動させたまま、リスナーポートを停止することが可能 – アクティベーション・スペック・・・サーバ起動時にMDBアプリケーションを停止しておく必要がある – ⇒アプリに複数MDBが存在する場合、MDBがオンラインアプリと同居している場合はリスナー・ポートが 有用 WMQ メッセージング・ プロバイダ アプリケーションサーバ リスナー サービス LP アプリ LP MDB MDB WMQ リソースアダプタ アプリ AS MDB AS MDB アプリ AS MDB アプリケーションサーバ起動時 リスナーポートは停止してお くことが可能 アクティベーション・スペック はアプリを停止しておく必要 がある アプリケーション起動後 個々のアクティベーション・ス ペック(メッセージング・エンド ポイント)の起動停止は可能 WAS V7 最新動向Workshop 70 MDBの処理停止、再開は、下記①~③のいずれかで可能です。どのケースでも、個々のMDBインスタンスの一時停止、再 開はできないためご注意ください。 ①MDBを含むエンタープライズアプリケーションの停止・起動 アプリケーションの自動開始の使用不可化 http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.nd.doc/info/ae/ae/trun_a pp_targetmap.html ②アクティベーション・スペックを使用する場合はMDBのメッセージ・エンドポイントの一時停止・再開 アクティベーション・スペックはアプリケーション(MDB)に紐付く定義であるため、アプリケーションが起動してはじめて、ランタ イムのメッセージ・エンドポイントの起動・停止が可能となります。 そのため、アプリケーション・サーバ起動後に特定のメッセージ・エンドポイントのみを停止するためには、アプリケーション起 動後にメッセージ・エンドポイント停止の追加処理が必要となります。 メッセージ・エンドポイントによるメッセージの管理 http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.nd.doc/info/ae/ae/tdat_m sgendpoint.html また、アプリケーション・サーバとキューがクラスター構成になっているかどうかで、ひとつのエンドポイントを停止するしたとき の全てのエンドポイントに与える影響範囲が異なりますので、下記リンクをご参照ください。 メッセージ・エンドポイントによるメッセージの管理 http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.nd.doc/info/ae/ae/tdat_m sgendpoint.html ③リスナー・ポートの停止・起動 リスナー・ポートはアプリケーション・サーバに搭載された機能であるため、MDBを含むアプリケーションの稼動状況に依存せ ずに起動・停止が可能です。且つ、アプリケーション・サーバ起動時の初期状態を設定できるため、サーバ起動時でも特定 の業務のリスナー・ポートを停止しておくことができます。 リスナー・ポート設定 http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.nd.doc/info/ae/ae/umb_p rolp.html 70 05. システム設計 【参照】並行稼動設定 MDBの並行稼動数に影響を与えるパラメータ 接続プールの最大接続数 セッションプールの最大接続数 ≧ 全LPのMDBインスタンス合計数・・・ リスナー・サービスの最大サイズ MDBインスタンス最 大数・・・LPの 最大セッション数 WAS WebSphere MQ Qmgr ≧ WMQ メッセージング・プロバイダ アプリケーションサーバ キュー接続 ファクトリー キュー宛先 リスナー サービス LP キュー宛先 LP WMQ リソースアダプタ キュー宛先 AS キュー宛先 AS 全ASのMDBインスタンス合計数・・・ リソース・アダプタの最大サイズ アプリ MDB MDB MDB MDB MDB MDB MDB MDB MDB MDB MDB MDB ≧ MDBインスタンス最大数・・・ ASの最大サーバーセッション数 71 WAS V7 最新動向Workshop MDBの並行稼動に影響を与えるパラメータです。 リスナーサービスのパラメータの考え方については、下記ガイドが参考になります。 How the maximum sessions property on the listener port affects WebSphere Application Server performance http://www.ibm.com/developerworks/websphere/library/techarticles/0602_kes avan/0602_kesavan.html また、スレッド数設定指針としては、下記ガイドをご参照ください。 Get the most out of high performance message-driven beans and WebSphere Application Server http://www.ibm.com/developerworks/websphere/library/techarticles/0508_par kinson/0508_parkinson.html 71 05. システム設計 【参照】ポイズンメッセージ対応 バックアウトを繰り返すメッセージ(ポイズン・メッセージ)の対応 – 指定回数のリトライ後、ポイズン・メッセージを退避させ、処理を停止したい場合 • WMQのバックアウト閾値=WASのリトライ回数 とする(注意点はnote参照) – 指定回数のリトライ後、ポイズン・メッセージを退避させるが、他の処理は継続したい場合 • WMQのバックアウト閾値<WASのリトライ回数 とする MQ側のキュー属性指定したバックアウト 回数分試行後、指定したキューへメッセー ジを退避 指定した回数まで試行後、LPが停止 (停止しない設定は不可) WAS WebSphere MQ Qmgr WMQ メッセージング・プロバイダ アプリケーションサーバ キュー接続 ファクトリー キュー宛先 リスナー サービス LP WMQ リソースアダプタ キュー宛先 AS アプリ MDB MDB MDB MDB MDB MDB 指定した回数まで試行後、ASが停止 (停止しない設定も可能) 72 WAS V7 最新動向Workshop サービス統合バス(SIBus)を使用した場合は、WASの管理コンソールから、ローカル宛先キューの 定義に最大デリバリー失敗数と例外宛先を指定可能ですが、 WebSphere MQプロバイダー経由 の接続の場合は、キューの実態はMQサーバにあるため、WebSphere MQ キューの定義として、 バックアウト閾値とバックアウト再キューイングのキュー名を指定します。 WebSphere MQ キューの バックアウト閾値を超えた場合、配信できないメッセージは WebSphere MQ によって、バックアウト再キューイング・キューに移動されます WMQのバックアウト閾値>WASのリトライ回数の場合 エラーが発生し、WASのリトライ回数までリトライされた後、リスナー・ポートまたは メッセージ・エンドポイントが停止 キューのメッセージはバックアウト閾値まで達していないため、バックアップ・カウン トがアップするだけで、メッセージはキューに留まる WMQのバックアウト閾値=WASのリトライ回数の場合 エラーが発生し、WMQのバックアウト閾値までリトライされた後、メッセージはバッ クアウト再キューイング・キューに移動される。 リスナー・ポートまたはメッセージ・エンドポイントが停止。 リスナーポートの場合は、WASのリトライ回数のカウントの仕組みがアクティベー ションスペックと異なり、WASのリトライ回数をWMQのバックアウト閾値より1小さく 設定する必要がある。(例:バックアウト閾値5、リトライ回数4でリスナーポートが停 止し、キューが再キューイング・キューに移動されます) WMQのバックアウト閾値<WASのリトライ回数の場合 エラーが発生し、WMQのバックアウト閾値までリトライされた後、メッセージはバッ クアウト再キューイング・キューに移動される しかし、リスナー・ポートまたはメッセージ・エンドポイントは停止せず、次のメッセー ジが処理される 72 05. システム設計 【参照】コネクションエラー対応 接続先のキューマネージャー障害やN/W障害により接続エラーが発生した場合 – リスナーポートでもアクティベーションスペックでも自動的に再接続を実施 エラー検知後、コネクションのパージポリ シーを指定 自動的に再接続を実施 リトライ間隔・回数は指定可能 WAS WebSphere MQ Qmgr WMQ メッセージング・プロバイダ アプリケーションサーバ キュー接続 ファクトリー キュー宛先 リスナー サービス LP WMQ リソースアダプタ キュー宛先 73 AS アプリ MDB MDB MDB MDB MDB MDB WAS V7 最新動向Workshop 接続先のキューマネージャー障害やN/W障害により接続エラーが発生した場合は、 自動的に再接続を試みます 73 05. システム設計 まとめ Q.リスナーポートとアクティベーションスペックは どちらを選択すればよいですか? A. 以下のケースはアクティベーション・スペックが適しています ・将来性・可搬性を考慮して標準に準拠したい場合 ・リスナーをセル・ノード・クラスターレベルで定義したい場合 ・セレクターを管理コンソールから定義したい場合 以下のケースはリスナー・ポートが適しています ・リスナーの起動停止を、MDB毎に細かく制御したい場合 ・順序制御したい場合 74 WAS V7 最新動向Workshop リスナーポートとアクティベーションスペックの選択は、標準に準拠、セル・クラス ター・ノードレベルでの定義、セレクターの管理コンソールからの指定の要件がある 場合は、アクティベーション・スペックが適しています リスナーポートの起動停止に詳細な制御が必要な場合、順序制御したい場合は、リ スナー・ポートが適しています 74