レプリケーションの設定および管理


Red Hat Directory Server 12

他の Directory Server インスタンスへのデータの複製

Red Hat Customer Content Services

概要

ある Directory Server インスタンスから別の Directory Server インスタンスにデータを自動的に同期するには、単一サプライヤー、マルチサプライヤー、およびカスケードレプリケーションメカニズムを使用できます。レプリケーション変更ログを管理するには、トリミングと暗号化を使用できます。

Red Hat Directory Server に関するフィードバックの提供

Red Hat のドキュメントおよび製品に関するご意見をお待ちしております。ドキュメントの改善点があればお知らせください。改善点を報告する場合は、以下のように行います。

  • Jira を通じて Red Hat Directory Server ドキュメントに関するフィードバックを送信する場合 (アカウントが必要):

    1. Red Hat Issue Tracker にアクセスしてください。
    2. Summary フィールドにわかりやすいタイトルを入力します。
    3. Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
    4. ダイアログの下部にある Create をクリックします。
  • Jira を通じて Red Hat Directory Server 製品に関するフィードバックを送信する場合 (アカウントが必要):

    1. Red Hat Issue Tracker にアクセスしてください。
    2. Create Issue ページで、Next をクリックします。
    3. Summary フィールドに入力します。
    4. Component フィールドでコンポーネントを選択します。
    5. Description フィールドに以下の内容を入力します。

      1. 選択したコンポーネントのバージョン番号。
      2. 問題を再現するための手順、または改善のための提案。
    6. Create をクリックします。

第1章 コマンドラインを使用した単一サプライヤーレプリケーションの設定

単一サプライヤーレプリケーション環境では、1 つの書き込み可能なサプライヤーが、データを 1 つまたは複数の読み取り専用のコンシューマーに複製します。たとえば、接尾辞が多数の検索要求を受け取るが、書き込み要求数が少ない場合などに、単一サプライヤーレプリケーションを設定します。負荷を分散するために、クライアントは読み取り専用のコンシューマーで接尾辞を検索し、書き込み要求をサプライヤーに送信します。

本セクションでは、既存の Directory Server インスタンスが supplier.example.com という名前のホストで実行されていることを前提としています。このホストは、レプリケーショントポロジーに設定されるサプライヤーとして機能します。手順では、consumer.example.com という名前の読み取り専用コンシューマーをトポロジーに追加する方法と、dc=example,dc=com 接尾辞に単一サプライヤーレプリケーションを設定する方法を説明します。

1.1. コマンドラインを使用した新しいコンシューマーの準備

consumer.example.com ホストを準備するには、レプリケーションを有効にします。このプロセスでは、以下を行います。

  • レプリケーショントポロジーでこのサーバーのロールを設定します。
  • レプリケートされる接尾辞を定義します。
  • このホストへの接続にサプライヤーが使用するレプリケーションマネージャーアカウントを作成します。

レプリケーショントポロジーに追加するコンシューマーで、以下の手順を実行します。

前提条件

手順

  • dc=example,dc=com 接尾辞のレプリケーションを有効にします。

    # dsconf -D "cn=Directory Manager" ldap://consumer.example.com replication enable --suffix "dc=example,dc=com" --role "consumer" --bind-dn "cn=replication manager,cn=config" --bind-passwd "password"
    Copy to Clipboard Toggle word wrap

    このコマンドは、consumer.example.com ホストを dc=example,dc=com 接尾辞のコンシューマーとして設定します。また、このコマンドは、指定したパスワードを持つ cn=replication manager,cn=config ユーザーを作成し、このアカウントが接尾辞の変更をこのホストに複製するのを許可します。

検証

  • レプリケーション設定を表示します。

    # dsconf -D "cn=Directory Manager" ldap://consumer.example.com replication get --suffix "dc=example,dc=com"
    dn: cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
    ...
    nsDS5ReplicaBindDN: cn=replication manager,cn=config
    nsDS5ReplicaRoot: dc=example,dc=com
    nsDS5ReplicaType: 2
    ...
    Copy to Clipboard Toggle word wrap

    これらのパラメーターは以下を示しています。

    • nsDS5ReplicaBindDN はレプリケーションマネージャーアカウントを指定します。
    • nsDS5ReplicaRoot は、レプリケートされる接尾辞を設定します。
    • nsDS5ReplicaType2 に設定して、このホストがコンシューマーであることを定義します。

supplier.example.com ホストを準備するには、次のことを行う必要があります。

  • 接尾辞のレプリケーションを有効にします。
  • コンシューマーへのレプリカ合意を作成します。
  • コンシューマーを初期化します。

レプリケーショントポロジーの既存のサプライヤーでこの手順を実行します。

前提条件

  • コンシューマーで dc=example,dc=com 接尾辞のレプリケーションを有効にしている。

手順

  1. dc=example,dc=com 接尾辞のレプリケーションを有効にします。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication enable --suffix "dc=example,dc=com" --role "supplier" --replica-id 1
    Copy to Clipboard Toggle word wrap

    このコマンドは、supplier.example.com ホストを dc=example,dc=com 接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を 1 に設定します。

    重要

    トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は 1 から 65534 の間の一意の整数である必要があります。

  2. レプリカ合意を追加し、コンシューマーを初期化します。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt create --suffix "dc=example,dc=com" --host "consumer.example.com" --port 389 --conn-protocol=LDAP --bind-dn "cn=replication manager,cn=config" --bind-passwd "password" --bind-method=SIMPLE --init example-agreement
    Copy to Clipboard Toggle word wrap

    このコマンドは、example-agreement という名前のレプリカ合意を作成します。レプリカ合意は、コンシューマーのホスト名、プロトコル、このコンシューマーへのデータの接続や複製時にサプライヤーが使用する認証情報などの設定を定義します。

    この合意の作成後、Directory Server は consumer.example.com を初期化します。複製するデータ量によっては、初期化に時間がかかる場合があります。

検証

  1. レプリケーション設定を表示します。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication get --suffix "dc=example,dc=com"
    dn: cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
    ...
    nsDS5ReplicaRoot: dc=example,dc=com
    nsDS5ReplicaType: 3
    ...
    Copy to Clipboard Toggle word wrap

    これらのパラメーターは以下を示しています。

    • nsDS5ReplicaRoot は、レプリケートされる接尾辞を設定します。
    • nsDS5ReplicaType3 に設定して、このホストがサプライヤーであることを定義します。
  2. 初期化が成功したかどうかを確認します。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt init-status --suffix "dc=example,dc=com" example-agreement
    Agreement successfully initialized.
    Copy to Clipboard Toggle word wrap
  3. レプリケーションのステータスを表示します。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt status --suffix "dc=example,dc=com" example-agreement
    Status For Agreement: "example-agreement" (consumer.example.com:389)
    Replica Enabled: on
    Update In Progress: FALSE
    Last Update Start: 20210330075608Z
    Last Update End: 20210330075608Z
    Number Of Changes Sent: 1:3/0
    Number Of Changes Skipped: None
    Last Update Status: Error (0) Replica acquired successfully: Incremental update succeeded
    Last Init Start: 20210330074603Z
    Last Init End: 20210330074606Z
    Last Init Status: Error (0) Total update succeeded
    Reap Active: 0
    Replication Status: Not in Synchronization: supplier (6062d73c000000010000) consumer (Unavailable) State (green) Reason (error (0) replica acquired successfully: incremental update succeeded)
    Replication Lag Time: Unavailable
    Copy to Clipboard Toggle word wrap

    Replication Status フィールドおよび Last Update Status フィールドを確認します。

トラブルシューティング

  1. デフォルトでは、サーバー上のすべての合意に対するレプリケーションアイドルタイムアウトは 1 時間です。タイムアウトが原因で大規模なデータベースの初期化が失敗する場合は、nsslapd-idletimeout パラメーターをより高い値に設定します。たとえば、パラメーターを 7200(2 時間) に設定するには、次のコマンドを実行します。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com config replace nsslapd-idletimeout=7200
    Copy to Clipboard Toggle word wrap

    無制限の期間を設定するには、nsslapd-idletimeout0 に設定します。

第2章 Web コンソールを使用した単一サプライヤーレプリケーションの設定

単一サプライヤーレプリケーション環境では、1 つの書き込み可能なサプライヤーが、データを 1 つまたは複数の読み取り専用のコンシューマーに複製します。たとえば、接尾辞が多数の検索要求を受け取るが、書き込み要求数が少ない場合などに、単一サプライヤーレプリケーションを設定します。負荷を分散するために、クライアントは読み取り専用のコンシューマーで接尾辞を検索し、書き込み要求をサプライヤーに送信します。

本セクションでは、既存の Directory Server インスタンスが supplier.example.com という名前のホストで実行されていることを前提としています。このホストは、レプリケーショントポロジーに設定されるサプライヤーとして機能します。手順では、consumer.example.com という名前の読み取り専用コンシューマーをトポロジーに追加する方法と、dc=example,dc=com 接尾辞に単一サプライヤーレプリケーションを設定する方法を説明します。

2.1. Web コンソールを使用した新しいコンシューマーの準備

consumer.example.com ホストを準備するには、レプリケーションを有効にします。このプロセスでは、以下を行います。

  • レプリケーショントポロジーでこのサーバーのロールを設定します。
  • レプリケートされる接尾辞を定義します。
  • このホストへの接続にサプライヤーが使用するレプリケーションマネージャーアカウントを作成します。

レプリケーショントポロジーに追加するコンシューマーで、以下の手順を実行します。

前提条件

手順

  1. Replication メニューを開きます。
  2. dc=example,dc=com 接尾辞を選択します。
  3. Enable Replication をクリックします。
  4. Replication Role フィールドで Consumer を選択し、作成するレプリケーションマネージャーアカウントおよびパスワードを入力します。

    この設定により、ホストを dc=example,dc=com 接尾辞のコンシューマーとして設定します。さらに、サーバーは指定のパスワードで cn=replication manager,cn=config ユーザーを作成し、このアカウントがこのホストに接尾辞の変更を複製することができます。

  5. Enable Replication をクリックします。

検証

  1. Replication メニューを開きます。
  2. dc=example,dc=com 接尾辞を選択します。
  3. Replica Role フィールドに値 Consumer が含まれている場合、レプリケーションが有効になり、ホストがコンシューマーとして設定されます。

supplier.example.com ホストを準備するには、次のことを行う必要があります。

  • 接尾辞のレプリケーションを有効にします。
  • コンシューマーへのレプリカ合意を作成します。
  • コンシューマーを初期化します。

レプリケーショントポロジーの既存のサプライヤーでこの手順を実行します。

前提条件

  • コンシューマーで dc=example,dc=com 接尾辞のレプリケーションを有効にしている。
  • Web コンソールでインスタンスにログインしている。

手順

  1. Replication メニューを開きます。
  2. dc=example,dc=com 接尾辞を選択します。
  3. レプリケーションを有効にします。

    1. Enable Replication をクリックします。
    2. Replication Role フィールドで Supplier を選択し、レプリカ ID、レプリケーションマネージャーの認証情報を入力して、Bind Group DN フィールドを空のままにします。

      この設定により、ホストを dc=example,dc=com 接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を 1 に設定します。

      重要

      トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は 1 から 65534 の間の一意の整数である必要があります。

    3. Enable Replication をクリックします。
  4. レプリカ合意を追加し、コンシューマーを初期化します。

    1. Agreements タブで、Create Agreement をクリックし、次のフィールドに入力します。

      この設定により、example-agreement という名前のレプリカ合意が作成されます。レプリカ合意は、コンシューマーのホスト名、プロトコル、このコンシューマーへのデータの接続や複製時にサプライヤーが使用する認証情報などの設定を定義します。

    2. Consumer Initialization フィールドで Do Online Initialization を選択し、合意の保存後にコンシューマーを自動的に初期化します。
    3. Save Agreement をクリックします。

      この合意の作成後、Directory Server は consumer.example.com を初期化します。複製するデータ量によっては、初期化に時間がかかる場合があります。

検証

  1. Replication メニューを開きます。
  2. dc=example,dc=com 接尾辞を選択します。
  3. Agreements タブで、テーブルの State 列での契約のステータスを確認。

第3章 コマンドラインを使用したマルチサプライヤーレプリケーションの設定

マルチサプライヤーレプリケーション環境では、2 つ以上の書き込み可能なサプライヤーが互いにデータを複製します。たとえば、マルチサプライヤーレプリケーションを設定してフェイルオーバー環境を提供し、複数のサーバーに負荷を分散します。その後、クライアントは読み取り/書き込みレプリカである任意のホストで読み取り/書き込み操作を実行できます。

本セクションでは、既存の Directory Server インスタンスが supplier1.example.com という名前のホストで実行されていることを前提としています。この手順では、supplier2.example.com という名前の別の読み取り/書き込みレプリカをトポロジーに追加する方法と、dc=example,dc=com 接尾辞のマルチサプライヤーレプリケーションを設定する方法を説明します。

3.1. コマンドラインを使用した新しいサプライヤーの準備

supplier2.example.com ホストを準備するには、レプリケーションを有効にします。このプロセスでは、以下を行います。

  • レプリケーショントポロジーでこのサーバーのロールを設定します。
  • レプリケートされる接尾辞を定義します。
  • このホストへの接続にサプライヤーが使用するレプリケーションマネージャーアカウントを作成します。

レプリケーショントポロジーに追加するサプライヤーで、以下の手順を実行します。

前提条件

手順

  • dc=example,dc=com 接尾辞のレプリケーションを有効にします。

    # dsconf -D "cn=Directory Manager" ldap://supplier2.example.com replication enable --suffix "dc=example,dc=com" --role "supplier" --replica-id 1 --bind-dn "cn=replication manager,cn=config" --bind-passwd "password"
    Copy to Clipboard Toggle word wrap

    このコマンドは、supplier2.example.com ホストを dc=example,dc=com 接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を 1 に設定します。また、このコマンドは、指定したパスワードを持つ cn=replication manager,cn=config ユーザーを作成し、このアカウントが接尾辞の変更をこのホストに複製するのを許可します。

    重要

    トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は 1 から 65534 の間の一意の整数である必要があります。

検証

  • レプリケーション設定を表示します。

    # dsconf -D "cn=Directory Manager" ldap://supplier2.example.com replication get --suffix "dc=example,dc=com"
    dn: cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
    ...
    nsDS5ReplicaBindDN: cn=replication manager,cn=config
    nsDS5ReplicaRoot: dc=example,dc=com
    nsDS5ReplicaType: 3
    ...
    Copy to Clipboard Toggle word wrap

    これらのパラメーターは以下を示しています。

    • nsDS5ReplicaBindDN はレプリケーションマネージャーアカウントを指定します。
    • nsDS5ReplicaRoot は、レプリケートされる接尾辞を設定します。
    • nsDS5ReplicaType3 に設定して、このホストがサプライヤーであることを定義します。

既存のサーバー supplier1.example.com をサプライヤーとして準備するには、次のことを行う必要があります。

  • 接尾辞のレプリケーションを有効にします。
  • 新規サプライヤーへのレプリカ合意を作成します。
  • 新しいサプライヤーを初期化します。

レプリケーショントポロジーの既存のサプライヤーでこの手順を実行します。

前提条件

  • 参加するサプライヤーで dc=example,dc=com 接尾辞のレプリケーションを有効にしている。

手順

  1. dc=example,dc=com 接尾辞のレプリケーションを有効にします。

    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com replication enable --suffix "dc=example,dc=com" --role "supplier" --replica-id 2 --bind-dn "cn=replication manager,cn=config" --bind-passwd "password"
    Copy to Clipboard Toggle word wrap

    このコマンドは、supplier1.example.com ホストを dc=example,dc=com 接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を 2 に設定します。また、このコマンドは、指定したパスワードを持つ cn=replication manager,cn=config ユーザーを作成し、このアカウントが接尾辞の変更をこのホストに複製するのを許可します。

    重要

    トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は 1 から 65534 の間の一意の整数である必要があります。

  2. レプリカ合意を追加し、新規サーバーを初期化します。

    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com repl-agmt create --suffix "dc=example,dc=com" --host "supplier2.example.com" --port 389 --conn-protocol LDAP --bind-dn "cn=replication manager,cn=config" --bind-passwd "password" --bind-method SIMPLE --init example-agreement-supplier1-to-supplier2
    Copy to Clipboard Toggle word wrap

    このコマンドは、example-agreement-supplier1-to-supplier2 という名前のレプリカ合意を作成します。レプリカ合意は、新規サプライヤーのホスト名、プロトコル、新規サプライヤーへのデータの接続や複製時にサプライヤーが使用する認証情報などの設定を定義します。

    この合意の作成後、Directory Server は supplier2.example.com を初期化します。複製するデータ量によっては、初期化に時間がかかる場合があります。

検証

  1. レプリケーション設定を表示します。

    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com replication get --suffix "dc=example,dc=com"
    dn: cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
    ...
    nsDS5ReplicaBindDN: cn=replication manager,cn=config
    nsDS5ReplicaRoot: dc=example,dc=com
    nsDS5ReplicaType: 3
    ...
    Copy to Clipboard Toggle word wrap

    これらのパラメーターは以下を示しています。

    • nsDS5ReplicaBindDN はレプリケーションマネージャーアカウントを指定します。
    • nsDS5ReplicaRoot は、レプリケートされる接尾辞を設定します。
    • nsDS5ReplicaType3 に設定して、このホストがサプライヤーであることを定義します。
  2. 初期化が成功したかどうかを確認します。

    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com repl-agmt init-status --suffix "dc=example,dc=com" example-agreement-supplier1-to-supplier2
    Agreement successfully initialized.
    Copy to Clipboard Toggle word wrap
  3. レプリケーションのステータスを表示します。

    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com repl-agmt status --suffix "dc=example,dc=com" example-agreement-supplier1-to-supplier2
    Status For Agreement: "example-agreement-supplier1-to-supplier2" (supplier2.example.com:389)
    Replica Enabled: on
    Update In Progress: FALSE
    Last Update Start: 20210331071545Z
    Last Update End: 20210331071546Z
    Number Of Changes Sent: 2:1/0
    Number Of Changes Skipped: None
    Last Update Status: Error (0) Replica acquired successfully: Incremental update succeeded
    Last Init Start: 20210331071541Z
    Last Init End: 20210331071544Z
    Last Init Status: Error (0) Total update succeeded
    Reap Active: 0
    Replication Status: Not in Synchronization: supplier (6064219e000100020000) consumer (Unavailable) State (green) Reason (error (0) replica acquired successfully: incremental update succeeded)
    Copy to Clipboard Toggle word wrap

    Replication Status フィールドおよび Last Update Status フィールドを確認します。

