A.16 ローリング・アップグレードの実行

この付録では、現在の環境にディレクトリ・レプリケーション・グループ(DRG)が構成されている場合に、Oracle Internet Directoryのローリング・アップグレードを実行する方法について説明します。内容は次のとおりです。

A.16.1 ローリング・アップグレードについて

DRGのOracleホーム・ディレクトリをアップグレードするには、DRGのすべてのレプリケーション・サーバーを停止し、各Oracleホームをそれぞれ最新バージョンにアップグレードする必要があります。レプリケーション・サーバーを停止しないと、Oracleホーム・ディレクトリをアップグレードするときに問題が発生する可能性があります。

このアップグレード・プロセスによる停止時間およびサービスの喪失を回避するには、ローリング・アップグレードの手順に従って、他のOracle Internet DirectoryノードおよびDRG内の対応するレプリケーション・サーバーが稼働したままの状態で、各Oracleホーム・ディレクトリを個別にアップグレードすることをお薦めします。

A.16.2 ローリング・アップグレードの前提条件

アップグレードは、Oracle Internet Directory 11gリリース1 (11.1.1.9.0)でのみサポートされています。

A.16.3 ローリング・アップグレードの実行

この項では、ローリング・アップグレードを実行する手順について説明します。

Oracle Internet Directory DRGをアップグレードするには:

  1. アップグレードする最初のノード上のレプリケーション・サーバーを停止します。
  2. 最初のノードから他の各ノードへのレプリケーションを次のように一時停止します。
    remtool -psuspendrepl -fromnode first_node_host:first_node_port
    

    このコマンドは、すべてのOracle Internet DirectoryノードのレプリカIDおよびそれらの各ディレクトリ・バージョン番号をリストします。要求されたとおりに他の各ノードのレプリカIDを指定するか、または他のすべてのノードへのレプリケーションを一時停止するallを入力します。

    『Oracle Fusion Middleware Oracle Identity Managementリファレンス』remtoolを参照してください。

  3. DRGの最初のノードから他のすべてのノードへのレプリケーションが一時停止されたことを検証するには、次のldapsearchコマンドを実行します。
    ldapsearch -h first_node_host -p OID_port  -b "" -s base "(objectclass=orclReplAgreementEntry)" orcllastappliedchangenumber
    

    最初のノードから他のノードへのorcllastappliedchangenumberをサブタイプ・ステータスで探します。この値は0で、次の形式となります。

    orcllastappliedchangenumber;status$replica_id_of_first_node$replica_id_of_other_node;transport
    

    および

    orcllastappliedchangenumber;apply;status$replica_id_of_first_node$replica_id_of_other_node
    

    矛盾がある場合は、ステップ2を繰り返します。

  4. アップグレードしようとしているノード上でOracle Internet Directoryを停止します。
  5. 『Oracle Fusion Middlewareパッチ適用ガイド』Oracle Fusion Middlewareのパッチ適用およびアップグレードの概要に関する項の説明に従って、ノードにパッチを適用して現在のリリースに移行します。
  6. アップグレードしたばかりのノード上でOracle Internet Directoryを起動します。
  7. 他のノードはまだアップグレードされていないため、最初のノードと他のノードとの間のレプリケーションは再開しないでください。
  8. アップグレードする2番目のノードでレプリケーション・サーバーを停止します。
  9. 2番目のノードから、まだアップグレードされていない各ノードへのレプリケーションは一時停止します。
    remtool -psuspendrepl -fromnode second_node_host:second_node_port
    

    このコマンドは、すべてのOracle Internet DirectoryノードのレプリカIDおよびそれらの各ディレクトリ・バージョン番号をリストします。まだアップグレードされていない他の各ノードのレプリカIDを指定する必要があります。

  10. ステップ3と同じコマンドを2番目のノードに使用して、アップグレードしようとしているノードから、まだアップグレードされていないその他の各ノードへのレプリケーションが一時停止されていることを検証します。
  11. アップグレードしようとしているノード上でOracle Internet Directoryを停止します。
  12. 『Oracle Fusion Middlewareパッチ適用ガイド』Oracle Fusion Middlewareのパッチ適用およびアップグレードの概要に関する項の説明に従って、ノードにパッチを適用して現在のリリースに移行します。
  13. アップグレードしたばかりのノード上でOracle Internet Directoryを起動します。
  14. これで、2つのノードがアップグレードされたため、最初のアップグレード済ノードから2番目のアップグレード済ノードへのレプリケーションを再開します。
    remtool -presumerepl -fromnode  first_upgraded_replica_host:port -tonode second_upgraded_replica_host:port
    
  15. 次のldapsearchコマンドを実行して、DRGの最初のアップグレード済ノードから2番目のアップグレード済ノードへのレプリケーションが再開されたことを検証します。
    ldapsearch -p OID_port -h first_upgraded_OID_host -b "" -s sub "(objectclass=orclReplAgreementEntry)" orcllastappliedchangenumber
    

    最初のアップグレード済Oracle Internet Directoryノードから2番目のアップグレード済ノードへのorcllastappliedchangenumberをサブタイプ・ステータスで探します。値は1となっているはずです。

    このldapsearchコマンドを、以前アップグレードした他のすべてのノードに対して繰り返します。矛盾がある場合は、ステップ14を繰り返します。

  16. 2番目のアップグレード済レプリカでレプリケーション・サーバーを起動します。
  17. アップグレードする3番目のノードでレプリケーション・サーバーを停止します。
  18. 3番目のノードから、まだアップグレードされていない各ノード'(ある場合)へのレプリケーションを一時停止します。
  19. 3番目のノードから、まだアップグレードされていない各ノードへのレプリケーションが一時停止されたことを検証します。
  20. アップグレードする3番目のノード上でOracle Internet Directoryおよびその他のプロセスを停止します。
  21. 『Oracle Fusion Middlewareパッチ適用ガイド』Oracle Fusion Middlewareのパッチ適用およびアップグレードの概要に関する項の説明に従って、ノードにパッチを適用して現在のリリースに移行します。
  22. 3番目のノードでOracle Internet Directoryを起動します。
  23. すでにアップグレードした各ノードから3番目のノードへのレプリケーションを再開します。
  24. 各アップグレード済ノードから3番目のノードへのレプリケーションが再開されたことを検証します。
  25. 3番目のノードでレプリケーションを開始します。

