4 Oracle Internet Directoryコンポーネントのプロセス制御の理解

この章では、LDAPサーバーおよびレプリケーション・サーバー・プロセスに関するOracle Internet Directoryのプロセス制御アーキテクチャと関連概念について説明します。ここには、Oracle Internet Directoryプロセスの起動、停止およびモニタリングと、プロセス制御のいくつかのベスト・プラクティスが含まれます。

Oracle Internet Directoryサーバー・インスタンスの作成および破棄の詳細は、「Oracle Internet Directoryインスタンスの管理」を参照してください。

Oracle Directory Integration Platform Serverの起動と停止の詳細は、「Oracleディレクトリ統合プラットフォーム」を参照してください。

4.1 Oracle Internet Directoryのプロセス制御アーキテクチャ

ノード・マネージャは、Oracle Internet Directoryを含むOracle Fusion Middlewareのシステム・コンポーネントをモニターするデーモン・プロセスです。Oracle Enterprise Manager Fusion Middleware Controlではノード・マネージャを使用して、Oracle Internet Directoryのインスタンスを起動または停止します。Oracle Internet Directoryコンポーネントの停止と起動をコマンド行から行う場合は、ノード・マネージャに対するコマンド行インタフェースであるWLSTを使用します。

「Oracle Internet Directoryインスタンスの管理」を参照してください

ノード・マネージャは、デーモン・プロセスOIDMON ($ORACLE_HOME/bin/oidmon)を直接、起動、停止、再起動およびモニターします。OIDMONは、Oracle Internet Directoryインスタンスのプロセス制御を担当します。11gリリース1以降では、同一ノードの同一Oracleインスタンスに複数のOracle Internet Directoryインスタンスを設定できます。Oracle Internet Directoryインスタンスを新規作成する方法としては、タイプOIDのOracle Fusion Middlewareコンポーネントを作成することをお薦めします。この方法で作成した各Oracle Internet Directoryインスタンスには、独自のOIDMONがあります。

図4-1に、Oracle Internet Directoryのプロセス制御の全体的なアーキテクチャを示します。タイプOIDのOracle Fusion Middlewareコンポーネントごとに、ノード・マネージャにより、OIDMONプロセスが生成されます。この図は、2つのコンポーネントとしてoid1oid2を示しています。OIDMONはOIDLDAPDディスパッチャ・プロセスを生成し、OIDLDAPDディスパッチャ・プロセスは1つ以上のOIDLDAPDサーバー・プロセスを生成します。

Oracle Internet Directory 11gリリース1 (11.1.1.7.0)以降、OIDLDAPDプロセスはOIDDISPD (ディスパッチャ)プロセスとOIDLDAPD (サーバー)プロセスに分割されます。ただしUNIXシステムおよびLinuxシステムでは、これらのプロセスはともに、実行時にps -efコマンドにより引き続きOIDLDAPDとして表示されます。

このインスタンスにレプリケーションが構成されている場合、OIDMONはレプリケーション・サーバー・プロセスを生成します。各ディスパッチャ・プロセスには、リクエストを受信するための独自の非SSLおよびSSLポートがあります。コンポーネントごとにディスパッチャが生成するOIDLDAPDサーバー・プロセスの数は、コンポーネントのインスタンス固有の構成エントリ内のorclserverprocs属性によって制御されます。

ノート:

orclmaxlogfilesizeで指定された設定に関係なくログ・ファイルのサイズが1MBを越えて増加した場合、Oracle Internet Directoryの再起動後に、OIDモニター(OIDMON)およびOIDDISPD (ディスパッチャ)ログ・ファイルがローテーションされます。

図4-1 Oracle Internet Directoryのプロセス制御アーキテクチャ

Oracle Internet Directoryのプロセス制御アーキテクチャ

Oracle Internet Directoryインスタンスの新規作成の詳細は、「Oracle Internet Directoryインスタンスの管理」を参照してください。

4.2 Oracle Internet DirectoryのODS_PROCESS_STATUS表

Oracle Internet Directoryのプロセス情報は、ODSデータベース・ユーザー・スキーマのODS_PROCESS_STATUS表で管理されます。OIDMONは、指定された間隔で表の内容を読み取り、その表の内容が伝える目的に従って動作します。この間隔は、OIDMON起動時に使用されたsleepコマンド行の引数の値によって制御され、デフォルト値は10秒です。

表4-1に、ODS_PROCESS_STATUS表内のプロセス制御に関する情報を示します。

表4-1 ODS_PROCESS_STATUS表のプロセス制御項目

項目 意味

Instance

指定されたホスト上の指定されたサーバーIDに対する一意のインスタンス番号

PID

稼働中のサーバーのプロセスID

ServerID

サーバーID(2=OIDLDAPD、3=OIDREPLD)

Flags

サーバー・インスタンスに渡す必要のあるコマンド行引数

Hostname