トラブルシューティング

  1. デフォルトでは、サーバー上のすべての合意に対するレプリケーションアイドルタイムアウトは 1 時間です。タイムアウトが原因で大規模なデータベースの初期化が失敗する場合は、nsslapd-idletimeout パラメーターをより高い値に設定します。たとえば、パラメーターを 7200(2 時間) に設定するには、次のコマンドを実行します。

    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com config replace nsslapd-idletimeout=7200
    Copy to Clipboard Toggle word wrap

    無制限の期間を設定するには、nsslapd-idletimeout0 に設定します。

新しいサーバー supplier2.example.com をサプライヤーとして準備するには、次のいずれかの方法を使用します。

  • 接尾辞のレプリケーションを有効にします。
  • 既存サーバーへのレプリカ合意を作成します。
警告

新しいサーバーから既存のサプライヤーを初期化しないでください。それ以外の場合は、新規サーバーの空のデータベースは、既存のサプライヤーのデータベースを上書きします。

既存のサプライヤーに以下の手順を適用します。

  • 新しいサーバーへのレプリカ合意を作成します。
  • 新しいサーバーを初期化します。

前提条件

  • 新規サーバーで dc=example,dc=com 接尾辞のレプリケーションを有効にしている。
  • 既存のサーバーで dc=example,dc=com 接尾辞のレプリケーションを有効にしている。
  • 参加する新しいサーバーが正常に初期化されている。

手順

  • レプリカ合意を既存のインスタンスに追加します。

    # dsconf -D "cn=Directory Manager" ldap://supplier2.example.com repl-agmt create --suffix "dc=example,dc=com" --host "supplier1.example.com" --port 389 --conn-protocol LDAP --bind-dn "cn=replication manager,cn=config" --bind-passwd "password" --bind-method SIMPLE example-agreement-supplier2-to-supplier1
    Copy to Clipboard Toggle word wrap
  • --init オプションを使用して、新しいインスタンスにレプリカ合意を追加します。

    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com repl-agmt create --suffix "dc=example,dc=com" --host "supplier2.example.com" --port 389 --conn-protocol LDAP --bind-dn "cn=replication manager,cn=config" --bind-passwd "password" --bind-method SIMPLE --init example-agreement-supplier1-to-supplier2
    Copy to Clipboard Toggle word wrap

検証

  1. 合意のステータスを表示します。

    # dsconf -D "cn=Directory Manager" ldap://supplier2.example.com repl-agmt init-status --suffix "dc=example,dc=com" example-agreement-supplier2-to-supplier1
    Agreement successfully initialized.
    Copy to Clipboard Toggle word wrap
  2. レプリケーションのステータスを表示します。

    # dsconf -D "cn=Directory Manager" ldap://supplier2.example.com repl-agmt status --suffix "dc=example,dc=com" example-agreement-supplier2-to-supplier1
    Status For Agreement: ""example-agreement-supplier2-to-supplier1 (supplier1.example.com:389)
    Replica Enabled: on
    Update In Progress: FALSE
    Last Update Start: 20210331073540Z
    Last Update End: 20210331073540Z
    Number Of Changes Sent: 7:1/0
    Number Of Changes Skipped: None
    Last Update Status: Error (0) Replica acquired successfully: Incremental update succeeded
    Last Init Start: 20210331073535Z
    Last Init End: 20210331073539Z
    Last Init Status: Error (0) Total update succeeded
    Reap Active: 0
    Replication Status: Not in Synchronization: supplier (60642649000000070000) consumer (Unavailable) State (green) Reason (error (0) replica acquired successfully: incremental update succeeded)
    Replication Lag Time: Unavailable
    Copy to Clipboard Toggle word wrap

    Replication Status フィールドおよび Last Update Status フィールドを確認します。

トラブルシューティング

  1. デフォルトでは、サーバー上のすべての合意に対するレプリケーションアイドルタイムアウトは 1 時間です。タイムアウトが原因で大規模なデータベースの初期化が失敗する場合は、nsslapd-idletimeout パラメーターをより高い値に設定します。たとえば、パラメーターを 7200(2 時間) に設定するには、次のコマンドを実行します。

    # dsconf -D "cn=Directory Manager" ldap://supplier2.example.com config replace nsslapd-idletimeout=7200
    Copy to Clipboard Toggle word wrap

    無制限の期間を設定するには、nsslapd-idletimeout0 に設定します。

第4章 Web コンソールを使用したマルチサプライヤーレプリケーションの設定

マルチサプライヤーレプリケーション環境では、2 つ以上の書き込み可能なサプライヤーが互いにデータを複製します。たとえば、マルチサプライヤーレプリケーションを設定してフェイルオーバー環境を提供し、複数のサーバーに負荷を分散します。その後、クライアントは読み取り/書き込みレプリカである任意のホストで読み取り/書き込み操作を実行できます。

本セクションでは、既存の Directory Server インスタンスが supplier1.example.com という名前のホストで実行されていることを前提としています。この手順では、supplier2.example.com という名前の別の読み取り/書き込みレプリカをトポロジーに追加する方法と、dc=example,dc=com 接尾辞のマルチサプライヤーレプリケーションを設定する方法を説明します。

4.1. Web コンソールを使用した新しいサプライヤーの準備

supplier2.example.com ホストを準備するには、レプリケーションを有効にします。このプロセスでは、以下を行います。

  • レプリケーショントポロジーでこのサーバーのロールを設定します。
  • レプリケートされる接尾辞を定義します。
  • このホストへの接続にサプライヤーが使用するレプリケーションマネージャーアカウントを作成します。

レプリケーショントポロジーに追加するサプライヤーで、以下の手順を実行します。

前提条件

手順

  1. Replication メニューを開きます。
  2. dc=example,dc=com 接尾辞を選択します。
  3. レプリケーションを有効にします。

    1. Enable Replication をクリックします。
    2. Replication Role フィールドで Supplier を選択し、レプリカ ID を入力し、作成するレプリケーションマネージャーアカウントの識別名 (DN) およびパスワードを入力します。

      この設定により、ホストを dc=example,dc=com 接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を 1 に設定します。

      重要

      トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は 1 から 65534 の間の一意の整数である必要があります。

      レプリケーションマネージャー DN を設定しない場合は、バインドグループ DN を設定します。その後、レプリカ合意でこのグループの任意のメンバーを使用できます。

    3. Enable Replication をクリックします。

検証

  1. Replication メニューを開きます。
  2. dc=example,dc=com 接尾辞を選択します。
  3. Replica Role フィールドに値 Supplier が含まれている場合、レプリケーションが有効になり、ホストがサプライヤーとして設定されます。

既存のサーバー supplier1.example.com をサプライヤーとして準備するには、次のことを行う必要があります。

  • 接尾辞のレプリケーションを有効にします。
  • 新規サプライヤーへのレプリカ合意を作成します。
  • 新しいサプライヤーを初期化します。

レプリケーショントポロジーの既存のサプライヤーでこの手順を実行します。

前提条件

  • 参加するサプライヤーで dc=example,dc=com 接尾辞のレプリケーションを有効にしている。
  • Web コンソールでインスタンスにログインしている。

手順

  1. Replication メニューを開きます。
  2. dc=example,dc=com 接尾辞を選択します。
  3. レプリケーションを有効にします。

    1. Enable Replication をクリックします。
    2. Replication Role フィールドで Supplier を選択し、レプリカ ID を入力し、作成するレプリケーションマネージャーアカウントの識別名 (DN) およびパスワードを入力します。

      この設定により、ホストを dc=example,dc=com 接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を 2 に設定します。

      重要

      トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は 1 から 65534 の間の一意の整数である必要があります。

    3. Enable Replication をクリックします。
  4. レプリカ合意を追加し、新規サーバーを初期化します。

    1. Agreements タブで、Create Agreement をクリックし、次のフィールドに入力します。

      この設定により、example-agreement-supplier1-to-supplier2 という名前のレプリカ合意が作成されます。レプリカ合意は、新規サプライヤーのホスト名、プロトコル、新規サプライヤーへのデータの接続や複製時にサプライヤーが使用する認証情報などの設定を定義します。

    2. Consumer Initialization フィールドで Do Online Initialization を選択し、合意の保存後に新規サーバーを自動的に初期化します。
    3. Save Agreement をクリックします。

      この合意の作成後、Directory Server は supplier2.example.com を初期化します。複製するデータ量によっては、初期化に時間がかかる場合があります。

検証

  1. Replication メニューを開きます。
  2. dc=example,dc=com 接尾辞を選択します。
  3. Agreements タブで、テーブルの State 列での契約のステータスを確認。

新しいサーバー supplier2.example.com をサプライヤーとして準備するには、次のことを行う必要があります。

  • 接尾辞のレプリケーションを有効にします。
  • 既存サーバーへのレプリカ合意を作成します。
  • 既存サーバーを初期化します。

レプリケーショントポロジーの既存のサプライヤーでこの手順を実行します。

警告

既存のサーバーでレプリカ合意を初期化していない場合は、続行しないでください。それ以外の場合は、新規サーバーの空のデータベースは、既存のサプライヤーのデータベースを上書きします。

前提条件

  • 新規サーバーで dc=example,dc=com 接尾辞のレプリケーションを有効にしている。
  • 既存のサーバーで dc=example,dc=com 接尾辞のレプリケーションを有効にしている。
  • 参加する新しいサーバーが正常に初期化されている。
  • Web コンソールでインスタンスにログインしている。

手順

  1. Replication メニューを開きます。
  2. dc=example,dc=com 接尾辞を選択します。
  3. レプリカ合意を追加し、既存のサーバーを初期化します。

    1. Agreements タブで、Create Agreement をクリックし、次のフィールドに入力します。

      この設定により、example-agreement-supplier2-to-supplier1 という名前のレプリカ合意が作成されます。レプリカ合意は、既存サーバーのホスト名、プロトコル、既存サプライヤーへのデータの接続や複製時にサプライヤーが使用する認証情報などの設定を定義します。

    2. Consumer Initialization フィールドで Do Online Initialization を選択し、合意の保存後に新規サーバーを自動的に初期化します。
    3. Save Agreement をクリックします。

      この合意の作成後、Directory Server は supplier1.example.com を初期化します。複製するデータ量によっては、初期化に時間がかかる場合があります。

検証

  1. Replication メニューを開きます。
  2. dc=example,dc=com 接尾辞を選択します。
  3. Agreements タブで、テーブルの State 列での契約のステータスを確認。

第5章 証明書ベースの認証を使用したマルチサプライヤーレプリケーションの設定

2 つの Directory Server インスタンス間のレプリケーションを設定する場合、バインド DN とパスワードを使用してレプリケーションパートナーを認証する代わりに、証明書ベースの認証を使用できます。

これを行うには、新しいサーバーをレプリケーショントポロジーに追加し、証明書ベースの認証を使用して新しいホストと既存のサーバーの間にレプリケーションアグリーメントを設定します。

重要

証明書ベースの認証には、TLS 暗号化接続が必要です。

複製合意で証明書ベースの認証を使用するには、まずアカウントを準備し、クライアント証明書をこれらのアカウントの userCertificate 属性に保存します。さらに、この手順では、後で複製合意で使用するバインドグループを作成します。

この手順は、既存のホスト server1.example.com で実行します。

前提条件

  • Directory Server で TLS 暗号化を有効にしています。
  • /root/server1.der ファイルと /root/server2.der ファイルに、クライアント証明書を Distinguished Encoding Rules (DER) 形式で保存しました。

    クライアント証明書の詳細と、認証局 (CA) から証明書を要求する方法は、CA のドキュメントを参照してください。

手順

  1. ou=services エントリーが存在しない場合は作成します。

    # ldapadd -D "cn=Directory Manager" -W -H ldaps://server1.example.com -x
    
    dn: ou=services,dc=example,dc=com
    objectClass: organizationalunit
    objectClass: top
    ou: services
    Copy to Clipboard Toggle word wrap
  2. cn=server1,ou=services,dc=example,dc=com および cn=server1,ou=services,dc=example,dc=com など、両方のサーバーのアカウントを作成します。

    # ldapadd -D "cn=Directory Manager" -W -H ldaps://server1.example.com -x
    
    dn: cn=server1,ou=services,dc=example,dc=com
    objectClass: top
    objectClass: person
    objectClass: inetOrgPerson
    sn: server1
    cn: server1
    userPassword: password
    userCertificate:< file:///root/server1.der
    
    adding new entry "cn=server1,ou=services,dc=example,dc=com"
    
    dn: cn=server2,ou=services,dc=example,dc=com
    objectClass: top
    objectClass: person
    objectClass: inetOrgPerson
    sn: server2
    cn: server2
    userPassword: password
    userCertificate:< file:///root/server2.der
    
    adding new entry "cn=server2,ou=services,dc=example,dc=com"
    Copy to Clipboard Toggle word wrap
  3. cn=repl_servers,dc=groups,dc=example,dc=com などのグループを作成します。

    # dsidm -D "cn=Directory Manager" ldaps://server1.example.com -b "dc=example,dc=com" group create --cn "repl_servers"
    Copy to Clipboard Toggle word wrap
  4. 2 つのレプリケーションアカウントをメンバーとしてグループに追加します。

    # dsidm -D "cn=Directory Manager" ldaps://server1.example.com -b "dc=example,dc=com" group add_member repl_servers "cn=server1,ou=services,dc=example,dc=com"
    
    # dsidm -D "cn=Directory Manager" ldaps://server1.example.com -b "dc=example,dc=com" group add_member repl_servers "cn=server2,ou=services,dc=example,dc=com"
    Copy to Clipboard Toggle word wrap

5.2. 一時レプリケーションマネージャーアカウントを使用した新しいサーバーの初期化

証明書ベースの認証では、ディレクトリーに格納されている証明書が使用されます。ただし、新しいサーバーを初期化する前は、server2.example.com のデータベースは空であり、関連付けられた証明書を持つアカウントは存在しません。したがって、データベースの初期化前に、証明書を使用してレプリケーションすることはできません。この問題は、server2.example.com を一時的なレプリケーションマネージャーアカウントで初期化することで解決できます。

前提条件

手順

  1. server2.example.com で、dc=example,dc=com 接尾辞のレプリケーションを有効にします。

    # dsconf -D "cn=Directory Manager" ldaps://server2.example.com replication enable --suffix "dc=example,dc=com" --role "supplier" --replica-id 2 --bind-dn "cn=replication manager,cn=config" --bind-passwd "password"
    Copy to Clipboard Toggle word wrap

    このコマンドは、server2.example.com ホストを dc=example,dc=com 接尾辞のサプライヤーとして設定し、このホストのレプリカ ID を 2 に設定します。さらに、このコマンドは、指定されたパスワードで一時的な cn=replication manager,cn=config ユーザーを作成し、このアカウントが接尾辞の変更をこのホストに複製できるようにします。

    トポロジー内のすべてのサプライヤーにわたって、1 つの接尾辞に対するレプリカ ID は 1 から 65534 の間の一意の整数である必要があります。

  2. server1.example.com 上で:

    1. レプリケーションを有効にします。

      # dsconf -D "cn=Directory Manager" ldaps://server1.example.com replication enable --suffix="dc=example,dc=com" --role="supplier" --replica-id="1"
      Copy to Clipboard Toggle word wrap
    2. 認証用に直前の手順で一時的なアカウントを使用する一時的なレプリカ合意を作成します。

      # dsconf -D "cn=Directory Manager" ldaps://server1.example.com repl-agmt create --suffix="dc=example,dc=com" --host="server1.example.com" --port=636 --conn-protocol=LDAPS --bind-dn="cn=Replication Manager,cn=config" --bind-passwd="password" --bind-method=SIMPLE --init temporary_agreement
      Copy to Clipboard Toggle word wrap

検証

  1. 初期化が成功したことを確認します。

    # dsconf -D "cn=Directory Manager" ldaps://server1.example.com repl-agmt init-status --suffix "dc=example,dc=com" temporary_agreement
    Agreement successfully initialized.
    Copy to Clipboard Toggle word wrap

5.3. 証明書ベースの認証を使用したマルチサプライヤーレプリケーションの設定

証明書ベースの認証を使用するマルチサプライヤーレプリケーション環境では、レプリカは証明書を使用して相互に認証します。

前提条件

  • server1.example.comserver2.example.com の両方のホストで証明書ベースの認証を設定します。
  • Directory Server は、クライアント証明書を発行する認証局 (CA) を信頼します。
  • クライアント証明書は、サーバーの /etc/dirsrv/slapd-instance_name/certmap.conf で設定された要件を満たしています。

