「2012年weblogic server勉強会の総まとめ」

41
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 1 OTNイブニングセミナー 31WebLogic Server勉強会@東京 2012WebLogic Server勉強会総集編 20121214日本オラクル株式会社

Upload: oracle-fusion-middleware

Post on 18-Dec-2014

2.100 views

Category:

Technology


2 download

DESCRIPTION

2012年のWebLogic Server勉強会で取り上げたトピックスの中から「さすがWebLogic」機能を選んで総復習します。参加者からのアンケート結果や会場からの「経験談」など、Oracle ACEの山田貴裕さんと一緒に振り返ります。ライブならではの興奮(?)をお楽しみに! 日本オラクル株式会社 Fusion Middleware事業統括本部 佐々木政和 Oracle ACE: 伊藤忠テクノソリューションズ株式会社 ミドルウェアサービス部 山田 貴裕 氏

TRANSCRIPT

Page 1: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 1

OTNイブニングセミナー 第31回WebLogic Server勉強会@東京

2012年WebLogic Server勉強会総集編

2012年12月14日

日本オラクル株式会社

Page 2: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 2

2012年の「WebLogic Server勉強会」総まとめ 目標

– 今年の勉強会の中から「さすがWebLogic」なポイントを総復習

– 参加者全員が情報を共有

– 2013年の「WebLogic Server勉強会」の目標設定(?)

進行

– 「さすがWebLogic」ベスト5を順番に発表

– ポイントを説明

– クイズにチャレンジ(全員参加型)

– Oracle ACE、会場の経験者からの声(先人の知恵を共有)

Page 3: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 3

クラスタリング

Page 4: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 4

WebLogic Server基本クラスター・アーキテクチャ

クラスタの重要な機能

– 負荷分散 – クラスタメンバにリクエストを均等に分配

– フェイルオーバ – 障害発生時も処理を別のクラスタメンバで継続する

mydomain

cluster1

Server1

Web コンテナ

EJB コンテナ

Server2

Web コンテナ

EJB コンテナ

RDBMS プロキシ

データソース

データソース

HTTPリクエストを負荷分散

Page 5: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 5

WebLogic Serverクラスタの設定 クラスタの設定: WebLogicドメインで設定

プロキシの設定: プロキシ側で設定

mydomain

cluster1

Server1

Web コンテナ

EJB コンテナ

Server2

Web コンテナ

EJB コンテナ

RDBMS プロキシ

データソース

データソース

AdminServer ドメイン設定

設定ファイル

HTTPサーバやロードバランサの設定

Weblogic Serverドメインの設定

Page 6: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 6

HttpSessionインメモリレプリケーション プロキシプラグインの動作

– リクエストをWebLogic Serverにプロキシする

– リクエストのURLまたはMIMEタイプ、もしくはその両方でプロキシ可能

– セッションを持つHTTPリクエストはセッションを格納しているサーバにルーティングする

– クラスタ内の障害発生サーバにはプロキシしない

HttpSession をクラスタ内の2つのサーバで保持

– セッション毎にプライマリ・セカンダリサーバが決定される

– サーバにはプライマリ・セカンダリセッションが混在する

メモリ消費量が増大する

cluster1

プロキシ

Server1 Server2 Server3

セカンダリ

1

クライアント

プライマリ

1

2 2

3

3

Page 7: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 7

HttpSessionインメモリレプリケーション

プライマリ = Server3

セカンダリ = Server2

プライマリサーバは負荷分散によって初回リクエスト時に決定

– セカンダリサーバはレプリケーション・グループとマシン設定からHttpSession生成時に決定

– セカンダリサーバへの同期はHttpSession#setAttribute()がトリガになる

– プライマリ・セカンダリサーバ情報はCookieに埋め込まれる

cluster1

プロキシ

Server1 Server2 Server3

セカンダリ

setAttribute()

クライアント

プライマリ

Page 8: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 8

HttpSessionインメモリレプリケーション

プライマリサーバに障害が発生するとセカンダリが昇格

– 別のサーバでセカンダリが再生成される

プロキシプラグインによってセカンダリサーバにリクエストの振り替えられる

– 振り替えはクライアントからの次のリクエスト時

– プロキシプラグインはCookieのサーバリストをもとにセカンダリサーバに接続

