weblogic server トランザクションのキホン+α

35
<Insert Picture Here> WebLogic Server トランザクションのキホン日本オラクル株式会社 オラクルユニバーシティ 岡田 大輔 20120329

Upload: oracle-fusion-middleware

Post on 24-May-2015

4.565 views

Category:

Technology


1 download

DESCRIPTION

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

TRANSCRIPT

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

<Insert Picture Here>

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

日本オラクル株式会社 オラクルユニバーシティ 岡田 大輔 2012年03月29日

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

Copyright© 2012, Oracle. All rights reserved. 2

以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。

OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。

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

Copyright© 2012, Oracle. All rights reserved.

Agenda

• 分散トランザクションとは?

• Java Transaction API

• 分散トランザクションとは?

• WebLogic Serverのトランザクション設定

• ドランザクションの設定

• モニタリング

• リソースの設定

3

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

Copyright© 2012, Oracle. All rights reserved.

トランザクションとは?

• データストアに対して”all or nothing”手法で永続化を行う処理

• 分散環境においてデータの整合性を保つためには必須

• ACID特性を満たす

• Atomicity(原子性) – 処理は成功か失敗のいずれか

• Consistency(一貫性) – 処理前後ではデータの一貫性が保たれる

• Isolation(独立性) – 同時に実行される複数の処理は互いに干渉しない

• Durability(永続性) – 確定したトランザクションの結果は確実に永続化される

4

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

Copyright© 2012, Oracle. All rights reserved.

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

実装のサービス

5

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

Copyright© 2012, Oracle. All rights reserved.

X/Open DTPモデル

6

Application Program (AP)

Transaction Manager

(TM)

Resource Manager

(RM) Resource Manager

(RM) Resource Manager

(RM)

XA

APはトランザクション境界を指定

APはRMを介してリソースを使用

TMとRMをトランザクション情報を交換

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

Copyright© 2012, Oracle. All rights reserved.

トランザクションマネージャとリソースマネージャ

• トランザクションマネージャ(TM)

• アプリケーションに代わってグローバルトランザクションの管理を行うサーバソフトウェアコンポーネント

• アプリケーションからのグローバルトランザクションの開始/終了要求に基づいて、そのトランザクションに関与する全てのリソースマネージャと通信してトランザクションを制御

• 2フェーズコミット(2PC)を制御

• WebLogic Serverではインスタンスごとにトランザクションマネージャが存在する

• リソースマネージャ(RM)

• データやプロセスへのアクセスを提供するインタフェースおよび関連ソフトウェアであり、トランザクション処理機能とアクセスの永続化機構を有する

7

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

Copyright© 2012, Oracle. All rights reserved.

ローカルトランザクションとグローバルトランザクション

• ローカルトランザクション

• トランザクションマネージャが介在しないトランザクション

• リソースマネージャが直接トランザクションを制御する

• 非XAドライバを使ったDB接続

• 非XAのJMS接続ファクトリを使用したJMSメッセージング

• グローバルトランザクション(分散トランザクション)

• トランザクションマネージャが介在するトランザクション

• TMがJMSやXA DataSourceなどトランザクションに関与する複数のRMを調整して、トランザクションの制御を行う

• 1TXでDB, JMSにアクセスする

• 1TXで2つ以上のDBにアクセスする

• TXがEJBコンテナによって開始された場合(EJBコンテナはサーバ上のTMを利用)

8

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

Copyright© 2012, Oracle. All rights reserved.

2フェーズコミット (2PC)

• 2PCプロトコルは複数のRMをまたぐ単一トランザクションを調整する方法

• PrepareフェーズとCommitフェーズと呼ばれる2つのフェーズを用いてトランザクション特性を満たす

• トランザクションのコミット処理

(UserTransaction.commt()/TransactionManager.commit())により2PCが開始される

• コーディネータはグローバルトランザクションを操作し、サブコーディネータは自身のサーバに関連したトランザクション・ブランチを操作する