手順

  1. server1.example.com 上で:

    1. 一時的なレプリカ合意を削除します。

      # dsconf -D "cn=Directory Manager" ldaps://server1.example.com repl-agmt delete --suffix="dc=example,dc=com" temporary_agreement
      Copy to Clipboard Toggle word wrap
    2. cn=repl_servers,dc=groups,dc=example,dc=com バインドグループをレプリケーション設定に追加します。

      # dsconf -D "cn=Directory Manager" ldaps://server1.example.com replication set --suffix="dc=example,dc=com" --repl-bind-group "cn=repl_servers,dc=groups,dc=example,dc=com"
      Copy to Clipboard Toggle word wrap
    3. バインドグループの変更を自動的にチェックするように Directory Server を設定します。

      # dsconf -D "cn=Directory Manager" ldaps://server1.example.com replication set --suffix="dc=example,dc=com" --repl-bind-group-interval=0
      Copy to Clipboard Toggle word wrap
  2. server2.example.com 上で:

    1. 一時的なレプリケーションマネージャーアカウントを削除します。

      # dsconf -D "cn=Directory Manager" ldaps://server2.example.com replication delete-manager --suffix="dc=example,dc=com" --name="Replication Manager"
      Copy to Clipboard Toggle word wrap
    2. cn=repl_servers,dc=groups,dc=example,dc=com バインドグループをレプリケーション設定に追加します。

      # dsconf -D "cn=Directory Manager" ldaps://server2.example.com replication set --suffix="dc=example,dc=com" --repl-bind-group "cn=repl_servers,dc=groups,dc=example,dc=com"
      Copy to Clipboard Toggle word wrap
    3. バインドグループの変更を自動的にチェックするように Directory Server を設定します。

      # dsconf -D "cn=Directory Manager" ldap://server2.example.com replication set --suffix="dc=example,dc=com" --repl-bind-group-interval=0
      Copy to Clipboard Toggle word wrap
    4. 証明書ベースの認証を使用して複製合意を作成します。

      dsconf -D "cn=Directory Manager" ldaps://server2.example.com repl-agmt create --suffix="dc=example,dc=com" --host="server1.example.com" --port=636 --conn-protocol=LDAPS --bind-method="SSLCLIENTAUTH" --init server2-to-server1
      Copy to Clipboard Toggle word wrap
  3. server1.example.com で、証明書ベースの認証を使用して複製合意を作成します。

    dsconf -D "cn=Directory Manager" ldaps://server1.example.com repl-agmt create --suffix="dc=example,dc=com" --host="server2.example.com" --port=636 --conn-protocol=LDAPS --bind-method="SSLCLIENTAUTH" --init server1-to-server2
    Copy to Clipboard Toggle word wrap

検証

  1. 初期化が成功したことを各サーバーで確認します。

    # dsconf -D "cn=Directory Manager" ldaps://server1.example.com repl-agmt init-status --suffix "dc=example,dc=com" server1-to-server2
    Agreement successfully initialized.
    
    # dsconf -D "cn=Directory Manager" ldaps://server2.example.com repl-agmt init-status --suffix "dc=example,dc=com" server2-to-server1
    Agreement successfully initialized.
    Copy to Clipboard Toggle word wrap

第6章 コマンドラインを使用したカスケードレプリケーションの設定

カスケードレプリケーションのシナリオでは、ハブとなる 1 台のサーバーがコンシューマーとサプライヤーの両方のロールを果たします。ハブは、変更ログを維持する読み取り専用のレプリカです。サプライヤーから更新を受け取り、これらの更新をコンシューマーに提供します。カスケードレプリケーションは、負荷の高いトラフィックのバランスをとる場合や、地理的に分散した環境でサプライヤーをローカルに配置する場合に使用します。

6.1. コマンドラインを使用した新しいハブサーバーの準備

hub.example.com ホストを準備するには、レプリケーションを有効にします。このプロセスでは、以下を行います。

  • レプリケーショントポロジーでこのサーバーのロールを設定します。
  • レプリケートされる接尾辞を定義します。
  • このホストへの接続にサプライヤーが使用するレプリケーションマネージャーアカウントを作成します。

レプリケーショントポロジーに追加するハブで、以下の手順を実行します。

前提条件

  • Directory Server インスタンスがインストールされている。
  • dc=example,dc=com 接尾辞のデータベースが存在する。

手順

  • dc=example,dc=com 接尾辞のレプリケーションを有効にします。

    # dsconf -D "cn=Directory Manager" ldap://hub.example.com replication enable --suffix "dc=example,dc=com" --role "hub" --bind-dn "cn=replication manager,cn=config" --bind-passwd "password"
    Copy to Clipboard Toggle word wrap

    このコマンドは、dc=example,dc=com 接尾辞のハブとして hub.example.com ホストを設定します。また、このコマンドは、指定したパスワードを持つ cn=replication manager,cn=config ユーザーを作成し、このアカウントが接尾辞の変更をこのホストに複製するのを許可します。

検証

  • レプリケーション設定を表示します。

    # dsconf -D "cn=Directory Manager" ldap://hub.example.com replication get --suffix "dc=example,dc=com"
    dn: cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
    ...
    nsDS5ReplicaBindDN: cn=replication manager,cn=config
    nsDS5ReplicaRoot: dc=example,dc=com
    nsDS5ReplicaType: 2
    nsDS5ReplicaId: 65535
    ...
    Copy to Clipboard Toggle word wrap

    これらのパラメーターは以下を示しています。

    • nsDS5ReplicaBindDN はレプリケーションマネージャーアカウントを指定します。
    • nsDS5ReplicaRoot は、レプリケートされる接尾辞を設定します。
    • nsDS5ReplicaType2 に設定して、このホストがコンシューマーで、ハブにも有効であることを定義します。
    • nsDS5ReplicaId65535 に設定して、このホストがハブであることを定義します。--role "hub" オプションを定義すると、dsconf ユーティリティーはこの値を自動的に設定します。

既存のサーバーをサプライヤーとして準備するには、以下を行う必要があります。

  • 接尾辞のレプリケーションを有効にします。
  • ハブへのレプリカ合意を作成します。
  • ハブを初期化します。

レプリケーショントポロジーの既存のサプライヤーでこの手順を実行します。

前提条件

  • 参加するハブで dc=example,dc=com 接尾辞のレプリケーションを有効にしている。

手順

  1. dc=example,dc=com 接尾辞のレプリケーションを有効にします。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication enable --suffix "dc=example,dc=com" --role "supplier" --replica-id 1
    Copy to Clipboard Toggle word wrap

    このコマンドは、supplier.example.com ホストを dc=example,dc=com 接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を 1 に設定します。

    重要

    トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は 1 から 65534 の間の一意の整数である必要があります。

  2. レプリカ合意を追加し、新規サーバーを初期化します。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt create --suffix "dc=example,dc=com" --host "hub.example.com" --port 389 --conn-protocol LDAP --bind-dn "cn=replication manager,cn=config" --bind-passwd "password" --bind-method SIMPLE --init example-agreement-supplier-to-hub
    Copy to Clipboard Toggle word wrap

    このコマンドは、example-agreement-supplier-to-hub という名前のレプリカ合意を作成します。レプリカ合意は、ハブのホスト名、プロトコル、ハブへのデータの接続や複製時にサプライヤーが使用する認証情報などの設定を定義します。

    この合意の作成後、Directory Server は hub.example.com を初期化します。複製するデータ量によっては、初期化に時間がかかる場合があります。

検証

  1. レプリケーション設定を表示します。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication get --suffix "dc=example,dc=com"
    dn: cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
    ...
    nsDS5ReplicaRoot: dc=example,dc=com
    nsDS5ReplicaType: 3
    ...
    Copy to Clipboard Toggle word wrap

    これらのパラメーターは以下を示しています。

    • nsDS5ReplicaRoot は、レプリケートされる接尾辞を設定します。
    • nsDS5ReplicaType3 に設定して、このホストがサプライヤーであることを定義します。
  2. 初期化が成功したかどうかを確認します。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt init-status --suffix "dc=example,dc=com" example-agreement-supplier-to-hub
    Agreement successfully initialized.
    Copy to Clipboard Toggle word wrap
  3. レプリケーションのステータスを表示します。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt status --suffix "dc=example,dc=com" example-agreement-supplier-to-hub
    Status For Agreement: "example-agreement-supplier-to-hub" (hub.example.com:389)
    Replica Enabled: on
    Update In Progress: FALSE
    Last Update Start: 20210331105030Z
    Last Update End: 20210331105030Z
    Number Of Changes Sent: 0
    Number Of Changes Skipped: None
    Last Update Status: Error (0) Replica acquired successfully: Incremental update succeeded
    Last Init Start: 20210331105026Z
    Last Init End: 20210331105029Z
    Last Init Status: Error (0) Total update succeeded
    Reap Active: 0
    Replication Status: Not in Synchronization: supplier (Unknown) consumer (Unknown) State (green) Reason (error (0) replica acquired successfully: incremental update succeeded)
    Replication Lag Time: Unavailable
    Copy to Clipboard Toggle word wrap

    Replication Status フィールドおよび Last Update Status フィールドを確認します。

トラブルシューティング

  1. デフォルトでは、サーバー上のすべての合意に対するレプリケーションアイドルタイムアウトは 1 時間です。タイムアウトが原因で大規模なデータベースの初期化が失敗する場合は、nsslapd-idletimeout パラメーターをより高い値に設定します。たとえば、パラメーターを 7200(2 時間) に設定するには、次のコマンドを実行します。

    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com config replace nsslapd-idletimeout=7200
    Copy to Clipboard Toggle word wrap

    無制限の期間を設定するには、nsslapd-idletimeout0 に設定します。

6.3. コマンドラインを使用したハブの新しいコンシューマーの準備

consumer.example.com ホストを準備するには、レプリケーションを有効にします。このプロセスでは、以下を行います。

  • レプリケーショントポロジーでこのサーバーのロールを設定します。
  • レプリケートされる接尾辞を定義します。
  • このホストへの接続にハブが使用するレプリケーションマネージャーアカウントを作成します。

レプリケーショントポロジーに追加するコンシューマーで、以下の手順を実行します。

前提条件

手順

  • dc=example,dc=com 接尾辞のレプリケーションを有効にします。

    # dsconf -D "cn=Directory Manager" ldap://consumer.example.com replication enable --suffix "dc=example,dc=com" --role "consumer" --bind-dn "cn=replication manager,cn=config" --bind-passwd "password"
    Copy to Clipboard Toggle word wrap

    このコマンドは、consumer.example.com ホストを dc=example,dc=com 接尾辞のコンシューマーとして設定します。また、このコマンドは、指定したパスワードを持つ cn=replication manager,cn=config ユーザーを作成し、このアカウントが接尾辞の変更をこのホストに複製するのを許可します。

検証

  • レプリケーション設定を表示します。

    # dsconf -D "cn=Directory Manager" ldap://consumer.example.com replication get --suffix "dc=example,dc=com"
    dn: cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
    ...
    nsDS5ReplicaBindDN: cn=replication manager,cn=config
    nsDS5ReplicaRoot: dc=example,dc=com
    nsDS5ReplicaType: 2
    ...
    Copy to Clipboard Toggle word wrap

    これらのパラメーターは以下を示しています。

    • nsDS5ReplicaBindDN はレプリケーションマネージャーアカウントを指定します。
    • nsDS5ReplicaRoot は、レプリケートされる接尾辞を設定します。
    • nsDS5ReplicaType2 に設定して、このホストがコンシューマーであることを定義します。

ハブを準備するには、以下を行う必要があります。

  • コンシューマーへのレプリカ合意を作成します。
  • コンシューマーを初期化します。

レプリケーショントポロジーのハブでこの手順を実行します。

前提条件

  • ハブが初期化され、サプライヤーからハブへのレプリケーションが機能する。
  • ハブで dc=example,dc=com 接尾辞のレプリケーションを有効にしている。

手順

  • レプリカ合意を追加し、コンシューマーを初期化します。

    # dsconf -D "cn=Directory Manager" ldap://hub.example.com repl-agmt create --suffix "dc=example,dc=com" --host "consumer.example.com" --port 389 --conn-protocol LDAP --bind-dn "cn=replication manager,cn=config" --bind-passwd "password" --bind-method SIMPLE --init example-agreement-hub-to-consumer
    Copy to Clipboard Toggle word wrap

    このコマンドは、example-agreement-hub-to-consumer という名前のレプリカ合意を作成します。レプリカ合意は、コンシューマーのホスト名、プロトコル、このコンシューマーへのデータの接続や複製時にサプライヤーが使用する認証情報などの設定を定義します。

    この合意の作成後、Directory Server は consumer.example.com を初期化します。複製するデータ量によっては、初期化に時間がかかる場合があります。

検証

  1. 初期化が成功したかどうかを確認します。

    # dsconf -D "cn=Directory Manager" ldap://hub.example.com repl-agmt init-status --suffix "dc=example,dc=com" example-agreement-hub-to-consumer
    Agreement successfully initialized.
    Copy to Clipboard Toggle word wrap
  2. レプリケーションのステータスを表示します。

    # dsconf -D "cn=Directory Manager" ldap://hub.example.com repl-agmt status --suffix "dc=example,dc=com" example-agreement-hub-to-consumer
    Status For Agreement: "example-agreement-hub-to-consumer" (consumer.example.com:389)
    Replica Enabled: on
    Update In Progress: FALSE
    Last Update Start: 20210331131534Z
    Last Update End: 20210331131534Z
    Number Of Changes Sent: 0
    Number Of Changes Skipped: None
    Last Update Status: Error (0) Replica acquired successfully: Incremental update succeeded
    Last Init Start: 20210331131530Z
    Last Init End: 20210331131533Z
    Last Init Status: Error (0) Total update succeeded
    Reap Active: 0
    Replication Status: Not in Synchronization: supplier (Unknown) consumer (Unknown) State (green) Reason (error (0) replica acquired successfully: incremental update succeeded)
    Replication Lag Time: Unavailable
    Copy to Clipboard Toggle word wrap

    Replication Status フィールドおよび Last Update Status フィールドを確認します。

トラブルシューティング

  1. デフォルトでは、サーバー上のすべての合意に対するレプリケーションアイドルタイムアウトは 1 時間です。タイムアウトが原因で大規模なデータベースの初期化が失敗する場合は、nsslapd-idletimeout パラメーターをより高い値に設定します。たとえば、パラメーターを 7200(2 時間) に設定するには、次のコマンドを実行します。

    # dsconf -D "cn=Directory Manager" ldap://hub .example.com config replace nsslapd-idletimeout=7200
    Copy to Clipboard Toggle word wrap

    無制限の期間を設定するには、nsslapd-idletimeout0 に設定します。

第7章 Web コンソールを使用したカスケードレプリケーションの設定

カスケードレプリケーションのシナリオでは、ハブとなる 1 台のサーバーがコンシューマーとサプライヤーの両方のロールを果たします。ハブは、変更ログを維持する読み取り専用のレプリカです。サプライヤーから更新を受け取り、これらの更新をコンシューマーに提供します。カスケードレプリケーションは、負荷の高いトラフィックのバランスをとる場合や、地理的に分散した環境でサプライヤーをローカルに配置する場合に使用します。

7.1. Web コンソールを使用した新しいハブサーバーの準備

hub.example.com ホストを準備するには、レプリケーションを有効にします。このプロセスでは、以下を行います。

  • レプリケーショントポロジーでこのサーバーのロールを設定します。
  • レプリケートされる接尾辞を定義します。
  • このホストへの接続にサプライヤーが使用するレプリケーションマネージャーアカウントを作成します。

レプリケーショントポロジーに追加するハブで、以下の手順を実行します。

前提条件

  • Directory Server インスタンスがインストールされている。
  • dc=example,dc=com 接尾辞のデータベースが存在する。
  • Web コンソールでインスタンスにログインしている。

手順

  1. Replication メニューを開きます。
  2. dc=example,dc=com 接尾辞を選択します。
  3. レプリケーションを有効にします。

    1. Enable Replication をクリックします。
    2. Replication Role フィールドで Consumer を選択し、作成するレプリケーションマネージャーアカウントおよびパスワードを入力します。

      この設定により、ホストを dc=example,dc=com 接尾辞のハブとして設定します。

    3. Enable Replication をクリックします。

検証

  1. Replication メニューを開きます。
  2. dc=example,dc=com 接尾辞を選択します。
  3. Replica Role フィールドに値 Hub が含まれている場合、レプリケーションが有効になり、ホストがコンシューマーとして設定されます。

既存のサーバーをサプライヤーとして準備するには、以下を行う必要があります。

  • 接尾辞のレプリケーションを有効にします。
  • ハブへのレプリカ合意を作成します。
  • ハブを初期化します。

レプリケーショントポロジーの既存のサプライヤーでこの手順を実行します。

前提条件

  • 参加するハブで dc=example,dc=com 接尾辞のレプリケーションを有効にしている。
  • Web コンソールでインスタンスにログインしている。

手順

  1. Replication メニューを開きます。
  2. dc=example,dc=com 接尾辞を選択します。
  3. レプリケーションを有効にします。

    1. Enable Replication をクリックします。
    2. Replication Role フィールドで Supplier を選択し、レプリカ ID を入力し、作成するレプリケーションマネージャーアカウントの識別名 (DN) およびパスワードを入力します。

      この設定により、ホストを dc=example,dc=com 接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を 1 に設定します。

      重要

      トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は 1 から 65534 の間の一意の整数である必要があります。

    3. Enable Replication をクリックします。
  4. レプリカ合意を追加し、新規サーバーを初期化します。

    1. Agreements タブで、Create Agreement をクリックし、次のフィールドに入力します。

      この設定により、example-agreement-supplier-to-hub という名前のレプリカ合意が作成されます。レプリカ合意は、ハブのホスト名、プロトコル、このハブへのデータの接続や複製時にサプライヤーが使用する認証情報などの設定を定義します。

    2. Consumer Initialization フィールドで Do Online Initialization を選択し、合意の保存後に新規サーバーを自動的に初期化します。
    3. Save Agreement をクリックします。

      この合意の作成後、Directory Server は hub.example.com を初期化します。複製するデータ量によっては、初期化に時間がかかる場合があります。

検証

  1. Replication メニューを開きます。
  2. dc=example,dc=com 接尾辞を選択します。
  3. Agreements タブで、テーブルの State 列での契約のステータスを確認。

7.3. Web コンソールを使用したハブの新規コンシューマーの準備

consumer.example.com ホストを準備するには、レプリケーションを有効にします。このプロセスでは、以下を行います。

  • レプリケーショントポロジーでこのサーバーのロールを設定します。
  • レプリケートされる接尾辞を定義します。
  • このホストへの接続にサプライヤーが使用するレプリケーションマネージャーアカウントを作成します。

レプリケーショントポロジーに追加するコンシューマーで、以下の手順を実行します。

前提条件

