View
4.614
Download
1
Embed Size (px)
DESCRIPTION
第5回WebLogic Server勉強会@東京の資料です。当資料は講演者日本オラクル 基盤技術本部-Grid Center 冨沢篤史 の資料です。
Citation preview
Copyright© 2009, Oracle. All rights reserved. 1
GridLink for Oracle Real Application Clusters
Copyright© 2009, Oracle. All rights reserved. 2
GridLink for Oracle Real Application Clustersとは?
• WebLogic Server(WLS)からOracle Real Application Clusters(RAC)への接続機能の総称です。データアクセスに対して両製品が
提供している可用性、拡張性機能を使用できます。• WebLogic Serverのマルチデータソース
• RACの自動ワークロード管理
• サポートされるテクノロジの組み合わせがあります。
• OracleではWebLogic Serverのマルチデータソースを利用すること
を推奨しています。• 理由: マルチデータソースの実績。ユーザーシナリオのカバー率の広さ。
WLSによるRACへの接続の推奨はマルチデータソースです。
Copyright© 2009, Oracle. All rights reserved. 3
WebLogic Server マルチデータソースRACサービス対応
WebLogic Server
JNDI Tree
Internal Clients(e.g. Servlets)
ExternalClients
LookupData Source
LookupData Source
Multi Data Source for Service A
Data Source
Multi Data Source for Service B
Data Source
Data Source
Data Source
RA
C D
atab
ase
Serv
ice
A
Data Source
Serv
ice
ASe
rvic
e A
Serv
ice
ASe
rvic
e B
Serv
ice
B
Data Source
利用不可能なデータソース
Service X
Service X 利用可能なサービス
利用できないサービス
Data Source
Data Source
利用可能なデータソース
Copyright© 2009, Oracle. All rights reserved. 4
(参考)接続時フェイルオーバーと接続時ロードバランシング
• JDBCクライアントサイドのワークロード管理機能です。
• リスナー接続時ののロードバランシング、フェイルオーバーを提供します。
• WLSのマルチデータソースと併用できます、がお勧めしません。
• 理由:マルチデータソースがデータソースレベルでワークロード管理を行なうため。
Copyright© 2009, Oracle. All rights reserved. 5
(参考)高速接続フェイルオーバー
• 障害発生時に失効した接続の除去、接続要求のフェイルオーバー、トランザクションの迅速なロールバックを実現。
ONSFAN Event
ONS
ONS
ONSDataSource
RAC Instance 1
RAC Instance 2
RAC Instance 3
Copyright© 2009, Oracle. All rights reserved. 6
(参考)実行時接続ロードバランシング
ロード・バランシング・アドバイザ
“instance1にxx%,instance2にyy%,instance3にzz%
で割り振り”
• 各インスタンスの稼動状況に応じてアプリケーションに渡す接続数を制御
RAC Instance 1
RAC Instance 2
RAC Instance 3
ONS
ONS
ONS
ONS RAC Instance 1
ONS
ONS
ONS
RAC Instance 2
RAC Instance 3
ワークロード:大
ワークロード:中
ワークロード:小
ワークロード状況を基にしたアドバイザ情報
DataSource
Copyright© 2009, Oracle. All rights reserved. 7
(参考)接続アフィニティ
• 一連のアプリケーション処理で使用するインスタンスを固定するためのオプションを提供。
ONS
ONS
ONS
:Affinity Context
“ は1に振って”
RAC Instance 1
RAC Instance 2
RAC Instance 3
Oracle Data Source
Copyright© 2009, Oracle. All rights reserved. 8
WebLogic Server Multi Data Source
Copyright© 2009, Oracle. All rights reserved. 9
マルチデータソース:接続要求のフェイルオーバー
Multi Data Source
Data Source
Data Source
Data SourceConnectionPool
Data SourceConnectionPool JDBC Driver
WebLogic Server
JNDI Tree
Internal Clients(e.g. Servlets)
ExternalClients
LookupData Source
LookupData Source
RA
C D
atab
ase
Serv
ice
テスト接続が失敗したタイミングでデータソースレベルでフェイルオーバー
障害後もヘルスチェックを継続し、回復を検知したタイミングでフェイルバック
JDBC Driver
①
②
Copyright© 2009, Oracle. All rights reserved. 10
マルチデータソース:予約時の接続テスト
Data Source
In-Pool
ConnectionPool
In-Use
In-Use
Database
Connection
JDBC Cliente.g. Servlet,EJB,etc
テスト用SQLクエリー
クエリー実行結果①“DataSource.getConnection();”
②
③⑤
④
接続の予約テスト(TestConnectionsOnReserve):有効
テスト対象のテーブル(TestTableName):”SQL <任意のSQLステートメント>”
Copyright© 2009, Oracle. All rights reserved. 11
マルチデータソース:データソースのフェイルバック
Multi Data Source
Data Source
Data Source
Data SourceConnectionPool
Database
①④⑤
②
③
JDBC Cliente.g. Servlet,EJB,etc
“DataSource.getConnection();”
~
In-Pool⑥ テスト用SQLクエリー
クエリー実行結果
接続の予約テスト(TestConnectionsOnReserve):有効
テスト対象のテーブル(TestTableName):”SQL <任意のSQLステートメント>”
Copyright© 2009, Oracle. All rights reserved. 12
Oracle JDBC
Copyright© 2009, Oracle. All rights reserved. 13
Oracleへのクライアントアクセス
…
Service
Oracle Net Listener
Ora
cle
Dat
abas
e
Serv
ice
• キーワードは 「サービス」、「リスナー」
アプリケーションは“サービス”につなぎに行く
Copyright© 2009, Oracle. All rights reserved. 14
Oracle JDBCによるコネクションの取得
…
WebLogicApplication
接続取得要求
接続生成
サーバプロセスとの接続を確立
2
3
接続オブジェクトをアプリケーションに渡す
5 4
ListenerListener
Server Procs.
OracleDatabase instance
SGA
…LGWnDBWn
1 getConnection()
WebLogicdata source
Copyright© 2009, Oracle. All rights reserved.Copyright© 2009, Oracle. All rights reserved. Oracle Confidential 15
(参考)Oracleが提供するJDBCデータソース
• 3種類のJDBCデータソース
• 想定する利用ケースが異なる Connection
Connection
Connection
ConnectionPool
Connection
Connection
Connection
ConnectionPool
Data Source
JDBCDriver
ConnectionPoolDataSource API
PhysicalPooledConnectionobject
( javax.sql.ConnectionPoolDataSource )
( javax.sql.PooledConnection )
Connection
Connection
Connection
WebLogic ServerConnection Pool
WebLogic ServerDataSource
Connection
Connection
Connection
Universal Connection Pool
プール対応データソース
Connection
Connection
Connection
暗黙的接続キャッシュ
OracleDataSource
JDBCドライバパッケージ
のデータソース機能Oracle WebLogic Server Universal Connection Pool for JDBC
Copyright© 2009, Oracle. All rights reserved.Copyright© 2009, Oracle. All rights reserved. Oracle Confidential 16
(参考)Oracleが提供するJDBCデータソースWebLogic Serverにおける各データソースのサポート
• Oracle Database提供のデータソースのサポートは限定的• WLSは自身のデータソース/接続プールと連動してJava EEコンテナとしての
機能(トランザクション等)を提供します。
Connection
Connection
Connection
WebLogic ServerConnection Pool
WebLogic ServerDataSource
Connection
Connection
Connection
Universal Connection Pool
プール対応データソース
Connection
Connection
Connection
暗黙的接続キャッシュ
OracleDataSource
Oracle WebLogic Server
Universal Connection Pool for JDBC
JDBCドライバパッケージ
のデータソース機能
WLSでは非サポート一部の利用シナリオで限定的に利用可能
Copyright© 2009, Oracle. All rights reserved. 17
Multi Data Source を使用したRACへの接続方法
Copyright© 2009, Oracle. All rights reserved. 18
ポイント
• WebLogic Serverのデータソースによるデータアクセスの単位
は「データベース・インスタンス」• データソースとインスタンスは1:1の関係
• Oracleでは「サービス」での接続を想定。• データソースとインスタンスは1:Nの関係
接続の考え方が違うので構成に工夫が必要
Copyright© 2009, Oracle. All rights reserved. 19
では、どのように構成するか?
WebLogic Server
JNDI Tree
Internal Clients(e.g. Servlets)
ExternalClients
LookupData Source
LookupData Source
Multi Data Source for Service A
Data Source
Data Source
RA
C D
atab
ase
Serv
ice
A
Data Source
Serv
ice
ASe
rvic
e A
Serv
ice
A
Data Source
Ans. サービスを提供するインスタンス毎にデータソースを定義する
Copyright© 2009, Oracle. All rights reserved. 20
接続記述子(JDBC URL)の記述
接続先インスタンスに対してローカルのリスナーを指定
サービスとインスタンスのセットで指定
jdbc:oracle:thin:@(
DESCRIPTION = (ADDRESS =
(PROTOCOL = TCP)(HOST = racnode01-vip.jp.oracle.com)(PORT = 1521)) (CONNECT_DATA =
(SERVER = DEDICATED) (SERVICE_NAME = RACSRVC )(INSTANCE_NAME=inst1)
))
Multi Data Source
Data Source2
Data Source1
Data Source3
vipを使ってリスナーに接続
Copyright© 2009, Oracle. All rights reserved. 21
Multi Data Source でRACを構成する上での注意点
Copyright© 2009, Oracle. All rights reserved. 22
接続プール
• 待機系のデータベースインスタンスに対する接続プールの初期容量(InitialCapacity)は0にします。• 0にしないとサーバ起動時にデータソースの初期化に失敗してマルチデ
ータソースから切り離されてしまいます。
Copyright© 2009, Oracle. All rights reserved. 23
接続プール
• リスナーに大量の接続要求が一度にくると接続の生成に失敗する場合があります。• WebLogic Serverはデータソースのエラーと認識します。
• 回避策: Oracle Net Servicesの接続タイムアウト( oracle.net.CONNECT_TIMEOUT ) を設定(ミリ秒単位で指定)。
<properties><property>
<name>user</name><value>xxxx</value>
</property><property>
<name>oracle.net.CONNECT_TIMEOUT</name><value>10000</value>
</property></properties>
「管理コンソール」→「データソース」→「接続プール」タブ
Copyright© 2009, Oracle. All rights reserved. 24
ヘルスチェックの負荷を調整するには
• テストの間隔と頻度を調整できます。
HighPerformance
HighAvailable
TestConnectionsOnReserve(接続の事前テスト)
TestFrequencySecondsDS
OFF ON
長く設定 短く設定
SecondsToTrustAnIdlePoolConnectionで調整
Multi Data Source
DataSource
Data SourceConnectionPool
DataSourceData Source
ConnectionPool
Copyright© 2009, Oracle. All rights reserved. 25
(補足)RACの分散トランザクションサポート
• Oracle RAC 11g R1から分散トランザクション情報をインスタン
ス間で共有することが可能になっています。• WebLogic ServerもRACの提供する分散トランザクションサポートを部分
的に使っています。
• RACのDTSサービスに対してWebLogic Serverのサービス対
応データソースを構成することはサポートされていません。