プライマリ = Server3

セカンダリ = Server2

cluster1

プロキシ

クライアント

Server1 Server2 Server3

プライマリ プライマリ セカンダリ

Page 9: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 9

HttpSessionインメモリレプリケーション

プライマリに昇格したサーバはCookieを更新

– プライマリとセカンダリ情報が更新されたCookieがクライアントに戻される

cluster1

プロキシ

Server1 Server3

セカンダリ

プライマリ = Server2

セカンダリ = Server1

Server2

setAttribute()

プライマリ

クライアント

Page 10: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 10

インメモリレプリケーションの考慮事項

リクエストのフェイルオーバはプラグインによって行われる

– クライアントからのリクエスト到達までにプライマリ/セカンダリサーバが共にダウンするとセッションは継続できない

– セッションの消失が許容できない場合はインメモリレプリケーションは選択不可

– IMRを使用する場合は3つ以上のサーバでクラスタを構成することを推奨

HttpSessionに格納するデータサイズが大きすぎるとレプリケーションでオーバーヘッドが発生する

– HttpSessionに格納するデータは可能な限りコンパクトに

java.io.Serializableの実装も忘れずに

– 同期のトリガはHttpSession#setAttribute()

Page 11: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 11

WebLogic Serverの

トランザクション

Page 12: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 12

WebLogic ServerとJava EE

WebLogic Server

JNDI

トランザクションマネージャ

セキュリティ・レルム

LDAP ATN Audit

or ATZ

JMSサーバ Destination

(Queue /Topic)

JDB

C

データソース

RDBMS

Web サーバ

Plug

In Web Container

EJB Container

Java EE アプリケーショ

JMS

RMI

JTA

JDBC JAAS

JNDI

Servlet

JSP EJB JPA JSF

Page 13: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 13

X/Open DTPモデル

Application Program (AP)

Transaction Manager

(TM)

Resource Manager (RM) Resource Manager

(RM) Resource Manager (RM)

XA

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

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

TMとRMのインタフェース

Page 14: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 14

Java EEにおけるトランザクション仕様

JTA(Java Transaction API)

– X/Open DTPモデルをベースにした分散トランザクションAPIトランザクションマネージャとトランザクション参加者であるアプリケーション、リソースマネージャが使用する標準インタフェースを提供

javax.transaction.TransactionManager - トランザクションマネージャが使用

javax.transaction.UserTransaction – ユーザが使用

javax.transaction.xa.* - トランザクションマネージャ(TM)とリソースマネージャ(RM)間の規約

JTS (Java Transaction Service)

– JTAをサポートするトランザクションマネージャ実装を提供OMG Object

Transaction Service(OTS) 1.1 仕様に対応したJava実装のサービス

Page 15: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 15

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

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

トランザクションの設定

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

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

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

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

– 管理コンソール, WLST …

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

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

トランザクションサービス

Page 16: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 16

トランザクションのモニタリング サーバ・レベルで監視

Page 17: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 17

TRS(トランザクション回復サービス)

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

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

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

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

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

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

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

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

– 高性能Disk or JDBCストア

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

Page 18: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 18

JDBC TLOGとは

従来はファイルストア(デフォルト・ストア)のみに格納できたトランザクション・ログ(TLOG)を、より信頼性かつ利便性の高いデータベースへ格納できるようにした機能

Page 19: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 19

Logging Last Resource(LLR)

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 20: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 20

「ヒューリスティック」 2PC処理中にRMによる一方的な決定(commit/rollback)が行われた状態

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

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

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

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

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

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

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

Page 21: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 21

WebLogic Scripting Tool

(WLST)とMBean

Page 22: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 22

WebLogic Scripting Tool(WLST)とは WLSTはWebLogic ドメインの作成、管理、監視に使用できる

– 構成情報、監視情報をあらわすMBeanを直接操作可能

– 構成情報: ConfigurationMBean / EditMBean

– 監視情報: RuntimeMBean

Jythonベースのツール

用途に応じた起動モード

– 対話モード/スクリプトモード/組み込みモード

WLSTではMBeanをダイレクトに操作するのでMBeanの理解を深める必要があります

Page 23: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 23

JMX MBeanとは

JMX (Java Management Extensions)

– Java環境の管理・監視のための標準仕様