DRGのすべてのノードに対してこの手順を繰り返します。

ノードをアップグレードする前に、そのノードから、まだアップグレードされていない各ノード'へのレプリケーションを一時停止し、一時停止されていることを検証します。アップグレードしようとしているノード上でOracle Internet Directoryを停止します。ノードをアップグレードします。アップグレードしたばかりノードでOracle Internet Directoryを起動します。すでにアップグレードしたノードから、アップグレードしたばかりのノードへのレプリケーションを再開します。アップグレードしたばかりノードでレプリケーションを開始します。

A.16.4 アップグレード後のタスクの実行

ローリング・アップグレードの実行後にDRG内のノードに一貫性のないデータが残されることを回避するため、Oracle Internet Directoryでは次の操作が実行されます。

ローリング・アップグレードの実行後にDRG内のノードに一貫性のないデータが残されることを回避するため、Oracle Internet Directoryでは次の操作が実行されます。

  1. 着信LDAP更新リクエストを処理するOracle Internet Directoryマスター・ノードで、更新リクエストごとに変更ログ・エントリが生成されます。マスター・ノードは、DRGのどのノードでもかまいません(「ローリング・アップグレードの例」のノードA、BまたはC)。
  2. DRG内のノードがローリング・アップグレード操作の完了後に元どおり稼働するかぎり、LDAPリクエストの着信時にノードが停止しているか、アップグレード中であるかにかかわらず、後続の変更はDRG内の他のすべてのノードに適用されます。

    変更がターゲット・ノードに適用されると、適切な競合解消ロジックによって収束が保証されます。再試行ロジック(デフォルトではサイクル遅延付きで10回)によって、ターゲット・ノードの停止時などに、一時的な競合状態が処理されます。

A.16.5 ローリング・アップグレードの例

次の例には、マルチマスターDRGに3つのOracle Internet DirectoryノードA、B、Cが含まれます。ローリング・アップグレードの手順を使用して、すべてのノードを現在のリリースにアップグレードする必要があります

この例では、最初にノードAを、次にノードB、ノードCの順にアップグレードします。

ノート:

ローリング・アップグレードの手順を開始する前に、「ローリング・アップグレードの前提条件」の説明に従って、必要なパッチを適用します。