9

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

Copyright© 2012, Oracle. All rights reserved.

WebLogic Serverの2PCプロセス

• WebLogic Serverでは2PCを3つのステップで処理

• Pre-Prepareフェーズ

• トランザクションが完了する前後でアプリケーションがコールバックを受け取れるようにするためにコールバックオブジェクト(javax.transaction.Synchronization)をトランザクションマネージャに登録する

• Prepareフェーズ(フェーズ1)

• グローバルトランザクションに参加しているリソースがトランザクションブランチを処理する準備を行う

• Commitフェーズ(フェーズ2)

• グローバルトランザクションに参加しているリソースが実際にトランザクションブランチを処理する

10

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

Copyright© 2012, Oracle. All rights reserved.

フェーズ2 (commit)

フェーズ1 (prepare)

2PC 処理の流れ

11

トランザクション

マネージャ

リソース

マネージャ1

リソース

マネージャ2

データベース1

アプリケーション

prepare

prepared

TLOG

commit

データベース2

トランザクション

マネージャ

リソース

マネージャ1

リソース

マネージャ2

データベース1

commit

committed

データベース2

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

Copyright© 2012, Oracle. All rights reserved.

Agenda

• 分散トランザクションとは?

• Java Transaction API

• 分散トランザクションとは?

• WebLogic Serverのトランザクション設定

• ドランザクションの設定

• モニタリング

• リソースの設定

12

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

Copyright© 2012, Oracle. All rights reserved.

トランザクションの設定

• トランザクションサービスはWebLogic Server起動時に開始される

• トランザクションの設定

• ドメイン・レベルで設定を行う

• ドメインで同じトランザクション設定を使用

• トランザクションのモニタリング

• サーバ・レベルでモニタリングを行う

• 管理コンソール, WLST …

• 参加リソース(JDBCデータソースなど)の設定

• リソース・レベルで設定を行う

13

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

Copyright© 2012, Oracle. All rights reserved.

トランザクション設定

14

トランザクション開始からフェーズ1完了までの持続時間。この時間を超えるとTXはタイムアウトし、ロールバックされる

TMが新しいトランザクションログを作成し、古いトランザクションログを破棄するかどうかを確認する間隔

[10.3.3.0~]トランザクションのフェーズ2のタイムアウト時間。デフォルト(0)はtransaction-timeout x 2(秒)

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

Copyright© 2012, Oracle. All rights reserved.

トランザクションログ

• 未完了のトランザクション情報を格納するログ

• トランザクションログはバイナリ形式のため、直接見ることはできない

• トランザクションログはサーバのデフォルト永続ストアに格納される

• デフォルト永続ストア$DOMAIN/servers/<Server_Name>/data/store/default/_WLS_ <Server_Name>000000.DAT

• WLS12cではJDBCストアを使用可能(後述)

• サーバごとに設定変更可能

15

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

Copyright© 2012, Oracle. All rights reserved.

トランザクションログのダンプ

• $ java weblogic.transaction.internal.StoreTransactionLoggerImpl [-

delete] <tlog_dir_path> <server_name>

• Options

• -delete … TLOGからすべてのエントリを削除

• <tlog_dir_path> … TLOGストアディレクトリ(=デフォルト永続ストア)へのパス

• <server_name> … サーバ名

16

+------------------------------------------------------------------------------------------------------------+

| 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)) |

+------------------------------------------------------------------------------------------------------------+

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

Copyright© 2012, Oracle. All rights reserved.

JDBC TLOG ストア (WebLogic Server 12c)

• TLogをデータベースに永続化可能

• TLog用高信頼性ストレージの代替

• 障害復旧の容易性の向上 (アプリケーションデータ, JMS,

TLOGをDBに一括格納可能)

17

デフォルト・ストア もしくは JDBC

データソースを指定する

- グローバルトランザクション非サポート(非XA)のデータソースを指定