– JCPのJSR-003(JMX ) と JSR-160(JMX Remote)で策定されている。

MBean (Managed Bean)

– JMX仕様の中で定義されている管理/監視用のJavaコンポーネント

– MBean Server経由で管理対象の状態を取得したり、操作や通知を行うインターフェースをもつ

Page 24: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 24

JMX MBeanのアーキテクチャ

MBean

MBean

MBean

管理対象

管理対象

管理対象

Connector

Protocol

Adapter

MBean Server

Agent Level Instrumentation Level Distributed Services Level

JMX-compliant

Management

Application

Web

Browser

HTTP

Instrumentation Level 管理対象にアクセスするためのMBeanを指すレイア

Agent Level MBeanのコンテナとなるMBean Serverを指すレイア。MBeanは、MBean Serverへ登録することで利用可能になる。

Distributed Services Level Connectorや Protocol Adapterを通じてMBean Serverと通信するためのインターフェースを指すレイア

Page 25: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 25

WebLogic ServerのMBeanサーバ

MBeanサーバ種類 概要 MBeanサーバの

ホストになるもの

Domain Runtime

MBeanサーバ

ドメイン全体のサービス用の MBean。この MBean サーバは、管理対象サーバ上にある MBean への単一のアクセス ポイントとしても機能する。

WebLogicの

管理サーバ

Runtime

MBeanサーバ

特定の WebLogic Server インスタンスのモニタ、実行時制御、およびアクティブなコンフィグレーションを表すMBeanを提供する MBeanサーバ。

WebLogicドメイン中の管理サーバと

管理対象サーバ

Edit

MBeanサーバ

保留中のコンフィグレーション MBean と、WebLogic Server

ドメインのコンフィグレーションを制御するMBeanを提供する。変更のロック、保存、およびアクティブ化用の

ConfigurationManagerMBean をエクスポーズする。

ドメインのコンフィグレーションを変更するには、この MBean

サーバを使用する。

WebLogicの

管理サーバ

JVMのプラットフォームMBeanサーバ

JVMから提供されJVM 自体のモニタ情報を保持する MBean

サーバ。このMBeanサーバからWebLogicのRuntime MBean

サーバを利用することも可能

JVM

Page 26: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 26

WLSTのユースケースを語ろう!(デプロイ例)

準備完了

アクティブ

② ③

⑥ ⑤

デプロイなし

管理

③ ②

② ③

WLST weblogic.Deployer

① distributeApplication() -distribute

② startApplication() -start

③ stopApplication() -stop

④ undeploy() -undeploy

⑤ deploy() -deploy

⑥ undeploy() -undeploy

⑦ redeploy() -redeploy

Page 27: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 27

Active GridLink for RAC

Page 28: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 28

Active GridLink for RACのポイント

1. Universal Connection Pool(UCP)との統合

2. Single Client Access Name(SCAN)に完全対応

3. RACからの通知による高速接続フェールオーバ

(Fast Connection Failover; FCF)

4. RACの負荷状況を考慮した実行時接続ロードバランシング

(Runtime Connection Load Balancing; RCLB)

5. XAトランザクションのRACインスタンス・アフィニティ

6. WebセッションのRACインスタンス・アフィニティ(WLS12.1.1~)

Page 29: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 29

Active GridLink for RACの仕組み

WebLogicデータソースと統合されたUCP(Universal Connection Pool)が、ONS(Oracle Notification Service)から通知されるRAC側の構成変更/負荷状況のイベントを元に、適切な接続の制御(ロードバランシング、フェールオーバ、アフィニティ)をおこなう

O

NS clie

nt

UCP-RAC

モジュール

ONS Daemon

ONS Daemon

WebLogic Server Oracle Database(RAC)

死活・負荷状況通知

GridLinkデータソース

(サービスA用)

インスタンス1

インスタンス2

サービス

A

Page 30: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 30

実行時接続ロードバランシング(RCLB)

WebLogic

Connection Pool

Application

I’m busy

I’m very busy

I’m idle

30% connections

10% connections

60% connections

RAC Database

Instance1

Instance2

Instance3

Page 31: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 31

XAアフィニティ

WebLogic Server

RAC Database

Instance1

Instance2

Instance3

EJB1

WebLogic Server

EJB

EJB3

EJB2

EJB4 Transaction