手順

  1. Replication メニューを開きます。
  2. dc=example,dc=com 接尾辞を選択します。
  3. Enable Replication をクリックします。
  4. Replication Role フィールドで Consumer を選択し、作成するレプリケーションマネージャーアカウントおよびパスワードを入力します。

    この設定により、ホストを dc=example,dc=com 接尾辞のコンシューマーとして設定します。さらに、サーバーは指定のパスワードで cn=replication manager,cn=config ユーザーを作成し、このアカウントがこのホストに接尾辞の変更を複製することができます。

  5. Enable Replication をクリックします。

検証

  1. Replication メニューを開きます。
  2. dc=example,dc=com 接尾辞を選択します。
  3. Replica Role フィールドに値 Consumer が含まれている場合、レプリケーションが有効になり、ホストがコンシューマーとして設定されます。

ハブを準備するには、以下を行う必要があります。

  • コンシューマーへのレプリカ合意を作成します。
  • コンシューマーを初期化します。

レプリケーショントポロジーのハブでこの手順を実行します。

前提条件

  • ハブが初期化され、サプライヤーからハブへのレプリケーションが機能する。
  • ハブで dc=example,dc=com 接尾辞のレプリケーションを有効にしている。
  • Web コンソールでインスタンスにログインしている。

手順

  1. Replication メニューを開きます。
  2. dc=example,dc=com 接尾辞を選択します。
  3. レプリカ合意を追加し、コンシューマーを初期化します。

    1. Agreements タブで、Create Agreement をクリックし、次のフィールドに入力します。

      この設定により、example-agreement-hub-to-consumer という名前のレプリカ合意が作成されます。レプリカ合意は、コンシューマーのホスト名、プロトコル、このコンシューマーへのデータの接続や複製時にハブが使用する認証情報などの設定を定義します。

    2. Consumer Initialization フィールドで Do Online Initialization を選択し、合意の保存後にコンシューマーを自動的に初期化します。
    3. Save Agreement をクリックします。

      この合意の作成後、Directory Server は consumer.example.com を初期化します。複製するデータ量によっては、初期化に時間がかかる場合があります。

検証

  1. Replication メニューを開きます。
  2. dc=example,dc=com 接尾辞を選択します。
  3. Agreements タブで、テーブルの State 列での契約のステータスを確認。

第8章 マルチサプレットレプリケーション環境でのレイテンシーの改善

特定のマルチサプライヤーレプリケーション環境では (たとえば、サーバーがワイドエリアネットワーク (WAN) を介して接続されている場合)、マルチサプライヤーが同時に更新を受け取ると、レプリケーションのレイテンシーが高くなる可能性があります。これは、1 つのサプライヤーがレプリカを長期間解放せずにレプリカのみにアクセスした場合に発生します。このような場合は、他のサプライヤーがこのコンシューマーに更新を送信できないため、レプリケーションのレイテンシーが増加します。

一定期間の経過後にレプリカを解放するには、レプリケーションサプライヤーとハブに nsds5ReplicaReleaseTimeout パラメーターを設定します。

注記

ほとんどの環境では 60 秒のデフォルト値が適しています。設定した値が高すぎるまたは低すぎると、レプリケーションのパフォーマンスに影響を及ぼす可能性があります。設定した値が低すぎると、レプリケーションサーバーは常に相互に再取得し、サーバーは多くの更新を送信できなくなります。トラフィックの多いレプリケーション環境では、タイムアウトが長いと 1 つのサプライヤーのみがレプリカにアクセスする状況を改善できます。ただし、ほとんどの場合、120 秒よりも高い値を設定するとレプリケーションの速度が低下します。

8.1. コマンドラインを使用したレプリケーション解放タイムアウトの設定

マルチサプライヤーレプリケーション環境でレプリケーションの効率を向上させるには、すべてのハブおよびサプライヤーでレプリケーションリリースのタイムアウト値を更新します。

前提条件

  • 複数のサプライヤーとハブ間でレプリケーションを設定している。

手順

  1. 接尾辞のタイムアウト値を設定します。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication set --suffix="dc=example,dc=com" --repl-release-timeout=70
    Copy to Clipboard Toggle word wrap

    このコマンドは、example,dc=com の接尾辞のレプリケーションタイムアウトを 70 秒に変更します。

  2. インスタンスを再起動します。

    # dsctl instance_name restart
    Copy to Clipboard Toggle word wrap

8.2. Web コンソールを使用したレプリケーション解放タイムアウトの設定

マルチサプライヤーレプリケーション環境でレプリケーションの効率を向上させるには、すべてのハブおよびサプライヤーでレプリケーションリリースのタイムアウト値を更新します。

前提条件

  • 複数のサプライヤーとハブ間でレプリケーションを設定している。

手順

  1. Replication タブで、接尾辞エントリーを選択します。
  2. Show Advanced Settings をクリックします。
  3. Replication Release Timeout フィールドの値を更新します。
  4. Save Configuration をクリックします。

第9章 レプリケーショントポロジーにおけるコンシューマーの初期化

レプリカ合意を作成した後、コンシューマーを初期化する必要があります。そうしないと、Directory Server はレプリケーションを開始しません。初期化操作中に、サプライヤーは既存のデータをコンシューマーにコピーします。

9.1. コンシューマーの初期化のタイミング

コンシューマーの初期化には、サプライヤーサーバーからコンシューマーサーバーへのデータのコピーが含まれます。サブツリーがコンシューマーに物理的に配置されたら、サプライヤーサーバーはコンシューマーサーバーへの更新操作のリプレイを開始できます。

通常の操作では、コンシューマーを再初期化しないでください。ただし、サプライヤーとコンシューマーのデータに大きな相違がある場合は、コンシューマーの再初期化を実行します。

たとえば、サプライヤーサーバーのデータをバックアップから復元した場合は、そのサーバーによって提供されるすべてのコンシューマーも再初期化する必要があります。もう 1 つの例としては、サプライヤーが長期間 (1 週間以上) コンシューマーと連絡が取れず、コンシューマーが古すぎて更新できないと判断し、再初期化する必要があるとサプライヤーが判断した場合が挙げられます。

トポロジーに応じて、オンラインまたはオフラインの方法を使用してコンシューマーを初期化します。

  • コンシューマーの数が少ない場合は、Web コンソールを使用してオンラインでコンシューマーの初期化を実行します。オンラインコンシューマーの初期化は、コンシューマーがサプライヤーサーバーでのレプリカ合意の設定の一部として初期化される時に使用する方法です。
  • レプリカの数が多い場合やデータベースが大きい場合は、コマンドラインを使用して、単一の LDIF ファイルから手動でコンシューマー初期化を実行します。

サプライヤーとコンシューマーのインスタンスがオンラインの場合、コマンドラインを使用してコンシューマーを初期化できます。

前提条件

  • サプライヤーサーバーとコンシューマーサーバーで dc=example,dc=com 接尾辞のレプリケーションを有効化している。
  • サプライヤーサーバーとコンシューマーサーバーの間でレプリカ合意を作成している。

手順

  1. コンシューマーを初期化するには、次を実行します。

    # dsconf <supplier_instance_name> repl-agmt init --suffix="dc=example,dc=com" <supplier_consumer_agreement_name>
    Copy to Clipboard Toggle word wrap

    複製するデータ量によっては、初期化に時間がかかる場合があります。

検証

  • 合意のステータスを表示します。

    # dsconf <supplier_instance_name> repl-agmt init-status --suffix "dc=example,dc=com" <supplier_consumer_agreement_name>
    Agreement successfully initialized.
    Copy to Clipboard Toggle word wrap

9.3. Web コンソールを使用してオンラインでコンシューマーを初期化する

サプライヤーインスタンスとコンシューマーインスタンスがオンラインの場合のみ、Web コンソールを使用してコンシューマーを初期化できます。

前提条件

  • サプライヤーサーバーとコンシューマーサーバーで dc=example,dc=com 接尾辞のレプリケーションを有効化している。
  • サプライヤーサーバーとコンシューマーサーバーの間でレプリカ合意を作成している。
  • Web コンソールで Directory Server インスタンスにログインしている。

手順

  1. Replication メニューを開き、レプリケートする接尾辞を選択します。
  2. Agreements タブで、レプリカ合意の名前の横にあるオプションメニュー (⋮) をクリックし、Initialize Agreement を選択します。
  3. ポップアップウィンドウの Yes, I am sure チェックボックスをオンにして初期化を確定します。

    複製するデータ量によっては、初期化に時間がかかる場合があります。

検証

  • 初期化が正常に完了した場合、Last Init Status 列に Initialized 状態が表示されます。

9.4. インスタンスがオフラインのときにコンシューマーを初期化する

大規模なデータベースや多数のコンシューマーがある場合は、コマンドラインを使用して、オフライン初期化を行うことを検討してください。この手順には、サプライヤーサーバーからデータをエクスポートし、そのデータをコンシューマーサーバーにインポートすることが含まれます。

前提条件

  • サプライヤーサーバーとコンシューマーサーバーで dc=example,dc=com 接尾辞のレプリケーションを有効化している。
  • サプライヤーサーバーとコンシューマーサーバーの間でレプリカ合意を作成している。

手順

  1. サプライヤーサーバーで、次の手順を実行します。

    1. サプライヤー上のインスタンスをシャットダウンします。

      # dsctl <supplier_instance_name> stop
      Copy to Clipboard Toggle word wrap
    2. レプリケートする接尾辞を含む userRoot データベースを、レプリケーション情報を含む /var/lib/dirsrv/slapd-<supplier_instance_name>/ldif/example.ldif ファイルにエクスポートします。

      # dsctl <supplier_instance_name> db2ldif userRoot /var/lib/dirsrv/slapd-<supplier_instance_name>/ldif/example.ldif
      Copy to Clipboard Toggle word wrap
    3. サプライヤーでインスタンスを起動します。

      # dsctl <supplier_instance_name> start
      Copy to Clipboard Toggle word wrap
  2. コンシューマーサーバーで、次の手順を実行します。

    1. コンシューマー上のインスタンスをシャットダウンします。

      # dsctl <consumer_instance_name> stop
      Copy to Clipboard Toggle word wrap
    2. エクスポートされた example.ldif ファイルをコンシューマーの /var/lib/dirsrv/slapd-<consumer_instance_name>/ldif/ ディレクトリーにコピーします。
    3. /var/lib/dirsrv/slapd-<consumer_instance_name>/ldif/example.ldif ファイルから userRoot データベースをインポートします。dsctl ldif2db コマンドを使用してデータをインポートする方法の詳細は、サーバーがオフラインのときにコマンドラインを使用してデータをインポートする を参照してください。
    4. コンシューマー側でインスタンスを起動します。

      # dsctl <consumer_instance_name> start
      Copy to Clipboard Toggle word wrap

検証

  • 合意のステータスを表示します。

    # dsconf <supplier_instance_name> repl-agmt init-status --suffix "dc=example,dc=com" <supplier_consumer_agreement_name>
    Agreement successfully initialized.
    Copy to Clipboard Toggle word wrap

9.5. 初期化タイムアウトの設定

タイムアウトが原因で大規模なデータベースの初期化が失敗する場合は、次のいずれかのパラメーターをより長い期間または無期限に設定します。

  • サーバー上のすべてのレプリカ合意のタイムアウトを設定する、cn=config エントリーの nsslapd-idletimeout 設定パラメーター。
  • レプリケーションマネージャーの DN 内の nsIdleTimeout パラメーターは、このレプリケーションマネージャーエントリーを使用するすべての合意のタイムアウトを設定します。

前提条件

  • root 権限がある。

手順

  • タイムアウトをグローバルに無効にするには、nsslapd-idletimeout0 に設定します。

    # dsconf <instance_name> config replace nsslapd-idletimeout=0
    Successfully replaced value(s) for 'nsslapd-idletimeout': '0'
    Copy to Clipboard Toggle word wrap
  • cn=replication manager,cn=config エントリーのタイムアウトを無効にするには、以下のコマンドを実行します。

    # ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x
    password: <password>
    dn: cn=replication manager,cn=config
    changetype: modify
    add: nsIdleTimeout
    nsIdleTimeout: 0
    Copy to Clipboard Toggle word wrap

第10章 レプリケーショントポロジーからのインスタンスの削除

ハードウェアの停止や構造の変更など、特定の状況では、管理者はレプリケーショントポロジーから Directory Server インスタンスを削除します。インスタンスを削除する手順は、削除するレプリカのロールによって異なります。

10.1. レプリケーショントポロジーからのコンシューマーまたはハブの削除

レプリケーショントポロジーでコンシューマーまたはハブが不要になった場合は、これを削除します。

前提条件

  • 削除するインスタンスがコンシューマーまたはハブである。
  • 削除するホストがハブであり、トポロジー内の他のサーバーのサプライヤーとしても機能する場合、分離しないように、これらのサーバーにデータを複製するように他のサプライヤーまたはハブを設定している。

手順

  1. 削除するコンシューマーまたはハブ:

    1. 接尾辞とそれに対応するデータベースをリスト表示します。

      # dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix list
      dc=example,dc=com (userroot)
      Copy to Clipboard Toggle word wrap

      データベースの名前を書き留めます。

    2. データベースを読み取り専用モードに設定して、追加の更新を回避します。

      # dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix set --enable-readonly "userroot"
      Copy to Clipboard Toggle word wrap
  2. 削除するコンシューマーまたはハブとレプリカ合意を結んでいるすべてのサプライヤーで以下を実行します。

    1. レプリケートされる接尾辞のレプリカ合意をリスト表示します。

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt list --suffix "dc=example,dc=com"
      dn: cn=example-agreement,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
      cn: example-agreement
      ...
      Copy to Clipboard Toggle word wrap

      cn 属性には、次の手順に必要なレプリカ合意名が含まれます。

    2. レプリカ合意を削除します。

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt delete --suffix "dc=example,dc=com" example-agreement
      Copy to Clipboard Toggle word wrap
  3. コンシューマーまたはハブで、すべての接尾辞のレプリケーションを無効にします。

    # dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com replication disable --suffix "dc=example,dc=com"
    Copy to Clipboard Toggle word wrap

    このホストがハブの場合は、レプリケーションを無効にすると、このサーバーのこの接尾辞のすべてのレプリカ合意も自動的に削除されます。

次のステップ

  • 削除されたインスタンスをテスト目的に使用する場合は、読み取り専用モードを無効にします。

    # dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix set --disable-readonly userroot
    Copy to Clipboard Toggle word wrap
    重要

    テスト目的でトポロジーから削除したインスタンスを使用する場合は、クライアントが引き続き使用していないことを確認してください。

  • インスタンスを削除します。

    # dsctl instance_name remove --do-it
    Copy to Clipboard Toggle word wrap

10.2. レプリケーショントポロジーからのサプライヤーの削除

レプリケーショントポロジーからサプライヤーをきれいに削除することは、ハブまたはコンシューマーを削除するよりも複雑です。これは、トポロジー内のすべてのサプライヤーが他のサプライヤーに関する情報を保存し、サプライヤーが利用できない状態になった場合でも、その情報を保持するためです。

Directory Server は、レプリカ更新ベクトル (RUV) と呼ばれるメタデータセットに、レプリケーショントポロジーに関する情報を維持します。RUV には、ID と URL 等のサプライヤーに関する情報、ローカルサーバー上の最新の変更状態番号 (CSN)、および最初の変更の CSN などが含まれています。サプライヤーとコンシューマーはいずれも RUV 情報を保存し、これを使用してレプリケーションの更新を制御します。

サプライヤーを完全に削除するには、設定エントリーと共にそのメタデータを削除する必要があります。

前提条件

  • 削除するインスタンスがサプライヤーである。
  • 削除するホストがトポロジー内の他のサーバーのサプライヤーとしても機能する場合、分離しないように、これらのサーバーにデータを複製するように他のサプライヤーまたはハブを設定している。