- ストア先のDBにアクセス出来ないと起動に失敗する

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

Copyright© 2012, Oracle. All rights reserved.

トランザクションのモニタ

• トランザクションのモニタはサーバ・レベルで行う

• トランザクション統計(JTARuntimeMBean/JTATransactionStatisticsRuntimeMBean)

• トランザクションログストア統計(TransacitonLogStoreRuntimeMBean)

• リソースごとのトランザクション統計

• XA (TransactionResourceRuntimeMBean)

• 非XAリソース (NonXAResourceRuntimeMBean)

• 回復サービス(RecoveryRuntimeMBean)

• 現在のトランザクション (JTARuntimeMBeanのJTATransactions属性)

18

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

Copyright© 2012, Oracle. All rights reserved.

トランザクションモニタ

19

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

Copyright© 2012, Oracle. All rights reserved.

実行中のトランザクション

20

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

Copyright© 2012, Oracle. All rights reserved.

トランザクションの手動解決

• 実行中のトランザクションは手動解決可能

• 障害対応用として使用

• ローカルオプションとグローバルオプション

• ローカル: 該当のサーバリソースにのみ影響

• グローバル: グローバルトランザクションに参加する全サーバに影響

• トランザクションのステータスによって行える処理が異なる

21

ステータス 強制コミット 強制ロールバック ステータス 強制コミット 強制ロールバック

アクティブ ○ ロールバック中 ○

準備中 ○ ロールバック完了 ○

準備完了 ○ ○ マーク済ロールバック ○

コミット中 ○ トランザクションなし

コミット完了 ○ 不明 ○ ○

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

Copyright© 2012, Oracle. All rights reserved.

ヒューリスティックな終了

• 2PC処理中にRMによる一方的な決定(commit/rollback)が行われた状態

• インダウト中のTM障害や、トランザクション破棄、トランザクションの手動解決などにより発生

• ヒューリスティックな終了の状態によってスローされる例外が異なる

22

ヒューリスティックな決定 説明

HeuristicRollback RMがRollbackしてしまった。TMが他のTXブランチをコミットすると不整合発生

HeuristicCommit RMがCommitしてしまった。TMが他のTXブランチをRollbackすると不整合発生

HeuristicMixed 複数のリソースでHeuristicRollbackとHeuristicCommitが発生していることをTMが認識している状態

HeuristicHazard HeuristicMixedが発生しているが、TMがRMのステータスを識別できていない状態

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

Copyright© 2012, Oracle. All rights reserved.

障害時の復旧 - TRS(トランザクション回復サービス)

• WebLogic ServerのTMではトランザクション回復サービスを提供

• サーバ起動時に自動的に実行

• TLogを解析して未完了のトランザクションの解決を行う

• 2PC処理を完了させる(フェーズ1, フェーズ2)

• ヒューリスティックな終了をログに記録

• サーバに障害が発生した場合の対応

• ハードウェア障害に対応するにはTLogの複製が必須

• 高性能Disk or JDBCストア(WLS12c)

• クラスタ構成の場合はサービス移行orサーバ移行可能

23

TLogにアクセスできる状態でサーバを起動する

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

Copyright© 2012, Oracle. All rights reserved.

JTA トランザクション処理

24

Resource

Factory

begin

enlistResource

commit

Transaction

Manager Connection

Transactional

Resource

Application

Server Application XAResource

getTransactionalResource

getXAResource

start

prepare

commit

getConnection

commit

doWork

new new

new

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

Copyright© 2012, Oracle. All rights reserved.

トランザクションに参加可能なリソース

リソース トランザクション

開始者

トランザクション参加者 XAResource

Java Client ○

CORBA Client ○

RMI Object ○ ○ (if hosted on WLS)

EJB (BMT) ○

EJB (CMT) ○ ○

JDBC ○ ○ ○

JMS ○ ○ ○

J2EE Connector ○ ○ ○

JSP ○

