Oracle Identity Managerのクラスタ化デプロイメントとEclipselinkキャッシュ・コーディネーションのトラブルシューティングでは、Oracle Identity Manager、SOAおよびWebLogicサービスのクラスタ化デプロイメントでの起動、クラスタ化デプロイメント・モードの設定、各クラスタの一意のマルチキャスト・アドレスの構成、マルチキャスト・ネットワークのテスト、Eclipselinkの追加ロギングの有効化、ノード間のマルチキャスト接続のテストを行います。
この付録は、Oracle Identity ManagerおよびSOAのクラスタ化デプロイメントを取り扱うOracle Identity Manager管理者および開発者とWebLogic管理者が使用できます。ここでは、eclipselink/toplinkキャッシュ・コーディネーションに問題があると考えられる(ログに次の例外が表示されている)場合に、Oracle Identity Managerとその必須コンポーネントのクラスタ化インストールの起動手順を検証、テストおよび修正するための指針のいくつかを提示します。
oracle.iam.platform.kernel.ProcessNotInPrePostStageException
この付録の内容は次のとおりです。
クラスタ環境でEclipseLinkキャッシュ・コーディネーションが正常に実行されるようにするには、クラスタ化ノードを1つずつ起動する必要があります。
すべてのノードを一度に起動すると、キャッシュ・コーディネーションの初期化が適切に実行されない可能性があります。また、各種管理対象サーバーの初期起動も重要であり、サーバーを不適切な順序で起動すると、一部のデータのシードが失敗する可能性があります。
Oracle Identity Manager、SOAおよびWebLogicサービスを起動するには:
クラスタ化デプロイメントでは、デプロイメント・モードを「クラスタ」に設定する必要があります。
oim-config.xmlファイル内でdeploymentMode
がcluster
に設定されており、MDSがoim-config.xmlファイルファイルに対する変更によって更新されていることを確認します。/db/oim-config.xmlのエクスポートを実行し、その内容が次のようなものであることを確認します。
<deploymentConfig>
<appServerName>weblogic</appServerName>
<initialContextFactory>weblogic.jndi.WLInitialContextFactory</initialContextFactory>
<dataBaseType>oracle</dataBaseType>
<deploymentMode>cluster</deploymentMode>
</deploymentConfig>
クラスタ化デプロイメントでは、各クラスタは一意のマルチキャスト・アドレスを持つ必要があります。
各クラスタ独自の一意のマルチキャスト・アドレスがMDS内のoim-config.xmlファイルで構成されていることを確認します。本番環境とテスト環境で同じマルチキャストIP構成を共有しないようにする必要があります。たとえば、次の各設定が同じmulticastAddress
値を共有しないようにする必要があります。
<xLCacheProviderProps multicastAddress="IP_ADDRESS" size="5000">
<properties></properties>
</xLCacheProviderProps>
他のOracle Identity Managerデプロイメントと同じmulticastAddress
値を共有しないでください。この値がテスト・ドメインで使用されている場合は、本番のoim-config.xmlファイルで同じアドレスを指定しないでください。
EclipseLinkでは、キャッシュ・コーディネーション用としてマルチキャスト・ネットワーキングも使用します。
EclipseLinkキャッシュ・コーディネーションでは、マルチキャスト・ポート3121と15ホップのTTL (Time To Live)設定を使用します。これは構成不可能です。ファイアウォールでは、使用環境のマルチキャスト・ネットワーキング要件をすべて考慮する必要があります。
マルチキャスト・ネットワークに対する単純なテストには、ノード間のマルチキャスト接続のテストと、WebLogicクラスタでのマルチキャスト・モニター・テストの実行があります。
マルチキャスト・ネットワークで簡単なテストを実行する方法の詳細は、My Oracle SupportのWebサイトの次の技術情報を参照してください。
適切なレベルのlogging.xmlファイルを追加し、ドメインを再起動して、Eclipselinkの追加ロギングを有効にします。
EclipseLink/Toplinkの追加ロギングを有効にするには、logging.xmlファイルに次を追加します。
<logger name='org.eclipse.persistence.session.oim.propagation' level='TRACE:32' useParentHandlers='false'> <handler name='odl-handler'/> </logger>
変更を有効にするには、ドメインを再起動します。
Oracle Identity Managerでは、通常の操作にマルチキャストIPネットワーク通信を使用します。これは、Oracle Identity Manager内のDesign Consoleおよびアプリケーション・レベルのキャッシングによって使用されます。場合によっては、ホストまたはルーターでマルチキャスト・ネットワーキングが無効である可能性があります。
この項では、Oracle Identity Managerクラスタの複数のノード間でマルチキャスト通信が機能しているかどうかをテストおよび検証する方法について説明します。
WebLogicのクラスタ化Oracle Identity Manager環境の各種ノード間でマルチキャスト・パケットを送受信できるかどうかを確認するには:
Oracle Identity Managerによって使用されているマルチキャストIPアドレスを取得します。これを行うには、次のようにします。
「Identity and Access」→「OIM」→「oim(OIM_SERVER)」を展開し、右側のペインにあるドロップダウン・メニューからシステムMBeanブラウザを表示します。
「アプリケーション定義のMBean」→「oracle-iam」→「MANAGED_SERVER_NAME」→「アプリケーション: oim→「XMLConfig」→「config」→「XMLConfig.CacheConfig.XLCacheProvider」→「XLCacheProvider」内のMulticastAddress
属性に定義されているIPアドレスを表示します。
関連するホストごとにコマンド・ウィンドウを開きます。
MIDDLEWARE_HOMEディレクトリに移動します。
使用しているバージョンに応じたcoherenceディレクトリ(coherence_3.6やcoherence_3.7など)に移動します。
bin
ディレクトリ内のスクリプトに実行権限がない場合は、次のように、chmod
コマンドを使用して実行権限を有効にします。
chmod u+x bin/*.sh
次のコマンドを実行し、マルチキャスト・パケットの送受信を開始します。
bin/multicast-test.sh -group MULTICAST_IP_ADDRESS:PORT
ここで、MULTICAST_IP_ADDRESSは、手順1で取得したIPアドレスです。
サンプル出力は次のようになります。
Starting test on ip=iam.example.com/10.10.10.10, group=/IP_ADDRESS:12345, ttl=4 Configuring multicast socket... Starting listener... Wed Feb 21 21:49:59 UTC 2015: Sent packet 1 containing 1468 bytes. Wed Feb 21 21:49:59 UTC 2015: Received test packet 5 from ip=idmsun.example.com/10.20.20.20, group=/IP_ADDRESS, ttl=4 containing 1468 bytes. Wed Feb 21 21:50:00 UTC 2015: Received test packet 1 from self (sent 1628ms ago). Wed Feb 21 21:50:01 UTC 2015: Received test packet 6 from ip=idmsun.example.com/10.20.20.20, group=/IP_ADDRESS:12345, ttl=4 containing 1468 bytes. Wed Feb 21 21:50:02 UTC 2015: Sent packet 2 containing 1468 bytes. Wed Feb 21 21:50:02 UTC 2015: Received test packet 2 from self Wed Feb 21 21:50:03 UTC 2015: Received test packet 7 from ip=idmsun.example.com/10.20.20.20, group=/IP_ADDRESS:12345, ttl=4 containing 1468 bytes.
ここで、multicast-testスクリプトは、同じIPアドレスとポート番号を使用してiam.example.comサーバーとidmsun.example.comサーバーの両方に対して実行されています。iam.example.comホストは、マルチキャスト・パケットを送信できるだけでなく、idmsun.example.comホストからパケットを受信することもできます。各ホストがクラスタ内の他のすべてのホストからパケットを受信していることを確認するために、テスト・スクリプトの出力をほんの少しの間、観察する必要があります。self
からのパケットのみを確認できる場合、このホストはmulticast-testスクリプトを実行している他のシステムからのテスト・パケットを受信していません。
注意:
TTL (Time To Live)に指定されているネットワーク・ホップ数内にホストがない場合、コマンドに-ttl 10
を追加することによってttlを変更できます。
EclipseLinkでは、キャッシュ・コーディネーションにもマルチキャスト・ネットワーキングを使用します。EclipseLinkキャッシュ・コーディネーションでは、マルチキャスト・ポート3121および15ホップのTTL設定を使用します。デフォルトのOracle Identity Managerマルチキャスト・ポートとEclipseLinkポートの両方をテストしてください。
注意:
マルチキャストに2番目のNICが使用される場合、次のように、-local
属性とともにインタフェースを指定してください。
multicast-test.sh -local UNICAST_ADDRESS -group IP_ADDRESS:12345
UNICAST_ADDRESSは、マルチキャスト・ネットワークに使用されるインタフェース上のユニキャスト・アドレスです。詳細は、My Oracle SupportのWebサイトの技術情報「Coherenceクラスタ・メンバーが実行されているバッチ間でマルチキャスト通信が正しく動作しているかどうかを確認する方法(ドキュメントID 1936452.1)」を参照してください。
WebLogicが使用されておらず、対応するマルチキャスト・テスト・スクリプトがない場合、一組の小規模なJavaコマンド行アプリケーションをテスト用として使用することもできます。詳細は、My Oracle SupportのWebサイトの技術情報「ネットワーク上でマルチキャストが有効であるかどうかをテストする方法(ドキュメントID 413783.1)」を参照してください。