このサーバーが存在している必要のあるホスト名

状態

サーバー・インスタンスの状態(0=停止、1=起動、2=実行中、3=再起動、4=シャットダウン、5=フェイルオーバー済、7=削除、8=追加)。OIDMONが状態を更新します。

RetryCount

サーバー・インスタンスが正常に起動するまでの起動試行回数

Instancename

サーバー・インスタンスの名前(server1など)

Compname

サーバー・コンポーネントの名前(OID1など)

ノート:

  • Instance、Instancename、Compname、ServerIDおよびHostnameには一意性制約があります。

  • ここでは、情報を示す目的のみでODS_PROCESS_STATUSの詳細を説明しています。この表を直接変更しないようにしてください。

4.3 Oracle Internet Directoryのプロセスの起動、停止およびモニタリング

ノード・マネージャによるOracle Internet Directoryの起動時および停止時に発生するイベントについて説明します。また、プロセスのモニタリングについても説明します。

この項では、次の項目について説明します。

4.3.1 WLSTコマンドを使用したOracle Internet Directoryの起動

WebLogic Scripting Tool (WLST)コマンドを使用したOracle Internet Directoryの起動プロセスについて説明します。

Oracle Internet Directoryを起動するには、次の特定の手順に従います。

  1. Oracle Enterprise Manager Fusion Middleware ControlまたはWLSTコマンドstart()を使用してOracle Internet Directoryインスタンスを起動します。
  2. ノード・マネージャが、適切な引数を使用してoidmon startコマンドを発行します。
  3. 次に、OIDMONは、ODS_PROCESS_STATUS表のstate値が1または4で、かつノード・マネージャによって設定されている環境パラメータとDOMAIN_HOME、COMPONENT_NAME、INSTANCE_NAME値が一致する、すべてのOracle Internet Directoryサーバー・インスタンスを起動します。

4.3.2 WLSTコマンドを使用したOracle Internet Directoryの停止 — shutdown ()

WebLogic Scripting Tool (WLST)コマンドを使用してOracle Internet Directoryを停止するプロセスおよび前提条件について説明します。

ノート:

  • shutdown()コマンドを実行する前に、必ずconnectコマンドを使用してWebLogic Serverに接続します。

    WebLogic管理サーバーに接続するための構文は次のとおりです。

    connect(username='weblogic',password='weblogic-password',url='t3://admin-server-host:admin-server-port')
  • Oracle Internet Directoryインスタンスを停止するマシン上で、ノード・マネージャが稼働していることを確認します。

  • または、stopComponent.shコマンドを使用してOracle Internet Directoryインスタンスを停止できます。stopComponent.shコマンドを実行する前に、ノード・マネージャが稼働していることを確認します。stopComponent.shコマンドを実行するためにWebLogic Serverに接続する必要はありません。stopComponent.shの構文は次のとおりです。

    $DOMAIN_HOME/bin/stopComponent.sh <instance-name>

Oracle Internet Directoryインスタンスを停止するには、次のように入力します。

shutdown(name='instance-name',type='OID'))

4.3.3 ノード・マネージャを使用したサーバー・プロセスのモニタリング

ノード・マネージャは、サーバー・プロセスを直接モニターしません。ノード・マネージャはOIDMONをモニターし、OIDMONはサーバー・プロセスをモニターします。

プロセスは次のとおりです。

  • ノード・マネージャを使用してOIDMONを起動すると、ノード・マネージャはOIDMONを起動し、OIDMONが稼働中であることを確認します。

  • なんらかの理由でOIDMONが停止すると、ノード・マネージャによって再起動されます。

  • OIDMONは、Oracle Internet Directoryディスパッチャ・プロセス、LDAPサーバー・プロセスおよびレプリケーション・サーバー・プロセスのステータスをモニターし、このステータスをノード・マネージャとFusion Middleware Controlで使用できるようにします。

4.4 Oracle Internet Directoryレプリケーション・サーバーの制御およびフェイルオーバー

最大可用性アーキテクチャ(MAA)でのOracle Internet Directoryレプリケーション・サーバー(oidrepld)のプロセス制御およびフェイルオーバーについて説明します。

この項では、次の項目について説明します。

4.4.1 OIDモニターおよびレプリケーション・サーバー・フェイルオーバーの理解

各ノードで、OIDモニター・プロセス(oidmon)の直接的な起動、停止、再起動およびモニタリングを担当するのは、ノード・マネージャです。その後は、OIDモニターが、LDAPサーバー・プロセスやレプリケーション・サーバー(oidrepld)・プロセス(レプリケーションがインスタンス用に構成されている場合)などのOracle Internet Directoryコンポーネントのプロセス制御を担当します。