Servlet ○

外部リソース ○ ○

25

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

Copyright© 2012, Oracle. All rights reserved.

EJB(CMT)のトランザクション管理

• EJB(CMT)ではEJBコンテナがトランザクション境界を設定

• トランザクション属性で制御可能(@TransactionAttribute)

• 指定可能なトランザクション属性

• コンテナ – コンポーネント間のトランザクション

26

TransactionAttribute クライアント(TXなし) クライアント(TXあり)

NEVER △ × 例外発生

NOT SUPPORTED △ △ クライアントTXはSuspend

SUPPORTS △ ○

MANDATORY × 例外発生 ○

REQUIRED ○ ○

REQUIRES NEW ○ ○ クライアントTXはSuspend

×: 呼び出し不可 △:トランザクションなし ○:トランザクションあり

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

Copyright© 2012, Oracle. All rights reserved.

JDBCデータソースのトランザクション対応

• 分散トランザクションに参加する場合は原則としてデータソース作成時にXA対応ドライバを使用する

• 非XAドライバを使用する場合はグローバルトランザクションのサポートを選択

27

※非XAドライバでグローバルトランザクションを使用する場合は、Connectionの取得前にトランザクションを開始する

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

Copyright© 2012, Oracle. All rights reserved.

Logging Last Resource(LLR)

• トランザクションの整合性を保ちつつ2PCトランザクションの最適化を実現

• 2PCに参加するリソースのXA処理のオーバーヘッドを低減

• +「2PCのエミュレート」よりも高い整合性

• LLRの注意点

• LLR用のデータソースは非XAドライバを使用

• LLR表は自動生成される(表名の接頭辞は指定可能)

• LLR表を格納するDBはWLSよりも先に起動しておく

• LLR表を格納するDBにアクセス出来ないと起動に失敗する

• LLR使用時もTLogは必要

28

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

Copyright© 2012, Oracle. All rights reserved.

LLR処理

29

XA Data Source

Non-XA Data Source

JMS XA Connection

1 WebLogic

Server (TM)

Application

Commit

2

2 2PC:prepare

3

4

5

5

2PC:commit

非XAリソース コミット (ローカルTX)

コミットレコード 挿入

LLR Table

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

Copyright© 2012, Oracle. All rights reserved.

ドメイン間トランザクションの設定

• ドメイン間に渡るグローバルトランザクションを実行するにはドメインのセキュリティ設定を追加する

• ドメイン間でのセキュリティコンテキストの伝播のため

• クロスドメインセキュリティを設定

• ドメイン間の信頼(セキュリティ相互運用モード)

• 考慮事項

• ドメイン間で同じセキュリティ設定を使う

• ドメイン間トランザクションを参加するリソース名は一意である必要がある

30

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

Copyright© 2012, Oracle. All rights reserved.

まとめ

• WebLogic Serverのトランザクションはドメイン単位で設定する

• 2PCトランザクション処理がある場合は、考慮事項が増える

• TXタイムアウト, TLOGストア, 障害回復, …

• モニタリングはサーバ単位で行う

• プログラミングモデルは原則としてJava EE準拠

• リソース毎に必要なトランザクション設定を行う

31

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

Copyright© 2012, Oracle. All rights reserved.

Oracle Universityからのお知らせ

• WebLogic Serverにおけるトランザクション管理をはじめとしたWebLogic Serverの管理方法を学習したい方に最適な研修コースをご提供しています。 • Classroomトレーニングだけでなく、Live Virtual Class、『Oracle トレーニング・オンデマンド』など多様な受講形態から選択いただけます。

32

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

Copyright© 2012, Oracle. All rights reserved.

コース内容

■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会員様は、パートナー割引価格で受講いただけます。

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 WebLogic Server 11g: 管理

ミドルウェア

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

Copyright© 2012, Oracle. All rights reserved.

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

Copyright© 2012, Oracle. All rights reserved. 35