[WLS, Database] ONS Configuration in WLS

原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/ons_configuration_in_wls

Oracle Real Application Clusters (RAC) やOracle Data Guard環境からノードやサービスを追加・削除する際に、高速アプリケーション通知(FAN)を使って、サービスやノードの通知イベントを提供します。
Oracle Notification SystemはFANのためのトランスポートとして利用されます。Oracle Notification Systemに関する詳細は以下のリンクからどうぞ。
Fast Application Notification (FAN)
Includes FANwatcher:
A utility to subscribe to ONS and view FAN events
Oracle White Paper | May, 2015
http://www.oracle.com/technetwork/database/options/clustering/overview/fastapplicationnotification12c-2538999.pdf
ONSの構成はWebLogic Server 10.3.6以後、Active GridLink(AGL)に対して利用可能です。最近のリリースでは、自動ONSが追加されました。それにより、もはや明示的なONSの構成が不要になり、設定しないことが推奨されていますが、いくつかのケースでは明示的にONSの設定を実施する必要があります。その理由の一つは、walletファイルとパスワードを指定する(これは自動ONSではできません)ことが必要だから、もう一つの理由は明示的にONSトポロジーを指定し、接続数に手を入れるためです。

ONS構成はWebLogic Server 12.2.1で機能強化されました。OnsNodeList値はシングルノードリストもしくはプロパティノードリスト(これはWebLogic Server 12.2.1で導入されました)のいずれかで設定する必要があります(両方ではありません)。WebLogic ServerのOnsNodeListに等号(=)が含まれている場合、シングルノードリストではなく、プロパティノードリストがあると想定されます。

シングルノードリスト

コロンで区切られたONSデーモンのリスンアドレスとポートのペアのカンマ区切りリスト

例:

instance1:6200,instance2:6200

プロパティノードリスト

この文字列は複数のレコードから構成されています。各レコードはキー=値のペアから構成され、改行文字( '\ n')文字で終了します。以下のキーを指定することができます。
  • nodes.<id>
    リモートONSサーバの一意のトポロジーを表すノードのリスト。 <id> はノードリストに対し一意の識別子を指定します。重複エントリは無視されます。任意のリストで構成されたノードリストには、同じクライアントに対し他のリストで構成されているノードや、重複する通知が送信・配信されるノードが含まれていてはいけません。リストのフォーマットは、ONSデーモンのリスニングアドレスとポートの組合せをコロンで区切ったもののカンマ区切りで並べたものです。
  • maxconnections.<id>
    ONSサーバで管理される最大同時接続数を指定します。<id> はパラメータが適用されるノードリストを指定します。デフォルト値は3です。
  • active.<id>
    true の場合、リストはアクティブで、自動的に設定個数のONSサーバへの接続が確立されます。 false の場合、リストは非アクティブで、アクティブリスト用の接続を確立できない場合にフェールオーバリストとしてのみ使われます。非アクティブリストは、一度に一つのアクティブなリストのためのフェールオーバとしての機能を果たすだけです。一度単一の接続がアクティブリストで再確立すると、フェールオーバリストは非アクティブに戻ります。リストがフェールオーバした後にクライアントが発行した通知のみがフェールオーバリストに送信されることに注意してください。 <id> はこのパラメータが適用されるノードリストを指定します。デフォルト値は true です。
  • remotetimeout
    各リモートサーバへの接続に対するタイムアウト期間(単位はミリ秒)。リモートサーバがこのタイムアウト期間内に応答しなかった場合、接続を閉じます。デフォルト値は30秒です。
walletfile と walletpassword を文字列でサポートしていますが、WebLogic Serverはこれらの値に対し、別の構成要素であるOnsWalletFileとOnsWalletPasswordEncryptedを有していることにご注意ください。

この例は上記のシングルノードリストと同じ意味です。
nodes.1=instance1:6200,instance2:6200
データソースを構成して2個のクラスタに接続し、FANイベントを両クラスタから受け取る場合、例えばData GuardとともにRACを構成しているような場合、2個のONSノードグループが必要です。具体的には以下のようです。
nodes.1=rac1-scan:6200
maxconnections.1=4
nodes.2=rac2-scan::6200
maxconnections.2=4
URLには各クラスタに対し別々のADDRESS_LISTが必要で、SCAN名を拡張するために、ADDRESSごとにLOAD_BALANCE=ONを設定することをお忘れなく。

管理コンソールを使用してActive GridLinkデータソースを設定する場合、作成フローの中でプロパティノードリストを指定することはできません。その代わりに、データソース作成後、ONSタブでONSノード値を変更する必要があります。次の図は、2つのRACクラスタ用に2つのグループを使うプロパティノードリストの例です。

次の図は、ONSの統計情報監視ページを示しています。 2つのエントリがありますが、それぞれ各ホストとポートのペアです。

次の図は、rac2 ONSノード・グループをテストした後の監視ページの例です。

WLSTを使用して、ONSパラメータを作成することもできます。 ONS値の複数の行を埋め込まれた改行で区切る必要があります。以下はActive GridLinkデータソースを作成するための完全なサンプルです。
connect('weblogic','welcome1','t3://'+'localhost'+':7001')
edit()
startEdit()
cd('/')
dsName='aglds'
cmo.createJDBCSystemResource(dsName)
cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName)
cmo.setName(dsName)
cmo.setDatasourceType(‘AGL’)
cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDataSourceParams/' + dsName )
set('JNDINames',jarray.array([String('jdbc/' + dsName )], String))
cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDriverParams/' + dsName
cmo.setUrl('jdbc:oracle:thin:@(DESCRIPTION=(CONNECT_TIMEOUT=4) (RETRY_COUNT=30)(RETRY_DELAY=3) (ADDRESS_LIST=(LOAD_BALANCE=on) (ADDRESS=(PROTOCOL=TCP)(HOST=rac1)(PORT=1521)))(ADDRESS_LIST=(LOAD_BALANCE=on) (ADDRESS=(PROTOCOL=TCP)(HOST=rac2)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=otrade)))')
cmo.setDriverName( 'oracle.jdbc.OracleDriver' )
cmo.setPassword('tiger')
cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCConnectionPoolParams/' + dsName )
cmo.setTestTableName('SQL ISVALID')
cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDriverParams/' + dsName + '/Properties/' + dsName )
cmo.createProperty('user')
cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDriverParams/' + dsName + '/Properties/' + dsName + '/Properties/user')
cmo.setValue('scott')
cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDataSourceParams/' + dsName )
cmo.setGlobalTransactionsProtocol('None')
cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCOracleParams/' + dsName)
cmo.setFanEnabled(true)
cmo.setOnsNodeList('nodes.1=rac1:6200\nnodes.2=rac2:6200\nmaxconnections.1=4\n')
cd('/SystemResources/' + dsName )
set('Targets',jarray.array([ObjectName('com.bea:Name=' + 'myserver' + ',Type=Server')], ObjectName))
save()
activate()
自動的に設定されたONSを使うことができるならばそれが望ましいのですが、ONSを明示的に構成する必要がある場合、WebLogic Server 12.2.1には正確に要件を指定することができます。

0 件のコメント:

コメントを投稿