42 レプリケーション・フェイルオーバーの設定

この章では、Oracle Internet Directoryのフェイルオーバーについて説明し、ステートレス・レプリケーション・フェイルオーバーおよび時間ベース・レプリケーション・フェイルオーバーを実行する方法について説明します。

この章の内容は次のとおりです。

42.1 レプリケーション・フェイルオーバーの概要

10g (10.1.4.0.1)以降、Oracle Internet Directoryでは、1つのサプライヤからもう1つのサプライヤへのLDAPレプリケーションのフェイルオーバーをサポートしています。これには管理者操作が必要です。

次の各項では、レプリケーション・フェイルオーバーについて詳しく説明します。

42.1.1 レプリケーション・フェイルオーバーの使用例

この項では、レプリケーション・フェイルオーバー・シナリオについて説明します。

図42-1に、一般的なフェイルオーバーの使用例を示します。

図42-1 レプリケーション・フェイルオーバーの使用例

テキストで説明します

この使用例には、次の機能があります。

  • Apple、BananaおよびCandyは、同じDRG内のマルチマスター・レプリカです。

  • Damsonは、Bananaの読取り専用ファンアウト・レプリカです。つまり、一方向LDAPレプリケーションを使用した部分レプリカです。

  • Eggplantは、Bananaの更新可能なファンアウト・レプリカです。つまり、双方向LDAPレプリケーションを使用した部分レプリカです。

  • Bananaが停止すると、マルチマスターDRGとそのファンアウト・レプリカ間のレプリケーションは中断されます。

    管理者は、EggplantとDamsonを新しいサプライヤのCandyに切り替えることができます。

42.1.2 サポートされているフェイルオーバー・トポロジのタイプ

この項では、Oracle Internet Directoryでサポートされるフェイルオーバー・トポロジのタイプについて説明します。

フェイルオーバー・トポロジは2つのタイプのみがサポートされています。

  • コンシューマと新規サプライヤは、どちらもLDAPベース・レプリケーションにより旧サプライヤに接続されます。これは、図42-2に示されています。ノード1とノード3はどちらも、ノード2とのLDAPレプリケーション承諾を持っています。ノード2は、ノード1の元のサプライヤです。ノード2が機能しなくなると、ノード1を新規のサプライヤ、ノード3にフェイルオーバーできます。

    図42-2 LDAPにより旧サプライヤに接続されるコンシューマと新規サプライヤ

    テキストで説明します
  • コンシューマは、LDAPベース承諾により旧サプライヤに接続され、旧サプライヤは同じアドバンスト・レプリケーション・グループ内で新規のサプライヤとして機能します。これは、図42-3に示されています。ノード2とノード3は、同じアドバンスト・レプリケーションDRG内にあります。ノード2は、ノード4の元のサプライヤです。ノード4が機能しなくなると、ノード4を新規のサプライヤ、ノード3にフェイルオーバーできます。

    図42-3 同じディレクトリ・レプリケーション・グループ内の新旧のサプライヤ

    テキストで説明します

42.1.3 レプリケーション・フェイルオーバーに関する制限事項と警告

この項では、レプリケーション・フェイルオーバーの使用に関する制限事項と警告について説明します。

  • Oracle Internet Directory 11gリリース1 (11.1.1.0.0)では、レプリケーション・フェイルオーバーには、管理者の操作が必要です。

  • フェイルオーバーの直後に、管理者はコンシューマと新規サプライヤを比較し、調整する必要があります。

  • 新規の承諾は、旧承諾と同じタイプと方向のものであることが必要です。

  • 2つのトポロジ・タイプのみがサポートされています。

  • サプライヤが機能しなくなると、直接接続しているレプリカは、同様にそのサプライヤに接続している別のレプリカに対してのみフェイルオーバーができます。

  • 新規サプライヤと旧サプライヤ間の承諾のレプリケーション・フィルタリング・ポリシーは、旧サプライヤとコンシューマ間の承諾と一致させる必要があります。

  • ほとんどの場合、レプリカは元のレプリカ・タイプを維持する方法でフェイルオーバーする必要があります。図42-4に示した例では、ノード2は、ノード1とノート3の両方にとっての旧サプライヤであり、ノード1は読取り専用です。ノード2が機能しなくなった場合、理論上は、ノード1またはノード3のいずれかを新しいサプライヤ・ノードとして設定できます。しかし、ベスト・プラクティスは、ノード1をフェイルオーバーして、ノード3をサプライヤにすることです。この方法により、ノード1の元の読取り専用レプリカ・タイプが維持されます。

    図42-4 レプリカ・タイプを維持するフェイルオーバー

    テキストで説明します
  • 新規の承諾が双方向承諾の場合、コンシューマをその新しいサプライヤと比較し、調整した後、新しいサプライヤと接続しているその他すべてのレプリカについても、新しいサプライヤと比較し、調整する必要があります。たとえば、図42-5では、ノード2にはノード3との双方向承諾があります。ノード3は、もう1つのレプリカ、ノード4に接続しています。ノード2が機能しなくなると、ノード3とノード1の双方向承諾を設定します。ノード3をノード1と比較、調整した後、ノード4もノード3と比較、調整し、レプリカを確実に同期化します。

    図42-5 接続レプリカすべての比較および調整

    テキストで説明します