手順

  1. 削除するサプライヤーで、以下を行います。

    1. 接尾辞とそれに対応するデータベースをリスト表示します。

      # dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix list
      dc=example,dc=com (userroot)
      Copy to Clipboard Toggle word wrap

      データベースの名前を書き留めます。

    2. データベースを読み取り専用モードに設定して、追加の更新を回避します。

      # dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix set --enable-readonly "userroot"
      Copy to Clipboard Toggle word wrap
    3. トポロジー内の他のすべてのサーバーが、このサプライヤーからすべてのデータを受け取るまで待ちます。確認のため、他のサーバーの CSN が、削除するサプライヤーの CSN と同等以上であることを確認します。

      # ds-replcheck online -D "cn=Directory Manager" -w password -m ldap://host-to-remove.example.com:389 -r ldap://server.example.com:389 -b dc=example,dc=com
      ================================================================================
               Replication Synchronization Report  (Tue Mar  5 09:46:20 2021)
      ================================================================================
      
      Database RUV's
      =====================================================
      
      Supplier RUV:
        {replica 1 ldap://host-to-remove.example.com:389} 5c7e8927000100010000 5c7e89a0000100010000
        {replicageneration} 5c7e8927000000010000
      
      Replica RUV:
        {replica 1 ldap://host-to-remove.example.com:389} 5c7e8927000100010000 5c7e8927000400010000
        {replica 2 ldap://server.example.com:389}
        {replicageneration} 5c7e8927000000010000
      Copy to Clipboard Toggle word wrap
    4. レプリカ ID を表示します。

      # dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com replication get --suffix "dc=example,dc=com" | grep -i "nsds5replicaid"
      nsDS5ReplicaId: 1
      Copy to Clipboard Toggle word wrap

      この例では、レプリカ ID は 1 です。この手順の最後のステップのレプリカ ID を書き留めます。

  2. 削除するホストとレプリカ合意があるすべてのサプライヤーで、以下を実施します。

    1. レプリケートされる接尾辞のレプリカ合意をリスト表示します。

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt list --suffix "dc=example,dc=com"
      dn: cn=example-agreement,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
      cn: example-agreement
      ...
      Copy to Clipboard Toggle word wrap

      cn 属性には、次の手順に必要なレプリカ合意名が含まれます。

    2. レプリカ合意を削除します。

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt delete --suffix "dc=example,dc=com" example-agreement
      Copy to Clipboard Toggle word wrap
  3. 削除するサプライヤーで、すべての接尾辞のレプリケーションを無効にします。

    # dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com replication disable --suffix "dc=example,dc=com"
    Copy to Clipboard Toggle word wrap

    レプリケーションを無効にすると、このサーバーのこの接尾辞のレプリカ合意もすべて自動的に削除されます。

  4. 次に進む前に、ds-replcheck 出力の Replica RUV セクションにリスト表示されているすべての Directory Server インスタンスがオンラインであることを確認します。
  5. トポロジー内の残りのサプライヤーのいずれかで、レプリカ ID の RUV をクリーンアップします。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-tasks cleanallruv --suffix "dc=example,dc=com" --replica-id 1
    Copy to Clipboard Toggle word wrap

    このコマンドでは、この手順の前のステップで表示されるレプリカ ID を指定する必要があります。

検証

  • ds-replcheck コマンドの出力で、削除したホストのレプリカ ID と URL を持つエントリーが残っていないことを確認します。

    # ds-replcheck online -D "cn=Directory Manager" -w password -m ldap://host-to-remove.example.com:389 -r ldap://server.example.com:389 -b dc=example,dc=com
    Copy to Clipboard Toggle word wrap

次のステップ

  • 削除されたインスタンスをテスト目的に使用する場合は、読み取り専用モードを無効にします。

    # dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix set --disable-readonly userroot
    Copy to Clipboard Toggle word wrap
    重要

    テスト目的でトポロジーから削除したインスタンスを使用する場合は、クライアントが引き続き使用していないことを確認してください。

  • インスタンスを削除します。

    # dsctl instance_name remove --do-it
    Copy to Clipboard Toggle word wrap

第11章 マルチサプライヤーレプリケーショントポロジーでのレプリカの独占の防止

マルチサプライヤーレプリケーショントポロジーでは、大規模な更新負荷のサプライヤーが、他のサプライヤーも更新できないようにレプリカを独占する場合があります。

このセクションでは、独占が発生する状況、この問題を特定する方法、独占状態を回避するためにサプライヤーを設定する方法を説明します。

11.1. 独占が発生する場合

マルチサプライヤーレプリケーションの機能の 1 つは、サプライヤーがレプリカへの排他的アクセスを取得することです。ロックアウト時にサプライヤーがアクセスの取得を試みると、レプリカはビジー応答を送り、サプライヤーは nsds5ReplicaBusyWaitTime パラメーターに設定した時間が待機してから次の試行を開始します。その間、サプライヤーは更新を別のレプリカに送信します。最初のレプリカが解放されると、サプライヤーはこのホストに更新を送ります。

ロックアウトされたサプライヤーが大規模な更新負荷の配下にある場合や、変更ログに保留中の更新が多数あると、問題になる場合があります。この状況では、ロックしているサプライヤーは更新の送信を終えると、すぐに同じレプリカの再取得を試みます。他のサプライヤーは依然として待機している可能性があるため、このような試行はほとんどの場合で成功します。nsds5ReplicaSessionPauseTime パラメーターで、2 つの更新セッション間で一時停止を設定できます。これにより、単一のサプライヤーが数時間またはそれ以上にわたってレプリカを独占することになります。

11.2. レプリカの独占を識別するためのレプリケーションロギングの有効化

1 つ以上のサプライヤーが頻繁に高い更新負荷にあり、レプリカが頻繁に更新を受信しない場合は、レプリケーションメッセージのロギングを有効にして、独占状態を特定します。

前提条件

  • レプリケーショントポロジーに複数のサプライヤーがある。

手順

  1. レプリケーションロギングを有効にします。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-errorlog-level=8192
    Copy to Clipboard Toggle word wrap

    このコマンドは、レプリケーションロギングのみを有効にし、他のエラーメッセージのロギングは無効である点に注意してください。

  2. /var/log/dirsrv/slapd-instance_name/errors ログファイルを監視し、以下のエラーメッセージを検索します。

    Replica Busy! Status: [Error (1) Replication error acquiring replica: replica busy]
    Copy to Clipboard Toggle word wrap

    Directory Server がしばしばこのエラーをログに記録することがある点に注意してください。ただし、レプリカが頻繁に更新を受信せず、サプライヤーがこのエラーをログに記録する場合は、設定を更新してこの問題を解決することを検討してください。

11.3. レプリカの独占を回避するためのサプライヤーの設定

この手順では、レプリカの独占を防ぐために、サプライヤーでパラメーターを設定する方法を説明します。

環境と負荷の違いにより、状況に関連するパラメーターのみを設定し、実際の環境に応じて値を調整します。

前提条件

  • レプリケーショントポロジーに複数のサプライヤーがある。
  • Directory Server が頻繁に Replica Busy!Status: [Error (1) Replication error acquiring replica: replica busy] エラーを記録する。

手順

  1. nsds5ReplicaBusyWaitTime パラメーターを設定し、レプリカがビジー応答を送信した後に、サプライヤーが再度レプリカへのアクセスの取得を試みるまでに待機する時間を設定します。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt set --suffix "dc=example,dc=com" --busy-wait-time 5 replication_agreement_name
    Copy to Clipboard Toggle word wrap

    このコマンドは、待機時間を 5 秒に設定します。この設定は、指定されたレプリカ合意にのみ適用されます。

  2. nsds5ReplicaSessionPauseTime パラメーターを設定して、2 つの更新セッション間でサプライヤーが待機する時間を設定します。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt set --suffix "dc=example,dc=com" --session-pause-time 15 replication_agreement_name
    Copy to Clipboard Toggle word wrap

    このコマンドは、一時停止を 15 秒に設定します。デフォルトでは、nsds5ReplicaSessionPauseTimensds5ReplicaBusyWaitTime の値よりも 1 秒長くなるように設計されています。この設定は、指定されたレプリカ合意にのみ適用されます。

  3. nsds5ReplicaReleaseTimeout パラメーターを設定して、更新の送信が完了したかどうかに関わらず、指定時間後にレプリケーションセッションを終了します。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication set --suffix "dc=example,dc=com" --repl-release-timeout 90
    Copy to Clipboard Toggle word wrap

    このコマンドは、タイムアウトを 90 秒に設定します。この設定は、指定した接尾辞のすべてのレプリカ合意に適用されます。

  4. オプション: サプライヤーのタイムアウト期間を設定して、低速または切断された接続を介して更新を無限に送信しようとするコンシューマーに接続されたままにならないようにします。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt set --conn-timeout 600 --suffix "dc=example,dc=com" replication_agreement_name
    Copy to Clipboard Toggle word wrap

    このコマンドは、タイムアウトを 600 秒 (10 分) に設定します。最適な値を特定するには、アクセスログでレプリケーションプロセスにかかる平均時間を確認し、それに応じてタイムアウト期間を設定します。

通常のメンテナンスでレプリケーションに関連する Directory Server インスタンスを停止する場合、インスタンスがオンラインに戻ったら、サプライヤーは直ちにディレクトリーデータを更新する必要があります。この更新は、コマンドラインおよび Web コンソールを使用して強制できます。

12.1. コマンドラインを使用したレプリケーション更新の強制

サプライヤーで以下の手順を実行し、example-agreementdc=example,dc=com 接尾辞のレプリケーション更新を強制します。

前提条件

  • レプリケーションが設定されている。
  • コンシューマーが初期化されている。

手順

  1. レプリカ合意に更新スケジュールが設定されているかどうかを確認します。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt get --suffix "dc=example,dc=com" example-agreement
    Copy to Clipboard Toggle word wrap

    コマンドの出力に nsDS5ReplicaUpdateSchedule: * が含まれている、または nsDS5ReplicaUpdateSchedule パラメーターが存在しない場合、更新スケジュールは設定されていません。

    nsDS5ReplicaUpdateSchedule に、以下のようなスケジュールが含まれる場合には、値を書き留めておきます。

    nsDS5ReplicaUpdateSchedule: 0800-2200 0246
    Copy to Clipboard Toggle word wrap
  2. 更新スケジュールが設定されている場合は、以下のコマンドを実行して一時的に無効にします。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt set --schedule \ --suffix "dc=example,dc=com" example-agreement*
    Copy to Clipboard Toggle word wrap
  3. レプリカ合意を一時的に無効にします。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt disable --suffix "dc=example,dc=com" example-agreement
    Copy to Clipboard Toggle word wrap
  4. レプリカ合意を再度有効にして、レプリケーションの更新を強制的に実行します。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt enable --suffix "dc=example,dc=com" example-agreement
    Copy to Clipboard Toggle word wrap
  5. この手順の最初にレプリケーションスケジュールが設定されていた場合、スケジュールを以前の値に設定します。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt set --schedule "0800-2200 0246" --suffix "dc=example,dc=com" example-agreement
    Copy to Clipboard Toggle word wrap

検証

  • レプリケーションのステータスを表示します。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt status --suffix "dc=example,dc=com" example-agreement
    ...
    Last Update Start: 20210406120631Z
    Last Update End: 20210406120631Z
    Last Update Status: Error (0) Replica acquired successfully: Incremental update succeeded
    ...
    Copy to Clipboard Toggle word wrap

12.2. Web コンソールを使用したレプリケーション更新の強制

サプライヤーで以下の手順を実行し、レプリケーション更新を強制します。

前提条件

  • レプリケーションが設定されている。
  • コンシューマーが初期化されている。
  • Web コンソールでインスタンスにログインしている。

手順

  1. Replication メニューを開きます。
  2. dc=example,dc=com 接尾辞を選択します。
  3. Agreements タブを開きます。
  4. レプリカ合意に更新スケジュールが設定されているかどうかを確認します。

    1. 契約の横にあるオーバーフローメニューをクリックし、Edit Agreement を選択します。
    2. Scheduling タブで、現在設定されている値をメモします。

      Use A Custom Schedule が選択されていない場合、スケジュールは設定されません。

  5. レプリカ合意の横にあるオーバーフローメニューをクリックし、Disable/Enable Agreement を選択して合意を無効にします。

    State 列の合意のステータスが Disabled になります。

  6. レプリカ合意の横にあるオーバーフローメニューをもう一度クリックし、Disable/Enable Agreement を選択して、レプリカ合意を再度有効にし、レプリケーションの更新を適用します。

    State 列の合意のステータスが Enabled になります。

  7. この手順の最初にレプリケーションスケジュールが設定されていた場合、スケジュールを以前の値に設定します。

    1. オーバーフローメニューをクリックし、ActionsEdit Agreement を選択します。
    2. Scheduling タブで、以前の値を設定します。

検証

  • レプリケーションのステータスを表示します。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt status --suffix "dc=example,dc=com" example-agreement
    ...
    Last Update Start: 20210406120631Z
    Last Update End: 20210406120631Z
    Last Update Status: Error (0) Replica acquired successfully: Incremental update succeeded
    ...
    Copy to Clipboard Toggle word wrap

第13章 レプリカのロールの変更

レプリケーショントポロジーでは、レプリカのロールを変更できます。たとえば、ハードウェアの停止によりサプライヤーが利用できない場合は、コンシューマーをサプライヤーにプロモートできます。逆に、ハードウェアリソースが少ないサプライヤーをコンシューマーにデモートし、その後新しいハードウェアを持つ別のサプライヤーを追加することもできます。

13.1. コマンドラインを使用したレプリカのプロモート

以下のようにプロモートできます。

  • コンシューマーをハブまたはサプライヤーへ
  • ハブをサプライヤーへ

本セクションでは、dc=example,dc=com 接尾辞のレプリカをプロモートする方法を説明します。

前提条件

  • Directory Server インスタンスがレプリケーショントポロジーのメンバーである。
  • プロモートするレプリカがコンシューマーまたはハブである。

手順

  1. プロモートするレプリカがレプリカ合意を持つハブで、ハブがプロモート後にデータを他のホストに送信しないようにするには、レプリカ合意を削除します。

    1. ハブのレプリカ合意をリスト表示します。

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt list --suffix "dc=example,dc=com"
      dn: cn=example-agreement,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
      cn: example-agreement
      ...
      Copy to Clipboard Toggle word wrap

      cn 属性には、次の手順に必要なレプリカ合意名が含まれます。

    2. ハブからレプリカ合意を削除します。

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt delete --suffix "dc=example,dc=com" example-agreement
      Copy to Clipboard Toggle word wrap
  2. インスタンスをプロモートします。

    • コンシューマーまたはハブをサプライヤーにプロモートする場合は、以下を入力します。

      # dsconf -D "cn=Directory Manager" ldap://server.example.com replication promote --suffix "dc=example,dc=com" --newrole "supplier" --replica-id 2
      Copy to Clipboard Toggle word wrap
      重要

      トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は 1 から 65534 の間の一意の整数値である必要があります。

    • コンシューマーをハブにプロモートする場合は、以下を入力します。

      # dsconf -D "cn=Directory Manager" ldap://server.example.com replication promote --suffix "dc=example,dc=com" --newrole "hub"
      Copy to Clipboard Toggle word wrap
  3. 新しいロールのレプリカがトポロジー内の他のホストに更新を送信する必要がある場合は、レプリカ合意を作成します。

13.2. Web コンソールを使用したレプリカのプロモート

以下のようにプロモートできます。

  • コンシューマーをハブまたはサプライヤーへ
  • ハブをサプライヤーへ

本セクションでは、dc=example,dc=com 接尾辞のレプリカをプロモートする方法を説明します。

前提条件

  • Directory Server インスタンスがレプリケーショントポロジーのメンバーである。
  • プロモートするレプリカがコンシューマーまたはハブである。
  • Web コンソールでインスタンスにログインしている。

手順

  1. プロモートするレプリカがレプリカ合意を持つハブで、ハブがプロモート後にデータを他のホストに送信しないようにするには、レプリカ合意を削除します。

    1. ReplicationAgreements に移動します。
    2. 削除する合意の横にある Actions をクリックし、Delete Agreement を選択します。
  2. ReplicationConfiguration に移動し、Change Role ボタンをクリックします。

    • コンシューマーまたはハブをサプライヤーにプロモートする場合は、Supplier を選択して一意のレプリカ ID を入力します。

      重要

      トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は 1 から 65534 の間の一意の整数値である必要があります。

    • コンシューマーをハブにプロモートする場合は、Hub を選択します。
  3. Yes, I am sure. を選択します。
  4. Change Role をクリックします。
  5. 新しいロールのレプリカがトポロジー内の他のホストに更新を送信する必要がある場合は、レプリカ合意を作成します。

13.3. コマンドラインを使用したレプリカのデモート

以下のようにデモートできます。

  • サプライヤーまたはハブをコンシューマーへ
  • ハブをコンシューマーへ

本セクションでは、dc=example,dc=com 接尾辞のレプリカをデモートする方法を説明します。

前提条件

  • Directory Server インスタンスがレプリケーショントポロジーのメンバーである。
  • デモートするレプリカがサプライヤーまたはハブである。

手順

  1. デモートするレプリカに必要なくなったレプリカ合意がある場合は、たとえばレプリカをコンシューマーにデモートする場合、レプリカ合意を削除します。

    1. レプリカのレプリカ合意をリスト表示します。

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt list --suffix "dc=example,dc=com"
      dn: cn=example-agreement,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
      cn: example-agreement
      ...
      Copy to Clipboard Toggle word wrap

      cn 属性には、次の手順に必要なレプリカ合意名が含まれます。

    2. レプリカからレプリカ合意を削除します。

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt delete --suffix "dc=example,dc=com" example-agreement
      Copy to Clipboard Toggle word wrap
  2. インスタンスをデモートします。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication demote --suffix "dc=example,dc=com" --newrole "hub_or_consumer"
    Copy to Clipboard Toggle word wrap

    設定するロールに応じて --newrole パラメーターを hub または consumer に設定します。

  3. レプリカをハブとして設定していて、トポロジー内の他のホストに更新を送信する必要がある場合は、レプリカ合意を作成します。

13.4. Web コンソールを使用したレプリカのデモート

以下のようにデモートできます。

  • サプライヤーまたはハブをコンシューマーへ
  • ハブをコンシューマーへ

本セクションでは、dc=example,dc=com 接尾辞のレプリカをデモートする方法を説明します。

前提条件

  • Directory Server インスタンスがレプリケーショントポロジーのメンバーである。
  • デモートするレプリカがサプライヤーまたはハブである。
  • Web コンソールでインスタンスにログインしている。

手順

  1. デモートするレプリカに必要なくなったレプリカ合意がある場合は、たとえばレプリカをコンシューマーにデモートする場合、レプリカ合意を削除します。

    1. ReplicationAgreements に移動します。
    2. 削除する合意の横にある Actions をクリックし、Delete Agreement を選択します。
  2. ReplicationConfiguration に移動し、Change Role ボタンをクリックします。
  3. 新しいレプリカロールを選択します。
  4. Yes, I am sure. を選択します。
  5. Change Role をクリックします。
  6. 新しいロールのレプリカがトポロジー内の他のホストに更新を送信する必要がある場合は、レプリカ合意を作成します。

第14章 レプリケーション変更ログのトリミング

Directory Server の changelog は、受け取ったおよび処理された変更のリストを管理します。これには、クライアントの変更やレプリケーションパートナーから受け取った変更が含まれます。

デフォルトでは、Directory Server は 7 日より古い changelog エントリーを削除します。ただし、次のように設定できます。

  • nsslapd-changelogmaxage パラメーター: 変更ログのエントリーの最大期間
  • nsslapd-changelogmaxentries パラメーター: 変更ログにおけるレコードの合計数。

これらの設定の少なくとも 1 つを有効にした場合、ディレクトリーサーバーはデフォルトで 5 分ごとに変更ログをトリミングします (nsslapd-changelogtrim-interval)。

トリミング設定が有効であっても、どのレコードも、その後に作成されたレコードも、トポロジー内のすべてのサーバーに正常にレプリケートされるまで、changelog に残ります。レプリケーショントポロジーからサプライヤーを削除する の説明に従ってトポロジーからサプライヤーを削除すると、ディレクトリーサーバーはこのサプライヤーのすべての更新を他のサーバーの変更ログから削除します。

14.1. コマンドラインを使用したレプリケーション changelog トリミングの設定

Directory Server は、デフォルトで 7 日より古い changelog エントリーを削除します。ただし、Directory Server がエントリーを削除するまでの時間を設定できます。エントリー数が設定値を超えた場合にエントリーを自動的に削除するように Directory Server を設定することもできます。

このセクションでは、dc=example,dc=com 接尾辞の changelog のトリミングを設定する方法を説明します。

注記

Red Hat は、最大エントリー数ではなく、最長期間を設定することを推奨します。最長期間は、cn=replica,cn=suffixDN,cn=mapping tree,cn=config エントリーの nsDS5ReplicaPurgeDelay パラメーターに設定されたレプリケーションパージ遅延と一致する必要があります。

サプライヤーでこの手順を実行します。

前提条件

  • dc=example,dc=com 接尾辞のレプリケーションを有効にしている。

手順

  1. 変更ログのトリミングを設定します。

    • changelog エントリーの最長期間を設定するには、以下を入力します。

      # dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --suffix "dc=example,dc=com" --max-age "4w"
      Copy to Clipboard Toggle word wrap

      このコマンドは、最長期間を 4 週間に設定します。パラメーターは、以下の単位をサポートします。

      • s (S) (秒)
      • m (M) (分)
      • h (H) (時間)
      • d (D) (日)
      • w (W) (週)
    • エントリーの最大数を設定するには、以下を入力します。

      # dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --suffix "dc=example,dc=com" --max-entries "100000"
      Copy to Clipboard Toggle word wrap

      このコマンドは、changelog のエントリーの最大数を 100,000 に設定します。

  2. デフォルトでは、Directory Server は changelog を 5 分 (300 秒) ごとにトリミングします。別の間隔を設定するには、以下を入力します。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --suffix "dc=example,dc=com" --trim-interval 600
    Copy to Clipboard Toggle word wrap

    このコマンドは、間隔を 10 分 (600 秒) に設定します。

検証

  • 接尾辞の changelog 設定を表示します。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication get-changelog --suffix "dc=example,dc=com"
    dn: cn=changelog,cn=userroot,cn=ldbm database,cn=plugins,cn=config
    cn: changelog
    nsslapd-changelogmaxage: 4w
    nsslapd-changelogtrim-interval: 600
    ...
    Copy to Clipboard Toggle word wrap

    このコマンドは、デフォルトとは異なるパラメーターのみを表示します。

14.2. 大規模な changelog の手動によるサイズ縮小

レプリケーション changelog のトリミングが有効になっていない場合など、特定の状況では、changelog が過度に大きなサイズに増大する可能性があります。これを修正するには、changelog のサイズを手動で減らすことができます。

この手順では、dc=example,dc=com 接尾辞の変更ログをトリミングする方法を説明します。サプライヤーでこの手順を実行します。

前提条件

  • dc=example,dc=com 接尾辞のレプリケーションを有効にしている。

手順

  1. オプション: changelog のサイズを表示します。

    1. dc=example,dc=com 接尾辞のバックエンドデータベースを特定します。

      # dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list
      dc=example,dc=com (userroot)
      Copy to Clipboard Toggle word wrap

      括弧内の名前は、対応する接尾辞のデータを保存するバックエンドデータベースです。

    2. userroot バックエンドの変更ログファイルのサイズを表示します。

      # ls -lh /var/lib/dirsrv/slapd-instance_name/db/userroot/replication_changelog.db
      -rw-------. 1 dirsrv dirsrv 517M Jul  5 12:58 /var/lib/dirsrv/slapd-instance_name/db/userroot/replication_changelog.db
      Copy to Clipboard Toggle word wrap
  2. changelog サイズを縮小した後にパラメーターをリセットできるようにするには、対応するパラメーターの現在の値を表示して書き留めます。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication get-changelog --suffix "dc=example,dc=com"
    dn: cn=changelog,cn=userroot,cn=ldbm database,cn=plugins,cn=config
    cn: changelog
    nsslapd-changelogmaxage: 4w
    nsslapd-changelogtrim-interval: 300
    Copy to Clipboard Toggle word wrap

    出力に特定の属性が表示されない場合、Directory Server はデフォルト値を使用します。

  3. 一時的に、トリミングに関連するパラメーターを減らします。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --suffix "dc=example,dc=com" --max-age "300s" --max-entries 500 --trim-interval 60
    Copy to Clipboard Toggle word wrap
    重要

    パフォーマンス上の理由から、短い間隔設定を永続的に使用しないでください。

  4. --trim-interval パラメーターに設定した時間が経過するのを待ちます。
  5. changelog を圧縮して、ディスク領域を再度確保します。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend compact-db --only-changelog
    Copy to Clipboard Toggle word wrap
  6. changelog パラメーターを、一時的に減らす前の値にリセットします。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --suffix "dc=example,dc=com" --max-age "4w" --trim-interval 300
    Copy to Clipboard Toggle word wrap

検証

  • changelog のサイズを表示します。

    # ls -lh /var/lib/dirsrv/slapd-instance_name/db/userroot/replication_changelog.db
    -rw-------. 1 dirsrv dirsrv 12M Jul  5 12:58 /var/lib/dirsrv/slapd-instance_name/db/userroot/replication_changelog.db
    Copy to Clipboard Toggle word wrap

第15章 レプリケーション changelog の暗号化

攻撃者がサーバーのファイルシステムにアクセスできる場合は、レプリケーション changelog を暗号化してインスタンスのセキュリティーを強化します。

changelog 暗号化は、サーバーの TLS 暗号化キーと同じ PIN を使用してキーのロックを解除します。サーバーの起動時に PIN を手動で入力するか、PIN ファイルを使用する必要があります。

Directory Server は、無作為に生成された対称暗号キーを使用して、changelog を暗号化および復号化します。サーバーは、設定された暗号ごとに異なるキーを使用します。これらの鍵は、サーバーの TLS 証明書から公開鍵を使用してラップされ、生成したラップ済みキーがサーバーの設定ファイル内に保存されます。属性暗号化の効果的な強度は、ラップに使用されるサーバーの TLS キーの強度と同じです。サーバーの秘密鍵と PIN にアクセスできないと、ラップ済みのコピーから対称キーを復旧することができません。

15.1. コマンドラインを使用した changelog の暗号化

レプリケーショントポロジーのセキュリティーを向上させるには、サプライヤーおよびハブの changelog を暗号化します。この手順では、dc=example,dc=com 接尾辞に対して changelog 暗号化を有効にする方法を説明します。

前提条件

  • サーバーの TLS 暗号化が有効になっている。
  • ホストは、レプリケーショントポロジー内のサプライヤーまたはハブです。

手順

  1. changelog(例: /tmp/changelog.ldif ファイル) をエクスポートします。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication export-changelog to-ldif -o /tmp/changelog.ldif -r "dc=example,dc=com"
    Copy to Clipboard Toggle word wrap
  2. dc=example,dc=com 接尾辞の変更ログの暗号化を有効にします。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication --suffix "dc=example,dc=com" --encrypt
    Copy to Clipboard Toggle word wrap
  3. /tmp/changelog.ldif ファイルから changelog をインポートします。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication import-changelog from-ldif -r "dc=example,dc=com" /tmp/changelog.ldif
    Copy to Clipboard Toggle word wrap
  4. インスタンスを再起動します。

    # dsctl instance_name restart
    Copy to Clipboard Toggle word wrap

検証

  1. エントリーの更新など、LDAP ディレクトリーに変更を加えます。
  2. インスタンスを停止します。

    # dsctl instance_name stop
    Copy to Clipboard Toggle word wrap
  3. 接尾辞とそれに対応するデータベースをリスト表示します。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list
    dc=example,dc=com (userroot)
    Copy to Clipboard Toggle word wrap

    changelog の暗号化を有効にするデータベースの名前を書き留めておきます。

  4. 以下のコマンドを実行して、changelog の一部を表示します。

    # dbscan -f /var/lib/dirsrv/slapd-instance_name/db/userroot/replication_changelog.db | tail -50
    Copy to Clipboard Toggle word wrap

    changelog が暗号化されている場合は、暗号化されたデータのみが表示されます。

  5. インスタンスを起動します。

    # dsctl instance_name start
    Copy to Clipboard Toggle word wrap

第17章 部分レプリケーションでの属性の管理

部分レプリケーションでは、Directory Server がサプライヤーからコンシューマー (または別のサプライヤー) に複製しない属性を設定します。したがって、Directory Server は、データベースに含まれるすべての情報や各エントリーのすべての情報を複製せずにデータベースを複製できるため、サーバーのパフォーマンスとセキュリティーが向上します。

次の場合には部分レプリケーションを使用します。

  • 低速ネットワーク経由で送信されるサイズが大きい属性の数を制限する。
  • Directory Server が memberOf の計算などの修正タスクを実行する回数を減らす。
  • コンシューマーサーバーが信頼できないネットワーク上に配置されている場合は、機密属性をレプリケーションから除外する必要がある。

部分レプリケーションは、エントリーごとではなく、レプリカ合意ごとに有効化および設定されます。レプリケーションから属性を除外すると、レプリカ合意の範囲内のすべてのエントリーに等しく適用されます。増分更新 (nsDS5ReplicatedAttributeList) と全体更新 (nsDS5ReplicatedAttributeListTotal) に対して複製するさまざま属性を設定し、部分レプリケーション (nsds5ReplicaStripAttrs) 時に、空の更新を防ぐことができます。

部分レプリケーションパラメーターはレプリカ合意の一部であり、レプリカ合意の作成時にコマンドラインを使用して、または Web コンソールのレプリカ合意ウィザードでこれらのパラメーターを設定できます。

17.1. コマンドラインを使用して、合計更新と増分更新から属性を除外する

基本的なシナリオでは、部分レプリケーションでは、合計更新と増分更新から同じ属性リストを除外します。ただし、次の設定属性を使用して、パフォーマンス上の理由から、増分更新と全体更新からさまざまな属性を除外するように Directory Server を設定できます。

nsDS5ReplicatedAttributeList
これは主要な部分レプリケーション属性です。nsDS5ReplicatedAttributeList のみを設定すると、Directory Server は指定された属性を増分更新と全体更新の両方から除外します。
nsDS5ReplicatedAttributeListTotal
この部分レプリケーション属性は、Directory Server が全体 (初期) 更新からのみ除外する必要がある属性のリストを指定します。

たとえば、エントリーに memberOf 属性を追加するたびに、Directory Server は memberOf 修正タスクを実行してグループメンバーシップを解決します。レプリケーションが発生するたびに Directory Server がタスクを実行すると、サーバーにオーバーヘッドが発生する可能性があります。合計の更新は、レプリケーションに新たに追加されたり、長期間オフラインになったデータベースでのみ実行されるため、合計更新後に memberOf 修正タスクを実行することは、許容可能なオプションです。この場合、nsDS5ReplicatedAttributeList 属性には memberOf が含まれており、増分更新から除外されますが、nsDS5ReplicatedAttributeListTotal には memberOf が含まれていないため、合計更新に含まれます。

次の手順では、増分更新と全体更新からさまざまな属性を除外します。

前提条件

  • dc=example,dc=com 接尾辞を複製し、レプリカ合意 example_agreement が存在する。

手順

  1. dsconf ユーティリティーを使用して部分レプリケーションを設定します。

    # dsconf -D "cn=Directory Manager" instance_name repl-agmt set example_agreement --suffix="dc=example,dc=com" --frac-list="authorityRevocationList accountUnlockTime memberof" --frac-list-total="accountUnlockTime"
    Copy to Clipboard Toggle word wrap

    このコマンドは、authorityRevocationListaccountUnlockTimememberof 属性を増分更新から除外し、accountUnlockTime のみを合計更新から除外します。

    注記
    合計更新と増分更新から同じ属性のリストを除外する場合は、the-- frac-list オプションを使用して、除外される属性のリストnsDS5ReplicatedAttributeList 設定属性にのみ追加します。
  2. オプション: 空のレプリケーション更新を防ぐ場合は、--strip-list オプションを使用して、Directory Server がレプリケーションから削除する属性を追加します。詳細は、部分レプリケーションでの空の更新の防止 を参照してください。

検証

  • レプリカ合意設定を表示します。

    # dsconf instance_name repl-agmt list --suffix=dc=example,dc=com | grep -i nsDS5ReplicatedAttributeList
    
    nsDS5ReplicatedAttributeList: (objectclass=) $ EXCLUDE authorityRevocationList accountUnlockTime memberof nsDS5ReplicatedAttributeListTotal: (objectclass=) $ EXCLUDE accountUnlockTime
    Copy to Clipboard Toggle word wrap
    重要
    nsDS5ReplicatedAttributeListnsDS5ReplicatedAttributeListTotal の値には (objectclass=*) $ EXCLUDE 部分が含まれている必要があります。たとえば、ldapmodify ユーティリティーを使用して属性を直接編集する場合は、除外する属性のリストとともにこの部分を指定する必要があります。
  • nsDS5ReplicatedAttributeList
  • nsDS5ReplicatedAttributeListTotal

17.2. Web コンソールを使用して、合計更新と増分更新から属性を除外する

基本的なシナリオでは、部分レプリケーションでは、合計更新と増分更新から同じ属性リストを除外します。ただし、パフォーマンス上などの理由で、増分更新からさまざまな属性を除外するように Directory Server を設定できます。

前提条件

  • dc=example,dc=com 接尾辞を複製し、レプリカ合意 example_agreement が存在する。

手順

  1. ReplicationAgreements に移動します。
  2. 部分レプリケーションを設定する合意の Options メニュー (⫶) をクリックし、Edit を選択してウィザードウィンドウを開きます。
  3. Fractional Settings タブを開き、次のフィールドを設定します。

    • 合計更新と増分更新から同じ属性を除外する場合は、これらの属性を Exclude Attributes フィールドにのみ追加します。
    • 合計更新と増分更新から異なる属性を除外する場合:

      1. 増分更新から除外される属性を、nsDS5ReplicatedAttributeList パラメーターを設定する 除外属性 フィールドに追加します。
      2. 合計 (初期) 更新から除外される属性を、nsDS5ReplicatedAttributeListTotal パラメーターを設定する Exclude Init Attributes フィールドに追加します。
  4. オプション: 空のレプリケーション更新を防止する場合は、Directory Server がレプリケーションから削除する属性を Strip Attributes フィールドに追加します。
  5. Save Agreement ボタンをクリックします。

検証

  • 変更を表示するには、レプリカ合意設定を開きます。

17.3. 部分レプリケーションにおける空の更新の防止

部分レプリケーションでは、レプリケーション更新から属性が除外されます (nsDS5ReplicatedAttributeListnsDS5ReplicatedAttributeListTotal)。しかし、除外された属性への変更があっても、修正イベントが発生し、空のレプリケーション更新が生成されます。

空の更新を防ぐには、Directory Server が空のレプリケーションイベントで送信せず、更新シーケンスから削除する属性のリストを追加する nsds5ReplicaStripAttrs パラメーターを使用します。これには論理的に、modifiersName のような操作属性が含まれる必要があります。レプリケーションイベントが空でない場合、Directory Server は削除された属性を他の変更とともに複製します。

たとえば、accountUnlockTime 属性をレプリケーションから除外しました。ロックされたユーザーの場合、accountUnlockTime で設定された期間が経過すると、Directory Server は自動的にユーザーのロックを解除します。accountUnlockTime 属性のみが変更され、その属性はレプリケーションから除外されます。ただし、このロック解除イベントは、操作属性 internalmodifytimestamp も変更します。これにより、ユーザーアカウントが変更されたため、レプリケーションイベントがトリガーされます。ただし、複製されるデータは新しい変更タイムスタンプのみであり、それ以外の場合は更新は空になります。ログイン時間やパスワードの有効期限に関連する属性が多数ある場合、空のレプリケーション更新が多数作成され、サーバーのパフォーマンスに悪影響を与えたり、関連するアプリケーションに干渉したりする可能性があります。

次の手順では、空の更新を防ぐために不要な属性を削除します。

前提条件

  • dc=example,dc=com 接尾辞を複製し、レプリカ合意 example_agreement が存在する。

手順

  1. dsconf ユーティリティーを使用して部分レプリケーションを調整します。

    # dsconf -D "cn=Directory Manager" instance_name repl-agmt set example_agreement \
        --suffix="dc=example,dc=com" --strip-list="modifiersname \
        modifytimestamp internalmodifiersname"
    Successfully updated agreement
    Copy to Clipboard Toggle word wrap

検証

  • レプリカ合意設定を表示します。

    # dsconf instance_name repl-agmt list --suffix=dc=example,dc=com | grep -i nsds5ReplicaStripAttrs
    nsds5ReplicaStripAttrs: modifiersname modifytimestamp internalmodifiersname
    Copy to Clipboard Toggle word wrap

17.4. レプリケーション keep-alive エントリーの表示

レプリケーショントポロジー内のサプライヤーの属性を更新すると、サプライヤーの changelog 変更シーケンス番号 (CSN) が増加します。次に、サプライヤーは最初のコンシューマーに接続し、ローカル CSN をコンシューマーの CSN と比較します。ローカル CSN の方が低い場合は、ローカルの changelog から更新内容を取得し、コンシューマーにレプリケートします。部分レプリケーションが有効になっているレプリケーショントポロジーでは、これが問題を引き起こす可能性があります。たとえば、レプリケーションから除外されている属性のみがサプライヤー上で更新された場合、レプリケートする更新は見つからないため、コンシューマー上で CSN は更新されません。さらに、サプライヤーの更新を不必要に検索すると、他のサーバーが必要な時間よりも遅れてデータを受信する可能性があります。この問題を回避するために、Directory Server ではキープアライブエントリーを使用します。

サプライヤー上の更新された属性がすべてレプリケーションから除外され、スキップされた更新の数が 100 を超える場合、Directory Server はサプライヤー上の keepalivetimestamp 属性を更新して、コンシューマーにレプリケートし、コンシューマー上の CSN を変更します。これで、コンシューマーの CSN はサプライヤーの CSN と等しくなり、次にサプライヤーがコンシューマーに接続するときには、コンシューマーの CSN よりも新しい更新のみが検索されます。これにより、サプライヤーが送信する新しい更新情報を検索するために費やす時間が短縮されます。

Directory Server は、次の状況でサプライヤーのレプリケーション keep-alive エントリーを自動的に作成または更新します。

  • 一部レプリカ合意が 100 を超える更新を省略し、レプリケーションセッションの終了前に更新を送信しません。
  • サプライヤーがコンシューマーを初期化すると、最初に独自のキープアライブエントリーを作成します。サプライヤーでもあるコンシューマーは、別のコンシューマーも初期化しない限り、独自のキープアライブエントリーを作成しません。

次の手順では、レプリケーションの問題を解決するために使用できる keep-alive エントリーの詳細を検索します。

前提条件

  • Directory Manager のパスワード

手順

  1. ldapsearch ユーティリティーを使用して、keep-alive エントリーを見つけます。

    # ldapsearch -D "cn=Directory Manager" -b "dc=example,dc=com" -W -H ldap://server.example.com -x 'objectClass=ldapsubentry'
    Enter LDAP Password: password
    
    # repl keep alive 1, example.com
    dn: cn=repl keep alive 1,dc=example,dc=com
    keepalivetimestamp: 20250204204708Z
    objectClass: top
    objectClass: ldapsubentry
    objectClass: extensibleObject
    cn: repl keep alive 1
    Copy to Clipboard Toggle word wrap

    各 keep-alive エントリーは特定のサプライヤーに固有であり、識別名 (DN) にサプライヤーのレプリカ ID が含まれます。この例では、レプリカ ID は 1 です。

第18章 コマンドラインを使用したレプリケーショントポロジーの監視

サプライヤー、コンシューマー、およびハブの間のディレクトリーデータレプリケーションの状態を監視するには、レプリケーションの進行状況、レプリカ ID、変更の数、およびその他のパラメーターに関する情報を提供するレプリケーショントポロジーレポートを使用できます。レポートをより速く生成して読みやすくするために、独自の認証情報およびエイリアスを設定できます。

18.1. コマンドラインを使用したレプリケーショントポロジーレポートの表示

レプリケーショントポロジー内の各合意のレプリケーションステータスに関する全体的な情報を表示するには、レプリケーショントポロジーレポートを表示できます。これを行うには、dsconf replication monitor コマンドを使用します。

前提条件

  • ホストがレプリケーショントポロジーのメンバーである。
  • コンシューマーを初期化している。

手順

  • レプリケーショントポロジーレポートを表示するには、次のように入力します。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication monitor
    Copy to Clipboard Toggle word wrap

    dsconf ユーティリティーは、トポロジー内の各インスタンスの認証情報を要求します。

    Enter password for cn=Directory Manager on ldap://supplier.example.com: password
    Enter a bind DN for consumer.example.com:389: cn=Directory Manager
    Enter a password for cn=Directory Manager on consumer.example.com:389: password
    
    Supplier: server.example.com:389
    --------------------------------
    Replica Root: dc=example,dc=com
    Replica ID: 1
    Replica Status: Online
    Max CSN: 5e3acb77001d00010000
    
    Status For Agreement: "example-agreement" (consumer.example.com:1389)
    Replica Enabled: on
    Update In Progress: FALSE
    Last Update Start: 20211209122116Z
    Last Update End: 20211209122116Z
    Number Of Changes Sent: 1:21/0
    Number Of Changes Skipped: None
    Last Update Status: Error (0) Replica acquired successfully: Incremental update succeeded
    Last Init Start: 20211209122111Z
    Last Init End: 20211209122114Z
    Last Init Status: Error (0) Total update succeeded
    Reap Active: 0
    Replication Status: In Synchronization
    Replication Lag Time: 00:00:00
    
    Supplier: consumer.example.com:1389
    -----------------------------------
    Replica Root: dc=example,dc=com
    Replica ID: 65535
    Replica Status: Online
    Max CSN: 00000000000000000000
    Copy to Clipboard Toggle word wrap

18.2. .dsrc ファイルでのレプリケーション監視の認証情報の設定

デフォルトでは、dsconf replication monitor コマンドは、リモートインスタンスに対して認証する際に、バインド DN およびパスワードを要求します。将来、レポートをより速く簡単に生成するために、ユーザーの ~/.dsrc ファイルで、トポロジー内のサーバーごとにバインド DN と任意でパスワードを設定できます。

前提条件

  • ホストがレプリケーショントポロジーのメンバーである。
  • コンシューマーを初期化している。

手順

  1. オプション: ~/.dsrc ファイルを作成します。
  2. ~/.dsrc ファイルで、バインド DN およびパスワードを設定します。以下に例を示します。

    [repl-monitor-connections]
    connection1 = server1.example.com:389:cn=Directory Manager:*
    connection2 = server2.example.com:389:cn=Directory Manager:[~/pwd.txt]
    connection3 = hub1.example.com:389:cn=Directory Manager:S3cret
    Copy to Clipboard Toggle word wrap

    この例では、connection1 から connection3 を各エントリーのキーとして使用します。ただし、任意の一意のキーを使用できます。

    dsconf replication monitor コマンドを実行すると、dsconf ユーティリティーはインスタンスのレプリカ合意で設定されたすべてのサーバーに接続します。このユーティリティーが ~/.dsrc でホスト名を見つけると、定義された認証情報を使用してリモートサーバーに対して認証されます。上記の例では、dsconf はサーバーへの接続時に以下の認証情報を使用します。

    Expand
    ホスト名バインド DNパスワードの設定方法

    server1.example.com

    cn=Directory Manager

    パスワードを要求する

    server2.example.com

    cn=Directory Manager

    ~/pwd.txt からパスワードを読み取る

    hub1.example.com

    cn=Directory Manager

    S3cret

検証

18.3. レプリケーショントポロジーモニタリング出力でのエイリアスの使用

レポートを読みやすくするために、レポート出力に表示される独自のエイリアスを設定できます。デフォルトでは、レプリケーション監視レポートにはリモートサーバーのホスト名が含まれています。

前提条件

  • ホストがレプリケーショントポロジーのメンバーである。
  • コンシューマーを初期化している。

手順

レポートにエイリアスを表示する場合は、次のいずれかの方法を使用します。

  • ~/.dsrc ファイルでエイリアスを定義します。

    [repl-monitor-aliases]
    M1 = server1.example.com:389
    M2 = server2.example.com:389
    Copy to Clipboard Toggle word wrap
  • -a alias=host_name:port パラメーターを dsconf replication monitor コマンドに渡して、エイリアスを定義します。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication monitor -a M1=server1.example.com:389 M2=server2.example.com:389
    Copy to Clipboard Toggle word wrap

どちらの場合も、dsconf replication monitor コマンドは出力にエイリアスを表示します。

...
Supplier: M1 (server1.example.com:389)
--------------------------------
Replica Root: dc=example,dc=com

...
Supplier: M2 (server2.example.com:389)
--------------------------------
Replica Root: dc=example,dc=com
Copy to Clipboard Toggle word wrap

第19章 Web コンソールを使用したレプリケーショントポロジーの監視

サプライヤー、コンシューマー、およびハブの間のディレクトリーデータレプリケーションの状態を監視するには、レプリケーションの進行状況、レプリカ ID、変更の数、およびその他のパラメーターに関する情報を提供するレプリケーショントポロジーレポートを使用できます。レポートをより速く生成して読みやすくするために、独自の認証情報およびエイリアスを設定できます。

19.1. Web コンソールを使用したレプリケーショントポロジーレポートの表示

レプリケーショントポロジー内の各合意のレプリケーションステータスに関する全体的な情報を表示するには、レプリケーショントポロジーレポートを表示できます。

前提条件

  • ホストがレプリケーショントポロジーのメンバーである。
  • コンシューマーを初期化している。
  • Web コンソールにログインしている。

手順

  1. MonitoringReplication に移動します。Replication Monitoring ページが開きます。
  2. Generate Report をクリックします。
  3. リモートインスタンスにログインするためのパスワードを入力し、Confirm Credentials Input をクリックします。Directory Server は、既存のレプリケーションアグリーメントのバインド DN 値を使用します。

    レプリケーショントポロジーレポートは、Report Result タブで生成されます。

    注記

    別のレプリケーショントポロジーレポートを生成するには、Prepare Report タブに移動します。

19.2. Web コンソールを使用したレプリケーション監視の認証情報の設定

レプリケーショントポロジーレポートをより迅速かつ簡単に生成するために、認証用のトポロジー内のサーバーごとに、独自のバインド DN と任意でパスワードを設定できます。この場合、レプリケーショントポロジーレポートを生成するたびにレプリケーション認証情報を確認する必要はありません。デフォルトでは、Directory Server は既存のレプリケーションアグリーメントからこれらの認証情報を取得します。

前提条件

  • ホストがレプリケーショントポロジーのメンバーである。
  • コンシューマーを初期化している。
  • Web コンソールにログインしている。

手順

  1. MonitoringReplication に移動します。Replication Monitoring ページが開きます。
  2. Add Credentials をクリックします。
  3. リモートインスタンスへの認証に使用するレプリケーションのログイン認証情報を入力します。

    • Hostname。サーバーが認証するリモートインスタンスのホスト名。
    • Port。リモートインスタンスポート。
    • Bind DN。認証に使用される DN をリモートインスタンスにバインドします。
    • Password。認証に使用されるパスワード。
    • Interactive Input。オンにすると、レプリケーショントポロジーレポートを生成するたびに Directory Server がパスワードを要求します。
  4. Save をクリックします。

検証

レプリケーショントポロジーレポートを生成して、レポートが認証情報を要求するかどうかを確認します。詳しくは、Web コンソールを使用したレプリケーショントポロジーレポートの表示 を参照してください。

19.3. Web コンソールを使用したレプリケーション命名エイリアスの設定

レポートを読みやすくするために、レポート出力に表示される独自のエイリアスを設定できます。デフォルトでは、レプリケーション監視レポートにはサーバーのホスト名が含まれています。

前提条件

  • ホストがレプリケーショントポロジーのメンバーである。
  • コンシューマーを初期化している。
  • Web コンソールにログインしている。

手順

  1. MonitoringReplication に移動します。Replication Monitoring ページが開きます。
  2. Add Alias をクリックします。
  3. エイリアスの詳細を入力します。

    • Alias。レプリケーショントポロジーレポートに表示されるエイリアス。
    • Hostname。インスタンスのホスト名。
    • Port。インスタンスポート。
  4. Save をクリックします。

検証

第20章 2 つの Directory Server インスタンスの比較

ds-replcheck ユーティリティーを使用して、2 つの Directory Server インスタンスが同期されていることを確認できます。オンラインまたはオフラインモードで 2 つの LDIF 形式のファイルを使用して 2 つのサーバーを比較できます。

20.1. 2 つの Directory Server インスタンスのレプリケーションステータス表示

ds-replcheck ユーティリティーを使用して、2 つの Directory Server インスタンスのレプリケーションステータスを表示できます。

手順

  • 次のコマンドを使用して、2 つの Directory Server インスタンスのレプリケーションステータスを表示します。

    # ds-replcheck state -D "cn=Directory Manager" -W -m ldap://server1.example.com:389 -r ldap://server2.example.com:389 -b "dc=example,dc=com"
    Replication State: Replica is behind Supplier by: 264 seconds
    Copy to Clipboard Toggle word wrap

20.2. 2 つのオンライン Directory Server インスタンスの比較

2 つのオンラインサーバーを比較すると、負荷が大きい場合、そのデータベースの内容が異なります。この問題を回避するために、ds-replcheck-l time_in_seconds パラメーターを ds-replcheck に渡すことにより、ラグタイム値を使用します。デフォルトでは、この値は 300 秒 (5 分) に設定されます。ユーティリティーがラグタイム内の不整合を検出した場合、ユーティリティーはそれを報告しません。これにより、誤検出が軽減されます。

デフォルトでは、レプリカ合意の特定の属性を複製から除外した場合、ds-replcheck はこれらの属性を異なると報告します。これらの属性を無視するには、ユーティリティーに -i attribute_list パラメーターを渡します。

手順

  • オンラインで、supplier.example.comreplica.example.comdc=example,dc=com 接尾辞を比較するには、次のように入力します。

    # ds-replcheck online -D "cn=Directory Manager" -W -m ldap://supplier.example.com:389 -r ldap://replica.example.com:389 -b "dc=example,dc=com"
    Copy to Clipboard Toggle word wrap

    -m パラメーターおよび -r パラメーターは、サプライヤーとレプリカへの URL を設定します。

20.3. オフラインの 2 つの Directory Server インスタンスの比較

2 つのオフライン Directory Server インスタンスを比較するには、両方のホスト上のデータベースをエクスポートし、ds-replcheck を使用してそれらを比較します。

デフォルトでは、レプリカ合意の特定の属性を複製から除外した場合、ds-replcheck はこれらの属性を異なると報告します。これらの属性を無視するには、ユーティリティーに -i attribute_list パラメーターを渡します。

手順

  1. サプライヤーで、接尾辞とそれに対応するデータベースをリストします。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com backend suffix list
    dc=example,dc=com (userroot)
    o=test (test_database)
    Copy to Clipboard Toggle word wrap

    比較するデータベースの名前または接尾辞をメモします。

  2. インスタンスの実行中にデータベースをエクスポートします。

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com backend export -r -l /var/lib/dirsrv/slapd-instance_name/ldif/export-supplier.ldif userRoot
    Copy to Clipboard Toggle word wrap

    -r パラメーターは、エクスポートにレプリケーション状態情報が含まれるようにし、-l はエクスポートファイルへのパスを設定します。そのファイルを作成するには、dirsrv ユーザーが宛先ディレクトリーへの書き込み権限を持っている必要があることに注意してください。

  3. サプライヤーと比較するレプリカで前の手順を繰り返します。
  4. エクスポートしたファイルを一方のホストからもう一方のホストにコピーします。たとえば、LDIF ファイルを replica.example.com から supplier.example.com にコピーするには、レプリカで次のコマンドを入力します。

    # scp /var/lib/dirsrv/slapd-instance_name/ldif/export-replica.ldif supplier.example.com:/var/lib/dirsrv/slapd-instance_name/ldif/
    Copy to Clipboard Toggle word wrap

    このコマンドでは、SSH を使用してサプライヤーにアクセスできる必要があることに注意してください。

  5. サプライヤーで、2 つの LDIF ファイルを比較します。

    # ds-replcheck offline -m /var/lib/dirsrv/slapd-instance_name/ldif/export-supplier.ldif -r /var/lib/dirsrv/slapd-instance_name/ldif/export-replica.ldif -rid 1 -b "dc=example,dc=com"
    Copy to Clipboard Toggle word wrap

    -m および -r パラメーターは、サプライヤーとレプリカへのパスを設定し、-rid は、サプライヤーのレプリカ ID を設定します。

20.4. ds-replcheck 出力の説明

ds-replcheck ユーティリティーの出力には、次のセクションが含まれています。

データベース RUV

データベースの Replication Update Vectors (RUV) と、最小および最大の Change Sequence Numbers (CSN) をリスト表示します。以下に例を示します。

  Supplier RUV:
    {replica 1 ldap://supplier.example.com:389} 58e53b92000200010000 58e6ab46000000010000
    {replica 2 ldap://replica.example.com:389} 58e53baa000000020000 58e69d7e000000020000
    {replicageneration} 58e53b7a000000010000

  Replica RUV:
    {replica 1 ldap://supplier.example.com:389} 58e53ba1000000010000 58e6ab46000000010000
    {replica 2 ldap://replica.example.com:389} 58e53baa000000020000 58e7e8a3000000020000
    {replicageneration} 58e53b7a000000010000
Copy to Clipboard Toggle word wrap
エントリー数

tombstone エントリーを含む、両方のサーバー上のエントリーの合計数を表示します。以下に例を示します。

  Supplier:  12
  Replica: 10
Copy to Clipboard Toggle word wrap
Tombstones

各レプリカの tombstone エントリーの数を表示します。これらのエントリーは、合計エントリー数に追加されます。以下に例を示します。

  Supplier:  4
  Replica: 2
Copy to Clipboard Toggle word wrap
競合エントリー

各競合エントリーの識別名 (DN)、競合タイプ、および作成された日付をリスト表示します。以下に例を示します。

  Supplier Conflict Entries: 1

   - nsuniqueid=48177227-2ab611e7-afcb801a-ecef6d49+uid=user1,dc=example,dc=com
      - Conflict:   namingConflict (add) uid=user1,dc=example,dc=com
      - Glue entry: no
      - Created:    Wed Apr 26 20:27:40 2021


  Replica Conflict Entries: 1

   - nsuniqueid=48177227-2ab611e7-afcb801a-ecef6d49+uid=user1,dc=example,dc=com
      - Conflict:   namingConflict (add) uid=user1,dc=example,dc=com
      - Glue entry: no
      - Created:    Wed Apr 26 20:27:40 2021
Copy to Clipboard Toggle word wrap
欠落エントリー

足りない各エントリーの DN と、エントリーが存在する他のサーバーからの作成日をリスト表示します。以下に例を示します。

  Entries missing on Supplier:
   - uid=user2,dc=example,dc=com (Created on Replica at: Wed Apr 12 14:43:24 2021)
   - uid=user3,dc=example,dc=com (Created on Replica at: Wed Apr 12 14:43:24 2021)

  Entries missing on Replica:
   - uid=user4,dc=example,dc=com (Created on Supplier at: Wed Apr 12 14:43:24 2021)
Copy to Clipboard Toggle word wrap
エントリーの不整合

相手のサーバーとは異なる属性を持つエントリーの DN をリスト表示します。状態情報が利用可能な場合は、これも表示されます。属性の状態情報が利用できない場合には、元の値としてリスト表示されます。レプリケーションが初めて初期化されてから、値が更新されていないことを意味します。以下に例を示します。

  cn=group1,dc=example,dc=com
  ---------------------------
  Replica missing attribute "objectclass":

   - Supplier's State Info: objectClass;vucsn-58e53baa000000020000: top
   - Date: Wed Apr  5 14:47:06 2021

   - Supplier's State Info: objectClass;vucsn-58e53baa000000020000: groupofuniquenames
   - Date: Wed Apr  5 14:47:06 2021
Copy to Clipboard Toggle word wrap

第21章 一般的なレプリケーションの問題解決

マルチサプライヤーレプリケーションは、結果整合性レプリケーションモデルを使用します。これは、同じエントリーが別のサーバーで変更される可能性があることを意味します。これらの 2 つのサーバー間でレプリケーションが発生すると、Directory Server は競合する変更を解決する必要があります。多くの場合は、各サーバーでの変更に関連するタイムスタンプに基づいて解決が自動的に行われます。最新の変更が優先されます。ただし、競合を解決するために手動での介入が必要になるケースもあります。

21.1. 命名の競合特定および解決

複数のサプライヤーサーバーが同じ識別名 (DN) を持つエントリーを作成する要求を受け取ると、各サーバーはこの DN と異なるエントリーの一意の識別子 (エントリー ID) を使用してエントリーを作成します。エントリー ID は、nsuniqueid 操作属性に保存されます。

たとえば、Server A および Server B は、uid=user_name,ou=people,dc=example,dc=com ユーザーエントリーを作成する要求を受け取ります。その結果、各サーバーに独自のエントリーがあります。

  • Server A では、エントリーには以下が含まれます。

    • uid=user_name,ou=people,dc=example,dc=com
    • nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b
  • Server B では、エントリーには以下が含まれます。

    • uid=user_name,ou=people,dc=example,dc=com
    • nsuniqueid=643a461e-b61311e1-b23be826-4afeed5f

レプリケーション中に、Server A は新しく作成されたエントリー uid=user_name,ou=people,dc=example,dc=comServer B にレプリケートし、Server B は新しく作成されたエントリーを Server A にレプリケートし、各サーバーで名前の競合が発生します。変更シーケンス番号 (CSN) を比較することにより、各サーバーはどのエントリーが以前に作成されたかを判断します。たとえば、Server B のエントリーが先に作成されました。

自動競合解決手順では、最後に作成されたエントリー (Server A 上のエントリー) が次のように変更されます。

  • 一意でない DN に nsuniqueid 値を追加します。
  • nsds5replconflict 属性と、競合の原因となった操作の説明を追加します。
  • ldapsubentry objectclass を追加します。

現在、次のエントリーが両方のサーバーに存在します。

  • 有効な エントリーには以下が含まれます。

    • uid=user_name,ou=people,dc=example,dc=com
    • nsuniqueid=643a461e-b61311e1-b23be826-4afeed5f
  • 競合 エントリー:

    • nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b+uid=user_name,ou=people,dc=example,dc=com
    • nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b

名前の競合を手動で解決するには、各サーバーで次の手順を実行します。

手順

  1. 競合エントリーをリスト表示します。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-conflict list dc=example,dc=com
    dn: nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b+uid=user_name,ou=people,dc=example,dc=com
    cn: user_name
    displayName: user
    gidNumber: 99998
    homeDirectory: /var/empty
    legalName: user name
    loginShell: /bin/false
    nsds5replconflict: namingConflict (ADD) uid=user_name,ou=people,dc=example,dc=com
    objectClass: top
    objectClass: nsPerson
    objectClass: nsAccount
    objectClass: nsOrgPerson
    objectClass: posixAccount
    objectClass: ldapsubentry
    uid: user_name
    uidNumber: 99998
    Copy to Clipboard Toggle word wrap
  2. 競合エントリーが存在する場合は、続行方法を決定します。

    • 有効なエントリー (uid=user_name,ou=people,dc=example,dc=com) を維持し、競合エントリーを削除するには、次のコマンドを実行します。

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-conflict delete nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b+uid=user_name,ou=People,dc=example,dc=com
      Copy to Clipboard Toggle word wrap
    • 競合エントリー (nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b+uid=user_name,ou=People,dc=example,dc=com) のみを保持し、有効なエントリーを削除するには、次のように入力します。

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-conflict swap nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b+uid=user_name,ou=People,dc=example,dc=com
      Copy to Clipboard Toggle word wrap
    • 両方のエントリーを保持するには、新しい相対識別名 (RDN) を指定して、競合エントリーの名前を変更します。

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-conflict convert --new-rdn=uid=user_name_NEW nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b+uid=user_name,ou=people,dc=example,dc=com
      Copy to Clipboard Toggle word wrap

      上記のコマンドは、競合エントリーの名前を uid=user_name_NEW,ou=people,dc=example,dc=com に変更します。

警告

Directory Server は、競合エントリーに対して実行された LDAP 操作を複製します。通常、レプリケートされた操作は、操作 dn ではなく、元の操作エントリーの nsuniqueid を使用してエントリーを対象としています。ただし、競合エントリーを使用する場合は、動作が異なる場合があります。

21.2. 孤立エントリーの競合特定および解決

Directory Server が削除操作を複製して、コンシューマーサーバーが、削除されるエントリーに子エントリーがあることを検出すると、競合解決の手順により、ディレクトリーに孤立したエントリーが存在しないように glue エントリーが作成されます。

同様に、Directory Server が追加操作を複製し、コンシューマーサーバーが親エントリーを検出できない場合、競合解決の手順で、親の glue エントリーが作成されます。

glue エントリーは、オブジェクトクラス glue および extensibleObject を含む一時エントリーです。glue エントリーは、複数の方法で作成できます。

  • 競合解決手順で、一意識別子が同じエントリーで削除されたものを検出した場合には、glue エントリーには削除されたエントリーと同じ属性がありますが、glue オブジェクトクラスと nsds5ReplConflict 属性が追加されています。

    このような場合は、glue エントリーを変更して glue オブジェクトクラスと nsds5ReplConflict 属性を削除して、エントリーを通常のエントリーとして維持するか、その子エントリーを削除します。

  • サーバーは、glue および extensibleObject オブジェクトクラスを使用してエントリーを作成します。

手順

  1. 孤立したエントリーの競合をリスト表示します。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-conflict list-glue suffix
    dn: ou=parent,dc=example,dc=com
    objectClass: top
    objectClass: organizationalunit
    objectClass: glue
    objectClass: extensibleobject
    ou: parent
    Copy to Clipboard Toggle word wrap
  2. 孤立したエントリーの競合が存在する場合は、続行する方法を決定します。

    • glue エントリーおよびその子エントリーを削除するには、次のコマンドを実行します。

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-conflict delete-glue "ou=parent,dc=example,dc=com"
      dn: ou=parent,dc=example,dc=com
      objectClass: top
      objectClass: organizationalunit
      objectClass: extensibleobject
      ou: parent
      Copy to Clipboard Toggle word wrap
    • glue エントリーを通常のエントリーに変換するには、次のコマンドを実行します。

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-conflict convert-glue "ou=parent,dc=example,dc=com"
      Copy to Clipboard Toggle word wrap

21.3. 廃止または欠落しているサプライヤーに関するエラーの特定および解決

Directory Server は、レプリカ更新ベクトル (RUV) と呼ばれるメタデータのセットとして、他のレプリカに更新を送信する全サプライヤーなどのレプリケーショントポロジーに関する情報を保存します。RUV には、ID と URL、ローカルサーバー上の最新の変更状態番号 (CSN)、最初の変更の CSN などのサプライヤーに関する情報が含まれています。サプライヤーとコンシューマーはいずれも RUV 情報を保存し、これを使用してレプリケーションの更新を制御します。

レプリケーショントポロジーからサプライヤーを削除すると、その情報は別のレプリカの RUV に残る場合があります。cleanallruv タスクを使用して、トポロジー内のすべてのサプライヤーから RUV エントリーを削除できます。

前提条件

  • レプリケーションが有効である。

手順

  1. /var/log/dirsrv/slapd-instance_name/errors ログファイルを監視し、以下のようなエントリーを検索します。

    [22/Jan/2021:17:16:01 -0500] NSMMReplicationPlugin - ruv_compare_ruv: RUV [changelog max RUV] does not contain element [{replica 8 ldap://server2.example.com:389} 4aac3e59000000080000 4c6f2a02000000080000] which is present in RUV [database RUV]
    ...
    [22/Jan/2021:17:16:01 -0500] NSMMReplicationPlugin - replica_check_for_data_reload: Warning: for replica dc=example,dc=com there were some differences between the changelog max RUV and the database RUV. If there are obsolete elements in the database RUV, you should remove them using the CLEANALLRUV task. If they are not obsolete, you should check their status to see why there are no changes from those servers in the changelog.
    Copy to Clipboard Toggle word wrap

    この場合、レプリカ ID 8 が原因でこのエラーが発生します。

  2. 有効な ID と無効なすべての RUV レコードとレプリカ ID を表示します。

    # dsconf -D "cn=Directory Manager" ldap://server1.example.com replication get-ruv --suffix "dc=example,dc=com"
    RUV:        {replica 1 ldap://server1.example.com} 61a4d8f8000100010000 61a4f5b8000000010000
    
    Replica ID: 1
    LDAP URL:   ldap://server1.example.com
    Min CSN:    2021-11-29 13:43:20 1 0 (61a4d8f8000100010000)
    Max CSN:    2021-11-29 15:46:00 (61a4f5b8000000010000)
    RUV:        {replica 2 ldap://server2.example.com} 61a4d8fb000100020000 61a4f550000000020000
    
    Replica ID: 2
    LDAP URL:   ldap://server2.example.com
    Min CSN:    2021-11-29 13:43:23 1 0 (61a4d8fb000100020000)
    Max CSN:    2021-11-29 15:44:16 (61a4f550000000020000)
     RUV:        {replica 8 ldap://server3.example.com} 61a4d903000100080000 61a4d908000000080000
    
    Replica ID: 8
    LDAP URL:   ldap://server3.example.com
    Min CSN:    2021-11-29 13:43:31 1 0 (61a4d903000100080000)
    Max CSN:    2021-11-29 13:43:36 (61a4d908000000080000)
    Copy to Clipboard Toggle word wrap

    返されるレプリカ ID のリスト (12、および 8) を書き留めます。

  3. レプリカ ID 8 のクリーンアップタスクを実行します。

    # dsconf -D "cn=Directory Manager" ldap://server1.example.com repl-tasks cleanallruv --suffix="dc=example,dc=com" --replica-id=8
    Copy to Clipboard Toggle word wrap

    Directory Server は RUV クリーンアップタスクを複製することに注意してください。したがって、1 つのサプライヤーでのみ、タスクを開始する必要があります。

    レプリカの 1 つがダウンしている場合などに参加できない場合は、--force-cleaning オプションを使用して、RUV の即時クリーンアップを実行できます。

検証

  • RUV レコードおよびレプリカ ID を表示します。

    # dsconf -D "cn=Directory Manager" ldap://server1.example.com replication get-ruv --suffix "dc=example,dc=com"
    RUV:        {replica 1 ldap://server1.example.com} 61a4d8f8000100010000 61a4f5b8000000010000
    
    Replica ID: 1
    LDAP URL:   ldap://server1.example.com
    Min CSN:    2021-11-29 14:02:10 1 0 (61a4d8f8000100010000)
    Max CSN:    2021-11-29 16:00:00 (61a4f5b8000000010000)
    RUV:        {replica 2 ldap://server2.example.com} 61a4d8fb000100020000 61a4f550000000020000
    
    Replica ID: 2
    LDAP URL:   ldap://server2.example.com
    Min CSN:    2021-11-29 14:02:10 1 0 (61a4d8fb000100020000)
    Max CSN:    2021-11-29 15:58:22 (61a4f550000000020000)
    Copy to Clipboard Toggle word wrap

    このコマンドは、レプリカ ID 8 の RUV エントリーを返さなくなりました。

21.4. サプライヤーの cleanallruv タスクを停止する

パフォーマンスまたはメンテナンスの目的で、タスクが長時間実行される場合は cleanallruv タスクを停止できます。dsconf ユーティリティーを使用してタスクを停止できます。

前提条件

  • レプリケーションが有効である。

手順

  1. サプライヤーのすべての cleanallruv タスクを表示します。

    # dsconf <instance_name> repl-tasks list-cleanruv-tasks
    
    dn: cn=cleanallruv_2025-04-15T09:15:18.535868,cn=cleanallruv,cn=tasks,cn=config
    cn: cleanallruv_2025-04-15T09:15:18.535868
    nsTaskCreated: 20250415131518Z
    ...
    nsTaskStatus: Not all replicas online, retrying in 20 seconds...
    nsTaskTotalItems: 1
    nsTaskWarning: 0
    objectClass: top
    objectClass: extensibleObject
    replica-base-dn: dc=example,dc=com
    replica-id: 2
    Copy to Clipboard Toggle word wrap

    この例では、レプリカが応答しなくなったため、cleanallruv タスクを完了できないことが示されています。場合によっては、サーバーのパフォーマンスに悪影響を与える可能性があります。

  2. cleanallruv タスクを停止します。

    # dsconf <instance_name> repl-tasks abort-cleanallruv --suffix "dc=example,dc=com" --replica-id 12
    Copy to Clipboard Toggle word wrap

    さらに、--certify オプションを使用して、Directory Server にすべてのレプリカ上の cleanallruv タスクを強制的に停止させることもできます。

検証

  • サプライヤーのすべての cleanallruv タスクを表示します。

    # dsconf <instance_name> repl-tasks list-cleanruv-tasks
    
    dn: cn=cleanallruv_2025-04-15T09:15:18.535868,cn=cleanallruv,cn=tasks,cn=config
    cn: cleanallruv_2025-04-15T09:15:18.535868
    nsTaskCreated: 20250415131518Z
    ...
    nsTaskStatus: Task aborted for rid(2).
    nsTaskTotalItems: 1
    nsTaskWarning: 0
    objectClass: top
    objectClass: extensibleObject
    replica-base-dn: dc=example,dc=com
    replica-id: 2
    Copy to Clipboard Toggle word wrap

第22章 SyncRepl プロトコルを使用した Content Synchronization のセットアップ

RFC 4533 に従って SyncRepl プロトコルをサポートするために、Directory Server は Content Synchronization プラグインを使用します。Content Synchronization プラグインを使用すると、LDAP サーバーとクライアントは Red Hat Directory Server をソースとして使用して、ローカルデータベースをディレクトリーの変更されたコンテンツと同期できます。

SyncRepl protocol を使用するには、次の設定を実行する必要があります。

  • Directory Server 側:

    • Content Synchronization プラグインと Retro Changelog プラグインを設定します。Retro Changelog プラグインは、nsuniqueid 操作属性をログに記録する必要があります。
    • オプション: クライアントが Directory Server にバインドするために使用する新しいユーザーを作成します。新しいユーザーには、ディレクトリー内のコンテンツを読み取るパーミッションが必要です。詳細は、コマンドラインを使用した LDAP エントリーの追加 を参照してください。
  • クライアントを設定します。たとえば、同期するサブツリーの検索ベースを設定します。詳細は、クライアントのドキュメントを参照してください。

次の手順では、コマンドラインを使用して Content Synchronization プラグインと Retro Changelog プラグインを設定します。

前提条件

  • root 権限がある。

手順

  1. Retro Changelog が有効になっているかどうかを確認します。

    # dsconf <instance_name> plugin retro-changelog show
    ...
    nsslapd-pluginEnabled: off
    Copy to Clipboard Toggle word wrap

    Retro Changelog プラグインが無効になっている場合は、有効にします。

    # dsconf <instance_name> plugin retro-changelog enable
    Enabled plugin 'Retro Changelog Plugin'
    Copy to Clipboard Toggle word wrap
  2. Retro Changelog プラグインの設定に、targetUniqueId エイリアスを持つ nsuniqueid 操作属性を追加します。

    # dsconf <instance_name> plugin retro-changelog add --attribute nsuniqueid:targetUniqueId
    Successfully changed the cn=Retro Changelog Plugin,cn=plugins,cn=config
    Copy to Clipboard Toggle word wrap
  3. オプション: パフォーマンスを向上させるには、次の推奨事項を適用します。

    1. Retro Changelog エントリーの最大有効期間を設定します。たとえば、有効期間を 2 日間 (2d) に設定します。

      # dsconf <instance_name> plugin retro-changelog set --max-age 2d
      Successfully changed the cn=Retro Changelog Plugin,cn=plugins,cn=config
      Copy to Clipboard Toggle word wrap
    2. クライアントがデータを同期するためにアクセスするバックエンドまたはサブツリーがわかっている場合は、Retro Changelog プラグインの範囲を制限します。たとえば、cn=marketing,dc=example,dc=com サブツリーを除外するには、次のように入力します。

      # dsconf <instance_name> plugin retro-changelog set --exclude-suffix "cn=marketing,dc=example,dc=com"
      Successfully changed the cn=Retro Changelog Plugin,cn=plugins,cn=config
      Copy to Clipboard Toggle word wrap
  4. Content Synchronization プラグインを有効にします。

    # dsconf <instance_name> plugin contentsync enable
    Enabled plugin 'Content Synchronization'
    Copy to Clipboard Toggle word wrap
  5. オプション: ACI を調整して、SyncRepl コントロールを使用できるユーザーを制限します。デフォルトでは、Directory Server は oid=1.3.6.1.4.1.4203.1.9.1.1,cn=features,cn=config エントリーに次のアクセス制御命令 (ACI) を作成し、すべてのユーザーが SyncRepl プロトコルを使用できるようにします。

    aci: (targetattr != "aci")(version 3.0; acl "Sync Request Control";
       allow( read, search ) userdn = "ldap:///all";)
    Copy to Clipboard Toggle word wrap

    ACI を調整する方法の詳細は、ACI バインドルールの定義 を参照してください。

  6. サービスを再起動します。

    # dsctl <instance_name> restart
    Copy to Clipboard Toggle word wrap

これで、クライアントは SyncRepl プロトコルを使用して Directory Server とデータを同期できるようになりました。

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat