この章では、LDAPサーバーおよびレプリケーション・サーバー・プロセスに関するOracle Internet Directoryのプロセス制御アーキテクチャと関連概念について説明します。ここには、Oracle Internet Directoryプロセスの起動、停止およびモニタリングと、プロセス制御のいくつかのベスト・プラクティスが含まれます。
この章の内容は次のとおりです。
Oracle Internet Directoryサーバー・インスタンスの作成および破棄の詳細は、第8章「Oracle Internet Directoryインスタンスの管理」を参照してください。
Oracle Directory Integration and Provisioningサーバーの起動および停止の詳細は、『Oracle Fusion Middleware Oracle Directory Integration Platform管理者ガイド』の「Oracle Directory Integration and Provisioningサーバーの管理」の章を参照してください。
Oracle Process Manager and Notification Server (OPMN)は、Oracle Internet Directoryを含むOracle Fusion Middlewareシステム・コンポーネントをモニターするデーモン・プロセスです。Oracle Enterprise Manager Fusion Middleware ControlではOPMNを使用して、Oracle Internet Directoryのインスタンスを起動または停止します。コマンド行からOracle Internet Directoryコンポーネントを起動または停止する場合、OPMNへのコマンド行インタフェースであるopmnctl
を使用します
関連項目:
|
OPMNは、デーモン・プロセス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コンポーネントごとに、OPMNにより、OIDMONプロセスが生成されます。この図は、2つのコンポーネントとしてoid1
とoid2
を示しています。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 (ディスパッチャ)ログ・ファイルがローテーションされます。 |
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など) |
注意:
|
この項では、OPMNによるOracle Internet Directoryの起動時および停止時に発生するイベントについて説明します。また、プロセスのモニタリングについても説明します。この項では、次の項目について説明します。
OPMNはOIDMONを起動するときに、OPMN構成ファイルORACLE_INSTANCE
/config/OPMN/opmn/opmn.xml
のOracle Internet Directoryスニペットに基づいて、使用する引数を決定します。次に、Oracle Internet Directoryスニペットの例を示します。
<ias-component id="<componentName>">
<process-type id="OID" module-id="OID">
<process-set id="OID" numprocs="1">
<environment>
<variable id="TNS_ADMIN" value="ORACLE_INSTANCE/config" />
<variable id="DB_CONNECT_STR" value="db_alias" />
</environment>
<module-data>
<category id="oidmon-parameters">
<data id="start-cmdline-opts" value="connect=$DB_CONNECT_STR start"/>
<data id="stop-cmdline-opts" value="connect=$DB_CONNECT_STR stop"/>
</category>
</module-data>
</process-set>
</process-type>
</ias-component>
次の2つのタグはOracle Internet Directoryに固有のものです。
OPMN用のOracle Internet Directoryコンポーネント固有のディレクティブは、タグ<ias-component id="OID" status="enabled>
の下にあります。
OIDMON関連の要件は、タグ<category id="oidmon parameters">
の下にあります。このようなディレクティブは1つのみである必要があります。
Oracle Internet Directoryは、次のように起動されます。
Oracle Enterprise Manager Fusion Middleware Controlまたはコマンドopmnctl
を使用してOracle Internet Directoryインスタンスを起動します。
OPMNは、opmn.xml
内のOIDスニペットのoidmon parameters
で指定されている適切な引数を付けたoidmon start
コマンドを発行します。
次に、OIDMONは、ODS_PROCESS_STATUS表のstate
値が1または4であり、OPMNによって設定されている環境パラメータとORACLE_INSTANCE、COMPONENT_NAME、INSTANCE_NAME
値が合致するすべてのOracle Internet Directoryサーバー・インスタンスを起動します。
注意: opmnctl を使用してOracle Internet Directoryインスタンスのみを起動する場合、opmn.xml パラメータは、opmnctl startall を使用するときと同じ状態ではリロードされません。ファイルORACLE_INSTANCE /config/OPMN/opmn/opmn.xml の変更をリロードするには、opmnctl reload を実行します。 |
Oracle Internet Directoryは、次のように停止されます。
Oracle Enterprise Manager Fusion Middleware Controlまたはopmnctl
を使用してOracle Internet Directoryインスタンスを停止します。
OPMNはoidmon stop
コマンドを発行します。
環境パラメータORACLE_INSTANCE、COMPONENT_NAMEおよびINSTANCE_NAMEと合致するODS_PROCESS_STATUS表の行ごとに、oidmon
stop
コマンドは、OIDMON、OIDLDAPDおよびOIDREPLDプロセスを中断し、状態を4に更新します。
注意: opmnctl を使用してOracle Internet Directoryインスタンスのみを起動する場合、opmn.xml パラメータは、opmnctl startall を使用するときと同じ状態ではリロードされません。ファイルORACLE_INSTANCE/config/OPMN/opmn/opmn.xml の変更をリロードするには、opmnctl reload を実行します。 |
OPMNは、サーバー・プロセスを直接モニターしません。OPMNはOIDMONをモニターし、OIDMONはサーバー・プロセスをモニターします。プロセスは次のとおりです。
OPMNを介してOIDMONを起動すると、OPMNはOIDMONを起動し、OIDMONが稼働中であることを確認します。
なんらかの理由でOIDMONが停止した場合、OPMNはOIDMONを稼働状態に戻します。
OIDMONは、Oracle Internet Directoryディスパッチャ・プロセス、LDAPサーバー・プロセス、およびレプリケーション・サーバー・プロセスのステータスをモニターし、このステータスをOPMNとFusion Middleware Controlで使用できるようにします。OIDMONがOPMNに情報を送信するため、opmnctl
status
コマンドはOIDLDAPDプロセスPIDを示すことができます。
この項では、最大可用性アーキテクチャ(MAA)でのOracle Internet Directoryレプリケーション・サーバー(oidrepld)の次のようなプロセス制御およびフェイルオーバーについて説明します。
各ノードで、OIDモニター・プロセス(oidmon)の直接的な起動、停止、再起動およびモニタリングを担当するのは、Oracle Process Manager and Notification Server (OPMN)です。その後は、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モニターにレプリケーション・サーバーを停止するようにリクエストして、元のノードでレプリケーション・サーバーを起動します。
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
opmnctl
およびoidctl
の使用に関してお薦めする方法は、次のとおりです。
opmnctl
を使用して、Oracle Internet Directoryをコンポーネントとして停止または起動します。つまり、このコマンドを使用して、すべてのOracle Internet Directory LDAPおよびレプリケーション・サーバー・インスタンスを停止または起動します。
opmnctl
を使用してOracle Internet Directoryを停止すると、OPMNによってoidmon stop
が発行されます。この結果、OIDMONにより、構成されているすべてのLDAPおよびレプリケーション・サーバー・インスタンスが停止されます。
opmnctl
を使用してOracle Internet Directoryを起動すると、OPMNによってoidmon start
が発行されます。この結果、OIDMONにより、構成されているすべてのLDAPおよびレプリケーション・サーバー・インスタンスが起動されます。
関連付けられているOIDMONとOIDMONによって管理されているLDAPサーバー・インスタンスに影響を与えずにOracle Internet Directoryレプリケーション・サーバー・インスタンスを停止および起動するには、oidctl
を使用します。