42.1.4 レプリケーション・フェイルオーバーのタイプ

この項では、Oracle Internet Directoryでサポートされる2つのレプリケーション・フェイルオーバー・タイプについて説明します。

レプリケーション・フェイルオーバーには2つのタイプがあります。次のタイプです。

  • ステートレス

  • 時間ベース

事前にフェイルオーバーを計画できない場合は、ステートレス・フェイルオーバーを使用します。ステートレス・レプリケーション・フェイルオーバーでは、レプリカの状態について想定は行いません。いつでも新しいサプライヤにフェイルオーバーできます。ステートレス・フェイルオーバーには、フェイルオーバー後、ノードを同期化するためにより多くの作業が必要です。

計画的なフェイルオーバーには、時間ベース・フェイルオーバーを使用します。時間ベース・フェイルオーバーは、フェイルオーバー後の作業が少なくなります。ただし、後続の想定がフェイルオーバー時に必ず当てはまるように、事前に時間を設定する必要があります。

  • ノードは大部分は同期化されます。

  • 新規のサプライヤは、完全な同期化がすぐに実行できるように、変更ログを保存しています。

42.2 ステートレス・レプリケーション・フェイルオーバーの実行

この項では、ステートレス・レプリケーション・フェイルオーバーの実行方法について説明します。

この章は次のタスクで構成されます。

42.2.1 関連ノードでのすべてのディレクトリ・レプリケーション・サーバーの停止

新規サプライヤ、旧サプライヤおよびコンシューマ上のOracleディレクトリ・レプリケーション・サーバーを停止します。

すべてのディレクトリ・レプリケーション・サーバーを停止するには、次のコマンドを実行します。

oidctl connect=connStr server=oidrepld instance=1 componentname=oidComponentName \
 flags="-h LdapHost -p LdapPort" stop

42.2.2 旧レプリケーション承諾の破棄と新規承諾の設定

旧サプライヤとコンシューマ間の古いレプリケーション承諾を破棄し、新規サプライヤとコンシューマ間の新規承諾を設定します。

このタスクは、レプリケーション環境管理ツールを使用して行います。次のように入力します。

remtool -pchgmaster [-v] [-bind consumer_host::port_number]

replication_dn_passwordの入力を要求されます。

関連項目:

『Oracle Identity Managementリファレンス』remtoolコマンド行ツールのリファレンス

42.2.3 最後に適用された変更番号の保存

新規サプライヤから最後に適用された変更番号を取得します。

一方向承諾の場合、次のコマンドを使用します。

ldapsearch -h new_supplier_host -p port_number -b "" \
   -s base "objectclass=*" lastchangenumber

双方向承諾の場合、次のコマンドを使用します。

ldapsearch -h consumer_host -p port_number -b "" \
   -s base "objectclass=*" lastchangenumber

この番号を保存します。

42.2.4 新規サプライヤとコンシューマの比較および調整

Oracle Internet Directory比較調整ツールを使用して、新規サプライヤとコンシューマを比較し、調整します。

一方向承諾の場合は、次のように入力します。

oidcmprec operation=reconcile \
   source=new_supplier_host:port \
   destination=consumer_host:port \
   base='""' scope=sub

双方向承諾の場合は、次のように入力します。

