WebLogic Server トランザクションのキホン+α

5,180
-1

Published on

分散トランザクションの基本概念、WebLogic Serverのトランザクション設定やモニタ方法と トランザクション回復 サービスなどの障害発生時の対応のポイントを紹介します。
■分散トランザクションとは?
Java Transaction API/分散トランザクションとは?
■WebLogic Serverのトランザクション設定
ドランザクションの設定/ モニタリング/ リソースの設定

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,180
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
115
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

WebLogic Server トランザクションのキホン+α

  1. 1. <Insert Picture Here>WebLogic Server トランザクションのキホン+α日本オラクル株式会社 オラクルユニバーシティ岡田 大輔2012年03月29日
  2. 2. 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。 Copyright© 2012, Oracle. All rights reserved. 2
  3. 3. Agenda• 分散トランザクションとは? • Java Transaction API • 分散トランザクションとは?• WebLogic Serverのトランザクション設定 • ドランザクションの設定 • モニタリング • リソースの設定 Copyright© 2012, Oracle. All rights reserved. 3
  4. 4. トランザクションとは?• データストアに対して”all or nothing”手法で永続化を 行う処理 • 分散環境においてデータの整合性を保つためには必須• ACID特性を満たす • Atomicity(原子性) – 処理は成功か失敗のいずれか • Consistency(一貫性) – 処理前後ではデータの一貫性が保たれ る • Isolation(独立性) – 同時に実行される複数の処理は互いに干 渉しない • Durability(永続性) – 確定したトランザクションの結果は確実 に永続化される Copyright© 2012, Oracle. All rights reserved. 4
  5. 5. Java EEにおけるトランザクション仕様• JTA(Java Transaction API) • X/Open DTPモデルをベースにした分散トランザクションAPI トランザクションマネージャとトランザクション参加者であ るアプリケーション、リソースマネージャが使用する標準イ ンタフェースを提供 • javax.transaction.* - トランザクションマネージャとトラン ザクション参加者との規約 • javax.transaction.xa.* - トランザクションマネージャ(TM) とリソースマネージャ(RM)間の規約• JTS (Java Transaction Service) • JTAをサポートするトランザクションマネージャ実装を提供 OMG Object Transaction Service(OTS) 1.1 仕様に対応したJava 実装のサービス Copyright© 2012, Oracle. All rights reserved. 5
  6. 6. X/Open DTPモデル Application Program (AP)APはRMを介 APはトランしてリソース ザクション境を使用 界を指定 XA Resource Manager Resource Manager Transaction Manager (RM) Resource Manager (RM) (TM) (RM) TMとRMをトランザクション情報を交換 Copyright© 2012, Oracle. All rights reserved. 6
  7. 7. トランザクションマネージャとリソースマネージャ• トランザクションマネージャ(TM) • アプリケーションに代わってグローバルトランザクションの 管理を行うサーバソフトウェアコンポーネント • アプリケーションからのグローバルトランザクションの開始/ 終了要求に基づいて、そのトランザクションに関与する全て のリソースマネージャと通信してトランザクションを制御 • 2フェーズコミット(2PC)を制御 • WebLogic Serverではインスタンスごとにトランザクション マネージャが存在する• リソースマネージャ(RM) • データやプロセスへのアクセスを提供するインタフェースお よび関連ソフトウェアであり、トランザクション処理機能と アクセスの永続化機構を有する Copyright© 2012, Oracle. All rights reserved. 7
  8. 8. ローカルトランザクションとグローバルトランザクション• ローカルトランザクション • トランザクションマネージャが介在しないトランザクション • リソースマネージャが直接トランザクションを制御する • 非XAドライバを使ったDB接続 • 非XAのJMS接続ファクトリを使用したJMSメッセージング• グローバルトランザクション(分散トランザクション) • トランザクションマネージャが介在するトランザクション • TMがJMSやXA DataSourceなどトランザクションに関与する 複数のRMを調整して、トランザクションの制御を行う • 1TXでDB, JMSにアクセスする • 1TXで2つ以上のDBにアクセスする • TXがEJBコンテナによって開始された場合(EJBコンテナは サーバ上のTMを利用) Copyright© 2012, Oracle. All rights reserved. 8
  9. 9. 2フェーズコミット (2PC)• 2PCプロトコルは複数のRMをまたぐ単一トランザク ションを調整する方法 • PrepareフェーズとCommitフェーズと呼ばれる2つのフェー ズを用いてトランザクション特性を満たす • トランザクションのコミット処理 (UserTransaction.commt()/TransactionManager.commit()) により2PCが開始される • コーディネータはグローバルトランザクションを操作し、 サブコーディネータは自身のサーバに関連したトランザク ション・ブランチを操作する Copyright© 2012, Oracle. All rights reserved. 9
  10. 10. WebLogic Serverの2PCプロセス• WebLogic Serverでは2PCを3つのステップで処理 • Pre-Prepareフェーズ • トランザクションが完了する前後でアプリケーションがコ ールバックを受け取れるようにするためにコールバックオ ブジェクト(javax.transaction.Synchronization)をトランザ クションマネージャに登録する • Prepareフェーズ(フェーズ1) • グローバルトランザクションに参加しているリソースがト ランザクションブランチを処理する準備を行う • Commitフェーズ(フェーズ2) • グローバルトランザクションに参加しているリソースが実 際にトランザクションブランチを処理する Copyright© 2012, Oracle. All rights reserved. 10
  11. 11. 2PC 処理の流れ フェーズ1 (prepare) prepare リソース データベース1 マネージャ1 トランザクション マネージャ リソース データベース2 マネージャ2 prepared commitアプリケーション TLOG commit リソース データベース1 マネージャ1 トランザクション マネージャ リソース データベース2 マネージャ2 committed フェーズ2 (commit) Copyright© 2012, Oracle. All rights reserved. 11
  12. 12. Agenda• 分散トランザクションとは? • Java Transaction API • 分散トランザクションとは?• WebLogic Serverのトランザクション設定 • ドランザクションの設定 • モニタリング • リソースの設定 Copyright© 2012, Oracle. All rights reserved. 12
  13. 13. トランザクションの設定• トランザクションサービスはWebLogic Server起動時 に開始される • トランザクションの設定 • ドメイン・レベルで設定を行う • ドメインで同じトランザクション設定を使用 • トランザクションのモニタリング • サーバ・レベルでモニタリングを行う • 管理コンソール, WLST … • 参加リソース(JDBCデータソースなど)の設定 • リソース・レベルで設定を行う Copyright© 2012, Oracle. All rights reserved. 13
  14. 14. トランザクション設定 トランザクション開始からフェーズ1完 了までの持続時間。この時間を超える とTXはタイムアウトし、ロールバック される TMが新しいトランザクションログを作 成し、古いトランザクションログを破 棄するかどうかを確認する間隔 [10.3.3.0~]トランザクションのフェ ーズ2のタイムアウト時間。デフォ ルト(0)はtransaction-timeout x 2(秒) Copyright© 2012, Oracle. All rights reserved. 14
  15. 15. トランザクションログ• 未完了のトランザクション情報を格納するログ • トランザクションログはバイナリ形式のため、直接見ること はできない • トランザクションログはサーバのデフォルト永続ストアに格 納される • デフォルト永続ストア $DOMAIN/servers/<Server_Name>/data/store/default/_WLS_ <Server_Name>000000.DAT • WLS12cではJDBCストアを使用可能(後述) • サーバごとに設定変更可能 Copyright© 2012, Oracle. All rights reserved. 15
  16. 16. トランザクションログのダンプ• $ java weblogic.transaction.internal.StoreTransactionLoggerImpl [- delete] <tlog_dir_path> <server_name>• Options • -delete … TLOGからすべてのエントリを削除 • <tlog_dir_path> … TLOGストアディレクトリ(=デフォルト永続ストア)へのパス • <server_name> … サーバ名+------------------------------------------------------------------------------------------------------------ +| Transaction Log Dump | |+----------------------+ || Current time = Tue Mar 27 13:46:00 JST 2012 || Current directory = "C:¥work¥domains¥12c_domain¥." |+------------------------------------------------------------------------------------------------------------ +| Class Name = weblogic.transaction.internal.ResourceCheckpoint || Object = ResourceCheckpoint={{derbyDataSource_12c_domain, props={}}, {xeDataSource_12c_domain, props={}}} |+------------------------------------------------------------------------------------------------------------ +| Class Name = weblogic.transaction.internal.ServerTransactionImpl || Object = Xid=BEA1-002118629B698CC6CD64(1013226416),Status=Active,numRepliesOwedMe=0,numRepliesOwnedOthers= || 0,seconds since begin=33,seconds left=30,XAServerResourceInfo[xeDataSource_12c_domain]=(ServerResourceInfo || [xeDataSource_12c_domain]=(state=new,assigned=none),xar=null,re-Registered = false),XAServerResourceInfo[d || erbyDataSource_12c_domain]=(ServerResourceInfo[derbyDataSource_12c_domain]=(state=new,assigned=none),xar=n || ull,re-Registered = false),SCInfo[12c_domain+AdminServer]=(state=active)) |+------------------------------------------------------------------------------------------------------------ + Copyright© 2012, Oracle. All rights reserved. 16
  17. 17. JDBC TLOG ストア (WebLogic Server 12c)• TLogをデータベースに永続化可能 • TLog用高信頼性ストレージの代替 • 障害復旧の容易性の向上 (アプリケーションデータ, JMS, TLOGをDBに一括格納可能) デフォルト・ストア もしくは JDBC データソースを指定する - グローバルトランザクション非サポート(非XA) のデータソースを指定 - ストア先のDBにアクセス出来ないと起動に失敗 する Copyright© 2012, Oracle. All rights reserved. 17
  18. 18. トランザクションのモニタ• トランザクションのモニタはサーバ・レベルで行う • トランザクション統計 (JTARuntimeMBean/JTATransactionStatisticsRuntimeMBean) • トランザクションログストア統計(TransacitonLogStoreRuntimeMBean) • リソースごとのトランザクション統計 • XA (TransactionResourceRuntimeMBean) • 非XAリソース (NonXAResourceRuntimeMBean) • 回復サービス(RecoveryRuntimeMBean) • 現在のトランザクション (JTARuntimeMBeanのJTATransactions属性) Copyright© 2012, Oracle. All rights reserved. 18
  19. 19. トランザクションモニタ Copyright© 2012, Oracle. All rights reserved. 19
  20. 20. 実行中のトランザクション Copyright© 2012, Oracle. All rights reserved. 20
  21. 21. トランザクションの手動解決• 実行中のトランザクションは手動解決可能 • 障害対応用として使用 • ローカルオプションとグローバルオプション • ローカル: 該当のサーバリソースにのみ影響 • グローバル: グローバルトランザクションに参加する全サーバに影響 • トランザクションのステータスによって行える処理が異なる ステータス 強制コミット 強制ロールバック ステータス 強制コミット 強制ロールバックアクティブ ○ ロールバック中 ○ ロールバック完準備中 ○ 了 ○ マーク済ロール準備完了 ○ ○ バック ○ トランザクショコミット中 ○ ンなしコミット完了 ○ 不明 ○ ○ Copyright© 2012, Oracle. All rights reserved. 21
  22. 22. ヒューリスティックな終了• 2PC処理中にRMによる一方的な決定(commit/rollback)が 行われた状態 • インダウト中のTM障害や、トランザクション破棄、トランザ クションの手動解決などにより発生 • ヒューリスティックな終了の状態によってスローされる例外 が異なるヒューリスティックな決定 説明 RMがRollbackしてしまった。TMが他のTXブランチをコミッHeuristicRollback トすると不整合発生 RMがCommitしてしまった。TMが他のTXブランチをHeuristicCommit Rollbackすると不整合発生 複数のリソースでHeuristicRollbackとHeuristicCommitが発生HeuristicMixed していることをTMが認識している状態 HeuristicMixedが発生しているが、TMがRMのステータスをHeuristicHazard 識別できていない状態 Copyright© 2012, Oracle. All rights reserved. 22
  23. 23. 障害時の復旧 - TRS(トランザクション回復サービス)• WebLogic ServerのTMではトランザクション回復サー ビスを提供 • サーバ起動時に自動的に実行 • TLogを解析して未完了のトランザクションの解決を行う • 2PC処理を完了させる(フェーズ1, フェーズ2) • ヒューリスティックな終了をログに記録• サーバに障害が発生した場合の対応 TLogにアクセスできる状態でサーバを起動する • ハードウェア障害に対応するにはTLogの複製が必須 • 高性能Disk or JDBCストア(WLS12c) • クラスタ構成の場合はサービス移行orサーバ移行可能 Copyright© 2012, Oracle. All rights reserved. 23
  24. 24. JTA トランザクション処理 Application Transaction Resource TransactionalApplication Connection XAResource Server Manager Factory Resource begin getConnection getTransactionalResource new new new getXAResource enlistResource start doWork commit commit prepare commit Copyright© 2012, Oracle. All rights reserved. 24
  25. 25. トランザクションに参加可能なリソース トランザクション トランザクション リソース XAResource 開始者 参加者Java Client ○CORBA Client ○RMI Object ○ ○ (if hosted on WLS)EJB (BMT) ○EJB (CMT) ○ ○JDBC ○ ○ ○JMS ○ ○ ○J2EE Connector ○ ○ ○JSP ○Servlet ○外部リソース ○ ○ Copyright© 2012, Oracle. All rights reserved. 25
  26. 26. EJB(CMT)のトランザクション管理• EJB(CMT)ではEJBコンテナがトランザクション境界を 設定 • トランザクション属性で制御可能(@TransactionAttribute)• 指定可能なトランザクション属性 • コンテナ – コンポーネント間のトランザクションTransactionAttribute クライアント(TXなし) クライアント(TXあり)NEVER △ × 例外発生NOT SUPPORTED △ △ クライアントTXはSuspendSUPPORTS △ ○MANDATORY × 例外発生 ○REQUIRED ○ ○REQUIRES NEW ○ ○ クライアントTXはSuspend ×: 呼び出し不可 △:トランザクションなし ○:トランザクションあり Copyright© 2012, Oracle. All rights reserved. 26
  27. 27. JDBCデータソースのトランザクション対応• 分散トランザクションに参加する場合は原則として データソース作成時にXA対応ドライバを使用する• 非XAドライバを使用する場合はグローバルトランザ クションのサポートを選択 ※非XAドライバでグローバルトラ ンザクションを使用する場合は、 Connectionの取得前にトランザク ションを開始する Copyright© 2012, Oracle. All rights reserved. 27
  28. 28. Logging Last Resource(LLR)• トランザクションの整合性を保ちつつ2PCトランザク ションの最適化を実現 • 2PCに参加するリソースのXA処理のオーバーヘッドを低減 • +「2PCのエミュレート」よりも高い整合性• LLRの注意点 • LLR用のデータソースは非XAドライバを使用 • LLR表は自動生成される(表名の接頭辞は指定可能) • LLR表を格納するDBはWLSよりも先に起動しておく • LLR表を格納するDBにアクセス出来ないと起動に失敗する • LLR使用時もTLogは必要 Copyright© 2012, Oracle. All rights reserved. 28
  29. 29. LLR処理 2PC:prepare 2 5 2PC:commit XA Data Source 非XAリソース コミット1 Commit 4 (ローカルTX) WebLogic Non-XA Data Application Server (TM) Source JMS XA コミットレコード 挿入 3 Connection LLR Table 2 5 Copyright© 2012, Oracle. All rights reserved. 29
  30. 30. ドメイン間トランザクションの設定• ドメイン間に渡るグローバルトランザクションを実 行するにはドメインのセキュリティ設定を追加する • ドメイン間でのセキュリティコンテキストの伝播のため • クロスドメインセキュリティを設定 • ドメイン間の信頼(セキュリティ相互運用モード) • 考慮事項 • ドメイン間で同じセキュリティ設定を使う • ドメイン間トランザクションを参加するリソース名は一意である必要が ある Copyright© 2012, Oracle. All rights reserved. 30
  31. 31. まとめ• WebLogic Serverのトランザクションはドメイン単位 で設定する • 2PCトランザクション処理がある場合は、考慮事項が増える • TXタイムアウト, TLOGストア, 障害回復, … • モニタリングはサーバ単位で行う• プログラミングモデルは原則としてJava EE準拠 • リソース毎に必要なトランザクション設定を行う Copyright© 2012, Oracle. All rights reserved. 31
  32. 32. Oracle Universityからのお知らせ• WebLogic Serverにおけるトランザクション管理をは じめとしたWebLogic Serverの管理方法を学習したい 方に最適な研修コースをご提供しています。 • Classroomトレーニングだけでなく、Live Virtual Class、『Oracle ト レーニング・オンデマンド』など多様な受講形態から選択いただけ ます。 Copyright© 2012, Oracle. All rights reserved. 32
  33. 33. ミドルウェア Oracle WebLogic Server 11g: 管理 Oracle Application Gridの基盤を支える Oracle WebLogic Server 11gの管理コース! このコースでは、Web管理者がOracle WebLogic Server 11gのインストールおよび設定 する方法について説明します。Web管理者が管理コンソールやコマンドライン、および スクリプトツール(WLST)などを使用して、Java EEアプリケーションをOracle WebLogic Server 11gにデプロイする方法についても説明します。 その他に、Oracle WebLogic Server のWebインタフェースとしてOracle HTTP Serverを設 定する方法を解説し、またOracle WebLogic Serverクラスタを設定してアプリケーショ ンのフェイルオーバーとロードバランシングをサポートする方法を学習します。また、 WebLogic Server管理者の管理タスクの概要について説明します。 ■Oracle Fusion Middleware の概要 ■WebLogic Serverのアーキテクチャ ■Oracle WebLogic Serverのインストール ■管理コンソールおよび他の管理ツールの概要 ■WebLogic Server ドメインのコンフィグレーション ■Oracle WebLogic Server の管理およびロギングの使用コース内容 ■アプリケーションのデプロイ ■データソース、JDBCドライバ、接続プールの設定 ■JMS アプリケーションのコンフィグレーション ■WebLogic Serverの基本セキュリティのコンフィグレーション ■Oracle HTTP Server のコンフィグレーション ■Oracle WebLogic クラスタのコンフィグレーション ■バックアップおよびリカバリの管理 ■全体バックアップ、増分バックアップ ・Linux の基本コマンドおよびデスクトップのナビゲーション 受講 ・クライアント/サーバーの概念における TCP/IP ネットワークに関する基本的な知識前提条件 ・Java EE の基礎知識(サーブレットや JSP など) ※推奨 ・Oracle WebLogic Server 11g管理者対象者 ・Javaアプリケーション開発者コース日程 5日間 日程の詳細は Oracle University Webサイト にてご確認ください。受講料 定価¥363,825(税込) ※Oracle PartnerNetwork会員様は、パートナー割引価格で受講いただけます。 Copyright© 2012, Oracle. All rights reserved.
  34. 34. Copyright© 2012, Oracle. All rights reserved.
  35. 35. Copyright© 2012, Oracle. All rights reserved. 35
  1. Gostou de algum slide específico?

    Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

×