Affinity Context

Page 32: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 32

Web セッション・アフィニティ

RAC Database

Instance1

Instance2

Instance3

WebLogic Server

Servlet

JSP

Servlet

JSP

JSP

HttpSession

Affinity Context

Page 33: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 33

GridLink for RACを語ろう!

WebLogic Server

+

Oracle RAC

プロジェクト経験者

Page 34: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 34

JRockit Flight Recorder

Page 35: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 35

JRockit Flight Recorder + Mission Control Client JVMの挙動の常時記録と分析

ヒープメモリ利用率の増加傾向 ヒープメモリを占めるオブジェクトの割合と増加率

1. トラブルの確実な原因追究を 「遡って」 実施可能

2. 障害発生→改善のサイクルと手間を大きく短縮化

Page 36: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 36

JRockit Flight Recorder のアーキテクチャ

JRockit JVM

Flight Recorder Runtime

循環バッファー

Appli

catio

n

JRockit Mission Control

WLDF

イベント イベント

Appli

catio

n

アプリ

Thread Buffer

Global Buffer

Disk File

新しいデータ

古いデータ

WLST

JVM

Runti

me jrcmd

ダンプ解析 あふれたら移動

あふれたら移動

ダンプ依頼

ダンプ依頼

ダンプ

ルールに基づく

ダンプトリガー

ダンプ依頼

廃棄

Page 37: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 37

JRockit Flight Recorderの記録を開始、終了

一時データを/var/log/jfrディレクトリに格納し、最低でもアプリケーション実行の最後の5分間分のデータを確保するようなデフォルト記録を有効にする場合

– XX:FlightRecorderOptions=defaultrecording=true,disk=true,repository=/va

r/log/jfr,maxage=5m

格納されるデータ量は絶対バイト数または有効期間のいずれかで設定

– 最大サイズの設定: maxsize=<size>

例: 5m k(キロバイト)、m(メガバイト)およびg(ギガバイト)

– 最大有効期間の設定: maxage=<age>

例:10s s(秒)、m(分)、h(時)またはd(日)

コマンド行に指定する場合の例

Page 38: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 38

JRockit Flight Recorderの記録を開始、終了

jrcmd <pid> start_flightrecording duration=60s

filename=myrecording.jfr

jrcmd <pid> check_flightrecordin

jrcmd <pid> stop_flightrecording recording=1

(パラメータはcheck_flightrecordinのステータス)

jrcmdコマンドで開始、確認、終了する場合

Page 39: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 39

Flight Recorderの実体は”イベント”にあり

Flight Recorderは、実行中に発生するイベントを記録

イベントは、関連付けられたデータを持つ個別のデータ・ポイント

特定の時間に発生したCPU負荷またはロックを待機中のスレッドなど、実行中に発生する記録可能な現象

イベント・タイプはリレーショナル・キーによって参照され、JVMまたはアプリケーションでどのタイプのサブシステムに所属するかを示す。

記録するデータ量を制御するためにイベント・タイプをコンフィグレーション

Page 40: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 40

フライトレコーダのイベントの例 http://docs.oracle.com/cd/E22646_01/doc.40/b61448/app_events.htm#BABJJJGA

名前 説明 パス

例外スロー

java/exception_throw

ファイル読取り Java

FileInputStream/RandomAccessFile/FileChannelからの読取り

java/file_read

ファイル書込み Java

FileInputStream/RandomAccessFile/FileChannelへの書込み

java/file_write

Javaモニター・エントリ Javaモニターへのエントリ java/monitor_enter

Javaモニター待機 Javaモニターを待機中 java/monitor_wait

新規TLAで割り当てられたオブジェクト オブジェクトが割り当てられ、新しいスレッド・ローカル領域(TLA)の取得が必要になりました

java/object_alloc_in_new_tla

TLAの外部で割り当てられたオブジェクト オブジェクトがTLAの外部で(ヒープに直接)

割り当てられました java/object_alloc_outside_tla

ソケット読取り Java Socket/SocketChannelからの読取り java/socket_read

ソケット書込み Java Socket/SocketChannelへの書込み java/socket_write

Page 41: 「2012年WebLogic Server勉強会の総まとめ」

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 41

Flight Recorderについて語ろう!

Flight Recorderを

使ってみたら…….