oidcmprec operation=merge \
   source=new_supplier_host:port\
   destination=consumer_host:port/ \
   base='""' scope=sub

ソースと宛先のレプリケーション識別名のパスワードを要求されます。

この例では、ディレクトリ全体がレプリケートされることを想定しており、したがって、baseは" "に設定されています。部分レプリケーションを使用する場合は、base引数とdns2exclude引数をoidcmprecツールに使用して、希望するDITを含めます。

関連項目:

『Oracle Identity Managementリファレンス』oidcmprecコマンド行ツールのリファレンス

42.2.5 新規承諾の最後に適用された変更番号の更新

新規サプライヤ側で、検索の結果見つかった最後に適用された変更番号を使用して、新規の承諾を変更します。

これを行うには:

  1. 「最後に適用された変更番号の保存」で取得した最後の変更番号により、LDIFファイルを作成します。

    一方向承諾の場合、次のようになります。

    dn: agreement_dn
    changetype: modify
    replace: orclLastAppliedChangeNumber;apply$new_supplier_host$consumer_host
     orclLastAppliedChangeNumber;apply$new_supplier_host$consumer_host: 
     last_change_number_retrieved.
    -
    replace: orclLastAppliedChangeNumber;transport$new_supplier_host$consumer_host
    orclLastAppliedChangeNumber;transport$new_supplier_host$consumer_host: 
     last_change_number_retrieved_from_new_supplier
    

    双方向承諾の場合、次のようになります。

    dn: agreement_dn
    changetype: modify
    replace: orclLastAppliedChangeNumber;apply$new_supplier_host$consumer_host
    orclLastAppliedChangeNumber;apply$new_supplier_host$consumer_host: 
     last_change_number_retrieved_from_new_supplier
    -
    replace: orclLastAppliedChangeNumber;transport$new_supplier$consumer
    orclLastAppliedChangeNumber;transport$new_supplier$consumer: 
     last_change_number_retrieved_from_new_supplier	
    -
    replace: orclLastAppliedChangeNumber;apply$consumer_host$new_supplier_host
    orclLastAppliedChangeNumber;apply$consumer_host$new_supplier_host: 
     last_change_number_retrieved_from_consumer	
    -
    replace: orclLastAppliedChangeNumber;transport$consumer_host$new_supplier_host
    orclLastAppliedChangeNumber;transport$consumer_host$new_supplier_host:
     last_change_number_retrieved_from_consumer
    
  2. ldapmodifyを使用して承諾を変更する方法は次のとおりです。
    ldapmodify -D "cn=orcladmin" -q -h host_name -p port_number -f LDIF_file
    

42.2.6 旧サプライヤでの旧承諾のクリーンアップ

この項では、レプリケーション環境管理ツールを使用して、旧サプライヤで旧承諾をクリーンアップする手順について説明します。

「旧レプリケーション承諾の破棄と新規承諾の設定」の実行時に旧サプライヤが停止した場合、旧サプライヤ上の旧承諾はクリーンアップされません。ここで、レプリケーション環境管理ツールを使用して、これをクリーンアップします。次のように入力します。

remtool -pcleanup -agrmt [-v] [-bind consumer_host::port_number]	

replication_dn_passwordの入力を要求されます。

関連項目:

『Oracle Identity Managementリファレンス』remtoolコマンド行ツールのリファレンス

42.2.7 関連ノードでのすべてのディレクトリ・レプリケーション・サーバーの起動

この項では、新規サプライヤ、旧サプライヤおよびコンシューマ上でOracleディレクトリ・レプリケーション・サーバーを起動する手順を示します。

これを行うには、次のように入力します。

oidctl connect=connStr server=oidrepld instance=1 \
   name=instance_name componentname=component_name \
   flags="-h LdapHost -p LdapPort" start

42.3 時間ベース・レプリケーション・フェイルオーバーの実行

この項では、時間ベース・レプリケーション・フェイルオーバーの実行方法について説明します。

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

42.3.1 新規サプライヤでの変更ログ・ガベージ・コレクション・オブジェクトの構成

新規サプライヤ上で、希望する期間の変更ログを保存するように変更ログ・パージ構成エントリを構成します。

