4 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つのコンポーネントとして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
で指定された設定に関係なくログ・ファイルのサイズが1
MBを越えて増加した場合、Oracle Internet Directoryの再起動後に、OIDモニター(OIDMON)およびOIDDISPD (ディスパッチャ)ログ・ファイルがローテーションされます。
図4-1 Oracle Internet Directoryのプロセス制御アーキテクチャ
![Oracle Internet Directoryのプロセス制御アーキテクチャ Oracle Internet Directoryのプロセス制御アーキテクチャ](img/oid_process_control1.gif)
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を起動するには、次の特定の手順に従います。
- Oracle Enterprise Manager Fusion Middleware ControlまたはWLSTコマンド
start()
を使用してOracle Internet Directoryインスタンスを起動します。 - ノード・マネージャが、適切な引数を使用して
oidmon start
コマンドを発行します。 - 次に、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およびレプリケーション・サーバー・インスタンスが起動されます。
関連項目:
-
Oracle Internet Directoryの起動と停止の詳細は、「レプリケーションの設定」を参照してください
-
-
関連付けられているOIDMONとOIDMONによって管理されているLDAPサーバー・インスタンスに影響を与えずにOracle Internet Directoryレプリケーション・サーバー・インスタンスを停止および起動するには、
oidctl
を使用します。関連項目:
-
レプリケーション・サーバーの起動と停止の詳細は、「レプリケーションの設定」を参照してください。
-