ノードをアップグレードするには:

  1. ノードAでレプリケーション・サーバーを停止します。
  2. ノードAからノードBとノードC両方へのレプリケーションを一時停止します。たとえば:
    remtool -psuspendrepl  -fromnode  HostA:PortA
    

    このコマンドは、3つすべてのOracle Internet DirectoryノードのレプリカIDを表示します。ノードBのレプリカIDをremtoolへの入力として指定します。または、allを入力して、remtoolでBおよびCのレプリカIDが自動的に選択されるようにすることもできます。

  3. 次のldapsearchコマンドを実行して、ノードAからノードBへのレプリケーションが一時停止されていることを検証します。
    ldapsearch -p  PortA  -h  hostA  -b  "" -s  base "(objectclass=orclReplAgreementEntry)" orcllastappliedchangenumber
    

    サブタイプstatusorcllastappliedchangenumber属性を探します。この属性の値は0で、次の形式となります。

    orcllastappliedchangenumber;apply;status$replica_id_of_node A$replica_id_of_node_B
    orcllastappliedchangenumber:status$replicaid_of_node_A$replicaid_of_nodeB;transport
    

    このステータス値に矛盾がある場合は、ステップ2を繰り返します。

    同様に、ノードAからノードCへのレプリケーションが一時停止されていることを検証します。

  4. ノードAでOracle Internet Directoryおよびその他のプロセスを停止します。
  5. ノードAでパッチセット・アシスタント(PSA)を実行してノードを現在のリリースにアップグレードします。
  6. ノードAでOracle Internet Directoryとレプリケーション・サーバーを起動します。ノードAがレプリケーションを再開する必要があるノードはないことに注意してください。
  7. ノードBでレプリケーション・サーバーを停止します。
  8. 次のコマンドを実行して、ノードBからノードCへのレプリケーションを一時停止します。
    remtool -psuspendrepl -fromnode HostB:PortB -tonode HostC:PortC
    
  9. 次のldapsearchコマンドを実行して、ノードBからノードCへのレプリケーションが一時停止されていることを検証します。
    ldapsearch -p  PortB  -h  hostB  -b  "" -s  base "(objectclass=orclReplAgreementEntry)" orcllastappliedchangenumber
    

    サブタイプstatusorcllastappliedchangenumberを探します。値が0で、次の形式となっているはずです。

    orcllastappliedchangenumber;apply;status$replica_id_of_node_B$replica_id_of_node_C
    orcllastappliedchangenumber:status$replicaid_of_node_B$replicaid_of_node_C;transport
    

    このステータス値に矛盾がある場合は、ステップ8を繰り返します。

  10. ノードBでOracle Internet Directoryおよびその他のプロセスを停止します。
  11. ノードBでPSAを実行してノードを現在のリリースにアップグレードします。
  12. ノードBのOracle Internet Directoryを起動して、次のようにノードAからノードBへのレプリケーションを再開します。
     remtool -presumerepl -fromnode HostA:PortA -tonode HostB:PortB
    
  13. 次のldapsearchコマンドを実行して、ノードAからノードBへのレプリケーションが再開されたことを検証します。
    ldapsearch -p OID_port -h hostA -b "" -s base "(objectclass= orclReplAgreementEntry)" orcllastappliedchangenumber
    

    アップグレード済ノードAからノードBへのorcllastappliedchangenumberをサブタイプstatusで探します。値は1となっているはずです。

    このステータス値に矛盾がある場合は、ステップ12を繰り返します。

  14. ノードBでレプリケーション・サーバーを起動します。
  15. ノードCでレプリケーション・サーバーを停止します。
  16. ノードCでOracle Internet Directoryおよびその他のプロセスを停止します。他にアップグレードするノードはないため、レプリケーションを一時停止する必要はありません。
  17. ノードCでPSAを実行してノードを現在のリリースにアップグレードします。
  18. ノードCのOracle Internet Directoryを起動して、次のようにノードAからノードCへのレプリケーションを再開します。
    remtool -presumerepl -fromnode HostA:PortA -tonode HostC:PortC
    

    ノードBからノードCへのレプリケーションを再開します。

    remtool -presumerepl -fromnode HostB:PortB -tonode HostC:PortC
    
  19. ステップ13と同様に、ノードAとノードBでldapsearchを実行して、レプリケーションが正常に再開されたことを検証します。次のレプリケーションを検証します。
    • ノードAからノードC

    • ノードBからノードC

  20. ノードCでレプリケーション・サーバーを起動します。