たとえば、24時間の場合は次のようになります。

  1. 次のようなLDIFファイルを作成します。
    dn: cn=changelog purgeconfig,cn=purgeconfig,cn=subconfigsubentry
    changetype:modify
    replace: orclpurgetargetage
    orclpurgetargetage: 24
    
  2. LDIFファイルを適用するために、次のように入力します。
    ldapmodify -D "cn=orcladmin" -q -p port -h host -f LDIF_file
    

42.3.2 新規サプライヤの最後に適用された変更番号の保存

新規サプライヤから最後に適用された変更番号を取得します。

次のコマンドを入力します。

ldapsearch -h new_supplier_host -p port_number -D cn=orcladmin -q \
   -b "" -s base "objectclass=*" lastchangenumber

この番号を保存します。

42.3.3 新規サプライヤでの変更ログ再生成の有効化

新規サプライヤで変更ログ再生成を、次のようにして有効化します。

  1. 次のようなLDIFファイルを作成します。
    dn: 
    changetype: modify
    replace: orcldiprepository
    orcldiprepository: TRUE
    
  2. LDIFファイルを適用するために、次のように入力します。
    ldapmodify -D "cn=orcladmin" -q -h host_name -p port_number -f LDIF_file

42.3.4 希望する期間が経過するまで待機

変更ログ・パージ構成エントリのorclpurgetargetageの値未満の期間を待機します。

変更ログ・パージ構成エントリのorclpurgetargetageの値未満の期間を待機します。

42.3.5 関連ノードでのすべてのディレクトリ・レプリケーション・サーバーの停止

新規サプライヤ、旧サプライヤおよびコンシューマ上のOracleディレクトリ・レプリケーション・サーバーを停止します。

次のコマンドを入力します。

oidctl connect=connStr server=oidrepld instance=1 \
 componentname=oidComponentName \
 flags="-h LdapHost -p LdapPort" stop

42.3.6 旧レプリケーション承諾の破棄と新規承諾の設定

旧サプライヤとコンシューマ間の古いレプリケーション承諾を破棄し、新規サプライヤとコンシューマ間の新規承諾を設定します。

このタスクは、レプリケーション環境管理ツールを次のように使用して行います。

remtool -pchgmaster [-v] [-bind hostname:port_number]

replication_dn_passwordの入力を要求されます。

関連項目:

『Oracle Identity Managementリファレンス』remtoolコマンド行ツールのリファレンス

42.3.7 新規承諾の最後に適用された変更番号の更新

この項では、新規サプライヤで新規承諾を変更する手順について説明します。

新規サプライヤで、最後に適用された変更番号が、「新規サプライヤの最後に適用された変更番号の保存」で取得した値になるように、次のように新規承諾を変更します。

  1. 取得した最後に適用された変更番号を使用して、次のようなLDIFファイルを作成します。
    dn: agreement_dn
    changetype: modify
    replace: orclLastAppliedChangeNumber
    orclLastAppliedChangeNumber: last_change_number_retrieved
    
  2. ldapmodifyを使用して、LDIFファイルを承諾に適用します。
    ldapmodify -D "cn=orcladmin" -q -h host_name -p port_number -f LDIF_file
    

42.3.8 旧サプライヤでの旧承諾のクリーンアップ

レプリケーション環境管理ツールを使用して、旧サプライヤ・ノードで旧承諾をクリーンアップできます。

「旧レプリケーション承諾の破棄と新規承諾の設定」の実行時に旧サプライヤが停止した場合、旧サプライヤ上の旧承諾はクリーンアップされません。ここで、レプリケーション環境管理ツールを使用して、これをクリーンアップします。次のように入力します。

remtool -pcleanup -agrmt [-v] [-bind hostname:port_number]

replication_dn_passwordの入力を要求されます。

関連項目:

『Oracle Identity Managementリファレンス』remtoolコマンド行ツールのリファレンス

42.3.9 関連ノードでのすべてのディレクトリ・レプリケーション・サーバーの起動

この項では、新規サプライヤ、旧サプライヤおよびコンシューマ上でOracleディレクトリ・レプリケーション・サーバーを起動する手順を示します。

次のコマンドを入力します。

oidctl connect=connStr server=oidrepld instance=1  \
 componentname=oidComponentName \
 flags="-h LdapHost -p LdapPort" start

関連項目: