• Share
  • Email
  • Embed
  • Like
  • Private Content
WebLogic Server トランザクションのキホン+α
 

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

on

  • 4,239 views

分散トランザクションの基本概念、WebLogic Serverのトランザクション設定やモニタ方法と トランザクション回復 ...

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

Statistics

Views

Total Views
4,239
Views on SlideShare
4,234
Embed Views
5

Actions

Likes
1
Downloads
60
Comments
0

3 Embeds 5

http://meltwaternews.com 3
https://twitter.com 1
https://translate.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • <Insert Picture Here>WebLogic Server トランザクションのキホン+α日本オラクル株式会社 オラクルユニバーシティ岡田 大輔2012年03月29日
    • 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。 Copyright© 2012, Oracle. All rights reserved. 2
    • Agenda• 分散トランザクションとは? • Java Transaction API • 分散トランザクションとは?• WebLogic Serverのトランザクション設定 • ドランザクションの設定 • モニタリング • リソースの設定 Copyright© 2012, Oracle. All rights reserved. 3
    • トランザクションとは?• データストアに対して”all or nothing”手法で永続化を 行う処理 • 分散環境においてデータの整合性を保つためには必須• ACID特性を満たす • Atomicity(原子性) – 処理は成功か失敗のいずれか • Consistency(一貫性) – 処理前後ではデータの一貫性が保たれ る • Isolation(独立性) – 同時に実行される複数の処理は互いに干 渉しない • Durability(永続性) – 確定したトランザクションの結果は確実 に永続化される Copyright© 2012, Oracle. All rights reserved. 4
    • 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
    • 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
    • トランザクションマネージャとリソースマネージャ• トランザクションマネージャ(TM) • アプリケーションに代わってグローバルトランザクションの 管理を行うサーバソフトウェアコンポーネント • アプリケーションからのグローバルトランザクションの開始/ 終了要求に基づいて、そのトランザクションに関与する全て のリソースマネージャと通信してトランザクションを制御 • 2フェーズコミット(2PC)を制御 • WebLogic Serverではインスタンスごとにトランザクション マネージャが存在する• リソースマネージャ(RM) • データやプロセスへのアクセスを提供するインタフェースお よび関連ソフトウェアであり、トランザクション処理機能と アクセスの永続化機構を有する Copyright© 2012, Oracle. All rights reserved. 7
    • ローカルトランザクションとグローバルトランザクション• ローカルトランザクション • トランザクションマネージャが介在しないトランザクション • リソースマネージャが直接トランザクションを制御する • 非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
    • 2フェーズコミット (2PC)• 2PCプロトコルは複数のRMをまたぐ単一トランザク ションを調整する方法 • PrepareフェーズとCommitフェーズと呼ばれる2つのフェー ズを用いてトランザクション特性を満たす • トランザクションのコミット処理 (UserTransaction.commt()/TransactionManager.commit()) により2PCが開始される • コーディネータはグローバルトランザクションを操作し、 サブコーディネータは自身のサーバに関連したトランザク ション・ブランチを操作する Copyright© 2012, Oracle. All rights reserved. 9
    • WebLogic Serverの2PCプロセス• WebLogic Serverでは2PCを3つのステップで処理 • Pre-Prepareフェーズ • トランザクションが完了する前後でアプリケーションがコ ールバックを受け取れるようにするためにコールバックオ ブジェクト(javax.transaction.Synchronization)をトランザ クションマネージャに登録する • Prepareフェーズ(フェーズ1) • グローバルトランザクションに参加しているリソースがト ランザクションブランチを処理する準備を行う • Commitフェーズ(フェーズ2) • グローバルトランザクションに参加しているリソースが実 際にトランザクションブランチを処理する Copyright© 2012, Oracle. All rights reserved. 10
    • 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
    • Agenda• 分散トランザクションとは? • Java Transaction API • 分散トランザクションとは?• WebLogic Serverのトランザクション設定 • ドランザクションの設定 • モニタリング • リソースの設定 Copyright© 2012, Oracle. All rights reserved. 12
    • トランザクションの設定• トランザクションサービスはWebLogic Server起動時 に開始される • トランザクションの設定 • ドメイン・レベルで設定を行う • ドメインで同じトランザクション設定を使用 • トランザクションのモニタリング • サーバ・レベルでモニタリングを行う • 管理コンソール, WLST … • 参加リソース(JDBCデータソースなど)の設定 • リソース・レベルで設定を行う Copyright© 2012, Oracle. All rights reserved. 13
    • トランザクション設定 トランザクション開始からフェーズ1完 了までの持続時間。この時間を超える とTXはタイムアウトし、ロールバック される TMが新しいトランザクションログを作 成し、古いトランザクションログを破 棄するかどうかを確認する間隔 [10.3.3.0~]トランザクションのフェ ーズ2のタイムアウト時間。デフォ ルト(0)はtransaction-timeout x 2(秒) Copyright© 2012, Oracle. All rights reserved. 14
    • トランザクションログ• 未完了のトランザクション情報を格納するログ • トランザクションログはバイナリ形式のため、直接見ること はできない • トランザクションログはサーバのデフォルト永続ストアに格 納される • デフォルト永続ストア $DOMAIN/servers/<Server_Name>/data/store/default/_WLS_ <Server_Name>000000.DAT • WLS12cではJDBCストアを使用可能(後述) • サーバごとに設定変更可能 Copyright© 2012, Oracle. All rights reserved. 15
    • トランザクションログのダンプ• $ 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
    • JDBC TLOG ストア (WebLogic Server 12c)• TLogをデータベースに永続化可能 • TLog用高信頼性ストレージの代替 • 障害復旧の容易性の向上 (アプリケーションデータ, JMS, TLOGをDBに一括格納可能) デフォルト・ストア もしくは JDBC データソースを指定する - グローバルトランザクション非サポート(非XA) のデータソースを指定 - ストア先のDBにアクセス出来ないと起動に失敗 する Copyright© 2012, Oracle. All rights reserved. 17
    • トランザクションのモニタ• トランザクションのモニタはサーバ・レベルで行う • トランザクション統計 (JTARuntimeMBean/JTATransactionStatisticsRuntimeMBean) • トランザクションログストア統計(TransacitonLogStoreRuntimeMBean) • リソースごとのトランザクション統計 • XA (TransactionResourceRuntimeMBean) • 非XAリソース (NonXAResourceRuntimeMBean) • 回復サービス(RecoveryRuntimeMBean) • 現在のトランザクション (JTARuntimeMBeanのJTATransactions属性) Copyright© 2012, Oracle. All rights reserved. 18
    • トランザクションモニタ Copyright© 2012, Oracle. All rights reserved. 19
    • 実行中のトランザクション Copyright© 2012, Oracle. All rights reserved. 20
    • トランザクションの手動解決• 実行中のトランザクションは手動解決可能 • 障害対応用として使用 • ローカルオプションとグローバルオプション • ローカル: 該当のサーバリソースにのみ影響 • グローバル: グローバルトランザクションに参加する全サーバに影響 • トランザクションのステータスによって行える処理が異なる ステータス 強制コミット 強制ロールバック ステータス 強制コミット 強制ロールバックアクティブ ○ ロールバック中 ○ ロールバック完準備中 ○ 了 ○ マーク済ロール準備完了 ○ ○ バック ○ トランザクショコミット中 ○ ンなしコミット完了 ○ 不明 ○ ○ Copyright© 2012, Oracle. All rights reserved. 21
    • ヒューリスティックな終了• 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
    • 障害時の復旧 - TRS(トランザクション回復サービス)• WebLogic ServerのTMではトランザクション回復サー ビスを提供 • サーバ起動時に自動的に実行 • TLogを解析して未完了のトランザクションの解決を行う • 2PC処理を完了させる(フェーズ1, フェーズ2) • ヒューリスティックな終了をログに記録• サーバに障害が発生した場合の対応 TLogにアクセスできる状態でサーバを起動する • ハードウェア障害に対応するにはTLogの複製が必須 • 高性能Disk or JDBCストア(WLS12c) • クラスタ構成の場合はサービス移行orサーバ移行可能 Copyright© 2012, Oracle. All rights reserved. 23
    • 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
    • トランザクションに参加可能なリソース トランザクション トランザクション リソース 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
    • 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
    • JDBCデータソースのトランザクション対応• 分散トランザクションに参加する場合は原則として データソース作成時にXA対応ドライバを使用する• 非XAドライバを使用する場合はグローバルトランザ クションのサポートを選択 ※非XAドライバでグローバルトラ ンザクションを使用する場合は、 Connectionの取得前にトランザク ションを開始する Copyright© 2012, Oracle. All rights reserved. 27
    • 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
    • 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
    • ドメイン間トランザクションの設定• ドメイン間に渡るグローバルトランザクションを実 行するにはドメインのセキュリティ設定を追加する • ドメイン間でのセキュリティコンテキストの伝播のため • クロスドメインセキュリティを設定 • ドメイン間の信頼(セキュリティ相互運用モード) • 考慮事項 • ドメイン間で同じセキュリティ設定を使う • ドメイン間トランザクションを参加するリソース名は一意である必要が ある Copyright© 2012, Oracle. All rights reserved. 30
    • まとめ• WebLogic Serverのトランザクションはドメイン単位 で設定する • 2PCトランザクション処理がある場合は、考慮事項が増える • TXタイムアウト, TLOGストア, 障害回復, … • モニタリングはサーバ単位で行う• プログラミングモデルは原則としてJava EE準拠 • リソース毎に必要なトランザクション設定を行う Copyright© 2012, Oracle. All rights reserved. 31
    • Oracle Universityからのお知らせ• WebLogic Serverにおけるトランザクション管理をは じめとしたWebLogic Serverの管理方法を学習したい 方に最適な研修コースをご提供しています。 • Classroomトレーニングだけでなく、Live Virtual Class、『Oracle ト レーニング・オンデマンド』など多様な受講形態から選択いただけ ます。 Copyright© 2012, Oracle. All rights reserved. 32
    • ミドルウェア 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.
    • Copyright© 2012, Oracle. All rights reserved.
    • Copyright© 2012, Oracle. All rights reserved. 35