最大可用性アーキテクチャ(MAA)では、これらのプロセスが次のように実行されます。

  • 複数のOIDモニター・プロセスを1つのノードで実行可能で、同じOracle Databaseに接続できます。各OIDモニターは、oid1やoid2などのOracle Internet Directoryコンポーネントを担当します。ただし、高可用性操作を実行するOIDモニターは、1つのみです。

  • レプリケーションが構成されている場合、レプリケーション・サーバー・プロセスは、常に1つのノードでのみ実行される必要があります。

60秒ごとに、OIDモニターは、Oracle Databaseにメッセージを送信して稼働中であることをレポートします。また、OIDモニターは、他のいずれかのノードが停止していないかどうかを判断するため、データベースをポーリングします。OIDモニターは、ODS_PROCESS_STATUS表とODS_SHM表を使用して、ノード全体でプロセスの起動と停止およびメタデータの変更を伝達します。

レプリケーション・サーバーが実行されているノードで、OIDモニターは、応答のないレプリケーション・サーバーを検出し、その再起動を試みます。再起動に失敗すると、レプリケーション・サーバーは、次のロジックを使用して存続ノードの1つで起動されます。

  • プル・ロジック: OIDモニターは、別のノードで別のOIDモニターが構成済の時間(orclfailoverenabled属性で指定)を超えて停止していることを検出すると、そのノードに障害が発生したものとして扱い、そのノードでレプリケーション・サーバーを起動します。

  • プッシュ・ロジック: ノード上のローカルOIDモニターは、他のノード上のOIDモニターにプロセスを起動するようにリクエストして、障害レプリケーション・サーバーを別のノードにプッシュできます。OIDモニターは、別のノード上のレプリケーション・サーバー・プロセスを起動することはできません。

その後、障害ノードが元に戻り、OIDモニターがそのノードで再起動されると、OIDモニターは、別のノードがレプリケーション・サーバーを実行していることを検出します。次に、OIDモニターは、他のノード上のOIDモニターにレプリケーション・サーバーを停止するようにリクエストして、元のノードでレプリケーション・サーバーを起動します。

4.4.2 Oracle Internet Directoryプロセスのフェイルオーバーの有効化

orclfailoverenabled属性は、Oracle Internet Directoryプロセスのフェイルオーバーを構成する構成エントリ("cn=configset,cn=oidmon,cn=subconfigsubentry")です。

この属性は、OIDモニターが存続ノードで失敗したプロセスを開始するまでのフェイルオーバー時間を分数で指定します。デフォルトのフェイルオーバー時間は5分です。ゼロ(0)の値は、Oracle Internet Directoryプロセスを別のノードにフェイルオーバーしないことを指定します。

たとえば、ノードBのOIDモニターが、orclfailoverenabledによって指定された時間を経過してもノードAが応答しないことを検出すると、ノードBはノードAに障害が発生したとみなします。次に、ノードBは、ノードAで実行されていたOracle Internet Directoryプロセスに関する必要な情報をOracle Databaseから取得し、ノードBでそれらを起動しようと試みます。

現在のフェイルオーバー時間をorclfailoverenabled属性で確認するには:

ldapsearch -h oid_host  p oid_port -D "cn=orcladmin" -q -s base \
-b "cn=configset,cn=oidmon,cn=subconfigsubentry" objectclass=* orclfailoverenabled

別のフェイルオーバー時間を指定するには、orclfailoverenabled属性の値を設定します。たとえば、フェイルオーバー時間を10分に設定するには、次のようにします。

ldapmodify -h oid_host  p oid_port -D "cn=orcladmin" -q -f enablerepl.ldif

enablerepl.ldifには、次の内容が含まれています。

dn: cn=configset,cn=oidmon,cn=subconfigsubentry
changetype: modify
replace: orclfailoverenabled
orclfailoverenabled: 10

4.5 Oracle Internet Directoryプロセス制御: ベスト・プラクティス

wlstおよびoidctlの使用方法のベスト・プラクティスについて学習します。

推奨される方法は次のとおりです。

  • wlstを使用して、Oracle Internet Directoryをコンポーネントとして停止または起動します。つまり、このコマンドを使用して、すべてのOracle Internet Directory LDAPおよびレプリケーション・サーバー・インスタンスを停止または起動します。

    • stopComponent.shを使用してOracle Internet Directoryを停止すると、ノード・マネージャによってoidmon stopが発行されます。この結果、OIDMONにより、構成されているすべてのLDAPおよびレプリケーション・サーバー・インスタンスが停止されます。

    • startComponent.shを使用してOracle Internet Directoryを起動すると、ノード・マネージャによってoidmon startが発行されます。この結果、OIDMONにより、構成されているすべてのLDAPおよびレプリケーション・サーバー・インスタンスが起動されます。

    関連項目:

  • 関連付けられているOIDMONとOIDMONによって管理されているLDAPサーバー・インスタンスに影響を与えずにOracle Internet Directoryレプリケーション・サーバー・インスタンスを停止および起動するには、oidctlを使用します。

    関連項目: