レプリケーションの設定および管理
他の Directory Server インスタンスへのデータの複製
概要
Red Hat Directory Server に関するフィードバックの提供 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat のドキュメントおよび製品に関するご意見をお待ちしております。ドキュメントの改善点があればお知らせください。改善点を報告する場合は、以下のように行います。
Jira を通じて Red Hat Directory Server ドキュメントに関するフィードバックを送信する場合 (アカウントが必要):
- Red Hat Issue Tracker にアクセスしてください。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある Create をクリックします。
Jira を通じて Red Hat Directory Server 製品に関するフィードバックを送信する場合 (アカウントが必要):
- Red Hat Issue Tracker にアクセスしてください。
- Create Issue ページで、 をクリックします。
- Summary フィールドに入力します。
- Component フィールドでコンポーネントを選択します。
Description フィールドに以下の内容を入力します。
- 選択したコンポーネントのバージョン番号。
- 問題を再現するための手順、または改善のための提案。
- Create をクリックします。
第1章 コマンドラインを使用した単一サプライヤーレプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
単一サプライヤーレプリケーション環境では、1 つの書き込み可能なサプライヤーが、データを 1 つまたは複数の読み取り専用のコンシューマーに複製します。たとえば、接尾辞が多数の検索要求を受け取るが、書き込み要求数が少ない場合などに、単一サプライヤーレプリケーションを設定します。負荷を分散するために、クライアントは読み取り専用のコンシューマーで接尾辞を検索し、書き込み要求をサプライヤーに送信します。
本セクションでは、既存の Directory Server インスタンスが supplier.example.com という名前のホストで実行されていることを前提としています。このホストは、レプリケーショントポロジーに設定されるサプライヤーとして機能します。手順では、consumer.example.com という名前の読み取り専用コンシューマーをトポロジーに追加する方法と、dc=example,dc=com 接尾辞に単一サプライヤーレプリケーションを設定する方法を説明します。
1.1. コマンドラインを使用した新しいコンシューマーの準備 リンクのコピーリンクがクリップボードにコピーされました!
consumer.example.com ホストを準備するには、レプリケーションを有効にします。このプロセスでは、以下を行います。
- レプリケーショントポロジーでこのサーバーのロールを設定します。
- レプリケートされる接尾辞を定義します。
- このホストへの接続にサプライヤーが使用するレプリケーションマネージャーアカウントを作成します。
レプリケーショントポロジーに追加するコンシューマーで、以下の手順を実行します。
前提条件
- Directory Server インスタンスがインストールされている。詳細は、コマンドラインで .inf ファイルを使用して新しいインスタンスをセットアップする を参照してください。
-
dc=example,dc=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"
# 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 Copied! Toggle word wrap Toggle overflow このコマンドは、
consumer.example.comホストをdc=example,dc=com接尾辞のコンシューマーとして設定します。また、このコマンドは、指定したパスワードを持つcn=replication manager,cn=configユーザーを作成し、このアカウントが接尾辞の変更をこのホストに複製するのを許可します。
検証
レプリケーション設定を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらのパラメーターは以下を示しています。
-
nsDS5ReplicaBindDNはレプリケーションマネージャーアカウントを指定します。 -
nsDS5ReplicaRootは、レプリケートされる接尾辞を設定します。 -
nsDS5ReplicaTypeを2に設定して、このホストがコンシューマーであることを定義します。
-
1.2. コマンドラインを使用した、既存サーバーのコンシューマーに対するサプライヤーとしての設定 リンクのコピーリンクがクリップボードにコピーされました!
supplier.example.com ホストを準備するには、次のことを行う必要があります。
- 接尾辞のレプリケーションを有効にします。
- コンシューマーへのレプリカ合意を作成します。
- コンシューマーを初期化します。
レプリケーショントポロジーの既存のサプライヤーでこの手順を実行します。
前提条件
-
コンシューマーで
dc=example,dc=com接尾辞のレプリケーションを有効にしている。
手順
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
# dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication enable --suffix "dc=example,dc=com" --role "supplier" --replica-id 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、
supplier.example.comホストをdc=example,dc=com接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を1に設定します。重要トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は
1から65534の間の一意の整数である必要があります。レプリカ合意を追加し、コンシューマーを初期化します。
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
# 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-agreementCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、
example-agreementという名前のレプリカ合意を作成します。レプリカ合意は、コンシューマーのホスト名、プロトコル、このコンシューマーへのデータの接続や複製時にサプライヤーが使用する認証情報などの設定を定義します。この合意の作成後、Directory Server は
consumer.example.comを初期化します。複製するデータ量によっては、初期化に時間がかかる場合があります。
検証
レプリケーション設定を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらのパラメーターは以下を示しています。
-
nsDS5ReplicaRootは、レプリケートされる接尾辞を設定します。 -
nsDS5ReplicaTypeを3に設定して、このホストがサプライヤーであることを定義します。
-
初期化が成功したかどうかを確認します。
dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt init-status --suffix "dc=example,dc=com" example-agreement Agreement successfully initialized.
# 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 Copied! Toggle word wrap Toggle overflow レプリケーションのステータスを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Replication StatusフィールドおよびLast Update Statusフィールドを確認します。
トラブルシューティング
デフォルトでは、サーバー上のすべての合意に対するレプリケーションアイドルタイムアウトは 1 時間です。タイムアウトが原因で大規模なデータベースの初期化が失敗する場合は、
nsslapd-idletimeoutパラメーターをより高い値に設定します。たとえば、パラメーターを7200(2 時間) に設定するには、次のコマンドを実行します。dsconf -D "cn=Directory Manager" ldap://supplier.example.com config replace nsslapd-idletimeout=7200
# dsconf -D "cn=Directory Manager" ldap://supplier.example.com config replace nsslapd-idletimeout=7200Copy to Clipboard Copied! Toggle word wrap Toggle overflow 無制限の期間を設定するには、
nsslapd-idletimeoutを0に設定します。
第2章 Web コンソールを使用した単一サプライヤーレプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
単一サプライヤーレプリケーション環境では、1 つの書き込み可能なサプライヤーが、データを 1 つまたは複数の読み取り専用のコンシューマーに複製します。たとえば、接尾辞が多数の検索要求を受け取るが、書き込み要求数が少ない場合などに、単一サプライヤーレプリケーションを設定します。負荷を分散するために、クライアントは読み取り専用のコンシューマーで接尾辞を検索し、書き込み要求をサプライヤーに送信します。
本セクションでは、既存の Directory Server インスタンスが supplier.example.com という名前のホストで実行されていることを前提としています。このホストは、レプリケーショントポロジーに設定されるサプライヤーとして機能します。手順では、consumer.example.com という名前の読み取り専用コンシューマーをトポロジーに追加する方法と、dc=example,dc=com 接尾辞に単一サプライヤーレプリケーションを設定する方法を説明します。
2.1. Web コンソールを使用した新しいコンシューマーの準備 リンクのコピーリンクがクリップボードにコピーされました!
consumer.example.com ホストを準備するには、レプリケーションを有効にします。このプロセスでは、以下を行います。
- レプリケーショントポロジーでこのサーバーのロールを設定します。
- レプリケートされる接尾辞を定義します。
- このホストへの接続にサプライヤーが使用するレプリケーションマネージャーアカウントを作成します。
レプリケーショントポロジーに追加するコンシューマーで、以下の手順を実行します。
前提条件
- Directory Server インスタンスがインストールされている。詳細は、Web コンソールを使用した新規インスタンスの設定 を参照してください。
-
dc=example,dc=com接尾辞のデータベースが存在する。 - Web コンソールでインスタンスにログインしている。
手順
-
Replicationメニューを開きます。 -
dc=example,dc=com接尾辞を選択します。 - をクリックします。
Replication RoleフィールドでConsumerを選択し、作成するレプリケーションマネージャーアカウントおよびパスワードを入力します。この設定により、ホストを
dc=example,dc=com接尾辞のコンシューマーとして設定します。さらに、サーバーは指定のパスワードでcn=replication manager,cn=configユーザーを作成し、このアカウントがこのホストに接尾辞の変更を複製することができます。- をクリックします。
検証
-
Replicationメニューを開きます。 -
dc=example,dc=com接尾辞を選択します。 -
Replica Roleフィールドに値Consumerが含まれている場合、レプリケーションが有効になり、ホストがコンシューマーとして設定されます。
2.2. Web コンソールを使用した、既存サーバーのコンシューマーに対するサプライヤーとしての設定 リンクのコピーリンクがクリップボードにコピーされました!
supplier.example.com ホストを準備するには、次のことを行う必要があります。
- 接尾辞のレプリケーションを有効にします。
- コンシューマーへのレプリカ合意を作成します。
- コンシューマーを初期化します。
レプリケーショントポロジーの既存のサプライヤーでこの手順を実行します。
前提条件
-
コンシューマーで
dc=example,dc=com接尾辞のレプリケーションを有効にしている。 - Web コンソールでインスタンスにログインしている。
手順
-
Replicationメニューを開きます。 -
dc=example,dc=com接尾辞を選択します。 レプリケーションを有効にします。
- をクリックします。
Replication RoleフィールドでSupplierを選択し、レプリカ ID、レプリケーションマネージャーの認証情報を入力して、Bind Group DNフィールドを空のままにします。この設定により、ホストを
dc=example,dc=com接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を1に設定します。重要トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は
1から65534の間の一意の整数である必要があります。- をクリックします。
レプリカ合意を追加し、コンシューマーを初期化します。
Agreementsタブで、 をクリックし、次のフィールドに入力します。この設定により、
example-agreementという名前のレプリカ合意が作成されます。レプリカ合意は、コンシューマーのホスト名、プロトコル、このコンシューマーへのデータの接続や複製時にサプライヤーが使用する認証情報などの設定を定義します。-
Consumer InitializationフィールドでDo Online Initializationを選択し、合意の保存後にコンシューマーを自動的に初期化します。 をクリックします。
この合意の作成後、Directory Server は
consumer.example.comを初期化します。複製するデータ量によっては、初期化に時間がかかる場合があります。
検証
-
Replicationメニューを開きます。 -
dc=example,dc=com接尾辞を選択します。 Agreementsタブで、テーブルのState列での契約のステータスを確認。
第3章 コマンドラインを使用したマルチサプライヤーレプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
マルチサプライヤーレプリケーション環境では、2 つ以上の書き込み可能なサプライヤーが互いにデータを複製します。たとえば、マルチサプライヤーレプリケーションを設定してフェイルオーバー環境を提供し、複数のサーバーに負荷を分散します。その後、クライアントは読み取り/書き込みレプリカである任意のホストで読み取り/書き込み操作を実行できます。
本セクションでは、既存の Directory Server インスタンスが supplier1.example.com という名前のホストで実行されていることを前提としています。この手順では、supplier2.example.com という名前の別の読み取り/書き込みレプリカをトポロジーに追加する方法と、dc=example,dc=com 接尾辞のマルチサプライヤーレプリケーションを設定する方法を説明します。
3.1. コマンドラインを使用した新しいサプライヤーの準備 リンクのコピーリンクがクリップボードにコピーされました!
supplier2.example.com ホストを準備するには、レプリケーションを有効にします。このプロセスでは、以下を行います。
- レプリケーショントポロジーでこのサーバーのロールを設定します。
- レプリケートされる接尾辞を定義します。
- このホストへの接続にサプライヤーが使用するレプリケーションマネージャーアカウントを作成します。
レプリケーショントポロジーに追加するサプライヤーで、以下の手順を実行します。
前提条件
- Directory Server インスタンスがインストールされている。詳細は、コマンドラインで .inf ファイルを使用して新しいインスタンスをセットアップする を参照してください。
-
dc=example,dc=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"
# 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 Copied! Toggle word wrap Toggle overflow このコマンドは、
supplier2.example.comホストをdc=example,dc=com接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を1に設定します。また、このコマンドは、指定したパスワードを持つcn=replication manager,cn=configユーザーを作成し、このアカウントが接尾辞の変更をこのホストに複製するのを許可します。重要トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は
1から65534の間の一意の整数である必要があります。
検証
レプリケーション設定を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらのパラメーターは以下を示しています。
-
nsDS5ReplicaBindDNはレプリケーションマネージャーアカウントを指定します。 -
nsDS5ReplicaRootは、レプリケートされる接尾辞を設定します。 -
nsDS5ReplicaTypeを3に設定して、このホストがサプライヤーであることを定義します。
-
3.2. コマンドラインを使用した、既存サーバーの新規サーバーに対するサプライヤーとしての設定 リンクのコピーリンクがクリップボードにコピーされました!
既存のサーバー supplier1.example.com をサプライヤーとして準備するには、次のことを行う必要があります。
- 接尾辞のレプリケーションを有効にします。
- 新規サプライヤーへのレプリカ合意を作成します。
- 新しいサプライヤーを初期化します。
レプリケーショントポロジーの既存のサプライヤーでこの手順を実行します。
前提条件
-
参加するサプライヤーで
dc=example,dc=com接尾辞のレプリケーションを有効にしている。
手順
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"
# 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 Copied! Toggle word wrap Toggle overflow このコマンドは、
supplier1.example.comホストをdc=example,dc=com接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を2に設定します。また、このコマンドは、指定したパスワードを持つcn=replication manager,cn=configユーザーを作成し、このアカウントが接尾辞の変更をこのホストに複製するのを許可します。重要トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は
1から65534の間の一意の整数である必要があります。レプリカ合意を追加し、新規サーバーを初期化します。
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
# 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-supplier2Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、
example-agreement-supplier1-to-supplier2という名前のレプリカ合意を作成します。レプリカ合意は、新規サプライヤーのホスト名、プロトコル、新規サプライヤーへのデータの接続や複製時にサプライヤーが使用する認証情報などの設定を定義します。この合意の作成後、Directory Server は
supplier2.example.comを初期化します。複製するデータ量によっては、初期化に時間がかかる場合があります。
検証
レプリケーション設定を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらのパラメーターは以下を示しています。
-
nsDS5ReplicaBindDNはレプリケーションマネージャーアカウントを指定します。 -
nsDS5ReplicaRootは、レプリケートされる接尾辞を設定します。 -
nsDS5ReplicaTypeを3に設定して、このホストがサプライヤーであることを定義します。
-
初期化が成功したかどうかを確認します。
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.
# 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 Copied! Toggle word wrap Toggle overflow レプリケーションのステータスを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Replication StatusフィールドおよびLast Update Statusフィールドを確認します。
トラブルシューティング
デフォルトでは、サーバー上のすべての合意に対するレプリケーションアイドルタイムアウトは 1 時間です。タイムアウトが原因で大規模なデータベースの初期化が失敗する場合は、
nsslapd-idletimeoutパラメーターをより高い値に設定します。たとえば、パラメーターを7200(2 時間) に設定するには、次のコマンドを実行します。dsconf -D "cn=Directory Manager" ldap://supplier1.example.com config replace nsslapd-idletimeout=7200
# dsconf -D "cn=Directory Manager" ldap://supplier1.example.com config replace nsslapd-idletimeout=7200Copy to Clipboard Copied! Toggle word wrap Toggle overflow 無制限の期間を設定するには、
nsslapd-idletimeoutを0に設定します。
3.3. コマンドラインを使用した、新規サーバーの既存サーバーに対するサプライヤーとしての設定 リンクのコピーリンクがクリップボードにコピーされました!
新しいサーバー 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
# 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-supplier1Copy to Clipboard Copied! Toggle word wrap Toggle overflow --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
# 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-supplier2Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
合意のステータスを表示します。
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.
# 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 Copied! Toggle word wrap Toggle overflow レプリケーションのステータスを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Replication StatusフィールドおよびLast Update Statusフィールドを確認します。
トラブルシューティング
デフォルトでは、サーバー上のすべての合意に対するレプリケーションアイドルタイムアウトは 1 時間です。タイムアウトが原因で大規模なデータベースの初期化が失敗する場合は、
nsslapd-idletimeoutパラメーターをより高い値に設定します。たとえば、パラメーターを7200(2 時間) に設定するには、次のコマンドを実行します。dsconf -D "cn=Directory Manager" ldap://supplier2.example.com config replace nsslapd-idletimeout=7200
# dsconf -D "cn=Directory Manager" ldap://supplier2.example.com config replace nsslapd-idletimeout=7200Copy to Clipboard Copied! Toggle word wrap Toggle overflow 無制限の期間を設定するには、
nsslapd-idletimeoutを0に設定します。
第4章 Web コンソールを使用したマルチサプライヤーレプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
マルチサプライヤーレプリケーション環境では、2 つ以上の書き込み可能なサプライヤーが互いにデータを複製します。たとえば、マルチサプライヤーレプリケーションを設定してフェイルオーバー環境を提供し、複数のサーバーに負荷を分散します。その後、クライアントは読み取り/書き込みレプリカである任意のホストで読み取り/書き込み操作を実行できます。
本セクションでは、既存の Directory Server インスタンスが supplier1.example.com という名前のホストで実行されていることを前提としています。この手順では、supplier2.example.com という名前の別の読み取り/書き込みレプリカをトポロジーに追加する方法と、dc=example,dc=com 接尾辞のマルチサプライヤーレプリケーションを設定する方法を説明します。
4.1. Web コンソールを使用した新しいサプライヤーの準備 リンクのコピーリンクがクリップボードにコピーされました!
supplier2.example.com ホストを準備するには、レプリケーションを有効にします。このプロセスでは、以下を行います。
- レプリケーショントポロジーでこのサーバーのロールを設定します。
- レプリケートされる接尾辞を定義します。
- このホストへの接続にサプライヤーが使用するレプリケーションマネージャーアカウントを作成します。
レプリケーショントポロジーに追加するサプライヤーで、以下の手順を実行します。
前提条件
- Directory Server インスタンスがインストールされている。詳細は、Web コンソールを使用した新規インスタンスの設定 を参照してください。
-
dc=example,dc=com接尾辞のデータベースが存在する。 - Web コンソールでインスタンスにログインしている。
手順
-
Replicationメニューを開きます。 -
dc=example,dc=com接尾辞を選択します。 レプリケーションを有効にします。
- をクリックします。
Replication RoleフィールドでSupplierを選択し、レプリカ ID を入力し、作成するレプリケーションマネージャーアカウントの識別名 (DN) およびパスワードを入力します。この設定により、ホストを
dc=example,dc=com接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を1に設定します。重要トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は
1から65534の間の一意の整数である必要があります。レプリケーションマネージャー DN を設定しない場合は、バインドグループ DN を設定します。その後、レプリカ合意でこのグループの任意のメンバーを使用できます。
- をクリックします。
検証
-
Replicationメニューを開きます。 -
dc=example,dc=com接尾辞を選択します。 -
Replica Roleフィールドに値Supplierが含まれている場合、レプリケーションが有効になり、ホストがサプライヤーとして設定されます。
4.2. Web コンソールを使用した、既存サーバーの新規サーバーに対するサプライヤーとしての設定 リンクのコピーリンクがクリップボードにコピーされました!
既存のサーバー supplier1.example.com をサプライヤーとして準備するには、次のことを行う必要があります。
- 接尾辞のレプリケーションを有効にします。
- 新規サプライヤーへのレプリカ合意を作成します。
- 新しいサプライヤーを初期化します。
レプリケーショントポロジーの既存のサプライヤーでこの手順を実行します。
前提条件
-
参加するサプライヤーで
dc=example,dc=com接尾辞のレプリケーションを有効にしている。 - Web コンソールでインスタンスにログインしている。
手順
-
Replicationメニューを開きます。 -
dc=example,dc=com接尾辞を選択します。 レプリケーションを有効にします。
- をクリックします。
Replication RoleフィールドでSupplierを選択し、レプリカ ID を入力し、作成するレプリケーションマネージャーアカウントの識別名 (DN) およびパスワードを入力します。この設定により、ホストを
dc=example,dc=com接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を2に設定します。重要トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は
1から65534の間の一意の整数である必要があります。- をクリックします。
レプリカ合意を追加し、新規サーバーを初期化します。
Agreementsタブで、 をクリックし、次のフィールドに入力します。この設定により、
example-agreement-supplier1-to-supplier2という名前のレプリカ合意が作成されます。レプリカ合意は、新規サプライヤーのホスト名、プロトコル、新規サプライヤーへのデータの接続や複製時にサプライヤーが使用する認証情報などの設定を定義します。-
Consumer InitializationフィールドでDo Online Initializationを選択し、合意の保存後に新規サーバーを自動的に初期化します。 をクリックします。
この合意の作成後、Directory Server は
supplier2.example.comを初期化します。複製するデータ量によっては、初期化に時間がかかる場合があります。
検証
-
Replicationメニューを開きます。 -
dc=example,dc=com接尾辞を選択します。 Agreementsタブで、テーブルのState列での契約のステータスを確認。
4.3. Web コンソールを使用した、新規サーバーの既存サーバーに対するサプライヤーとしての設定 リンクのコピーリンクがクリップボードにコピーされました!
新しいサーバー supplier2.example.com をサプライヤーとして準備するには、次のことを行う必要があります。
- 接尾辞のレプリケーションを有効にします。
- 既存サーバーへのレプリカ合意を作成します。
- 既存サーバーを初期化します。
レプリケーショントポロジーの既存のサプライヤーでこの手順を実行します。
既存のサーバーでレプリカ合意を初期化していない場合は、続行しないでください。それ以外の場合は、新規サーバーの空のデータベースは、既存のサプライヤーのデータベースを上書きします。
前提条件
-
新規サーバーで
dc=example,dc=com接尾辞のレプリケーションを有効にしている。 -
既存のサーバーで
dc=example,dc=com接尾辞のレプリケーションを有効にしている。 - 参加する新しいサーバーが正常に初期化されている。
- Web コンソールでインスタンスにログインしている。
手順
-
Replicationメニューを開きます。 -
dc=example,dc=com接尾辞を選択します。 レプリカ合意を追加し、既存のサーバーを初期化します。
Agreementsタブで、 をクリックし、次のフィールドに入力します。この設定により、
example-agreement-supplier2-to-supplier1という名前のレプリカ合意が作成されます。レプリカ合意は、既存サーバーのホスト名、プロトコル、既存サプライヤーへのデータの接続や複製時にサプライヤーが使用する認証情報などの設定を定義します。-
Consumer InitializationフィールドでDo Online Initializationを選択し、合意の保存後に新規サーバーを自動的に初期化します。 をクリックします。
この合意の作成後、Directory Server は
supplier1.example.comを初期化します。複製するデータ量によっては、初期化に時間がかかる場合があります。
検証
-
Replicationメニューを開きます。 -
dc=example,dc=com接尾辞を選択します。 Agreementsタブで、テーブルのState列での契約のステータスを確認。
第5章 証明書ベースの認証を使用したマルチサプライヤーレプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
2 つの Directory Server インスタンス間のレプリケーションを設定する場合、バインド DN とパスワードを使用してレプリケーションパートナーを認証する代わりに、証明書ベースの認証を使用できます。
これを行うには、新しいサーバーをレプリケーショントポロジーに追加し、証明書ベースの認証を使用して新しいホストと既存のサーバーの間にレプリケーションアグリーメントを設定します。
証明書ベースの認証には、TLS 暗号化接続が必要です。
5.1. 証明書ベースの認証によるレプリカ合意で使用するためのアカウントとバインドグループの準備 リンクのコピーリンクがクリップボードにコピーされました!
複製合意で証明書ベースの認証を使用するには、まずアカウントを準備し、クライアント証明書をこれらのアカウントの userCertificate 属性に保存します。さらに、この手順では、後で複製合意で使用するバインドグループを作成します。
この手順は、既存のホスト server1.example.com で実行します。
前提条件
- Directory Server で TLS 暗号化を有効にしています。
/root/server1.derファイルと/root/server2.derファイルに、クライアント証明書を Distinguished Encoding Rules (DER) 形式で保存しました。クライアント証明書の詳細と、認証局 (CA) から証明書を要求する方法は、CA のドキュメントを参照してください。
手順
ou=servicesエントリーが存在しない場合は作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cn=server1,ou=services,dc=example,dc=comおよびcn=server1,ou=services,dc=example,dc=comなど、両方のサーバーのアカウントを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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"
# dsidm -D "cn=Directory Manager" ldaps://server1.example.com -b "dc=example,dc=com" group create --cn "repl_servers"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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"
# 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 Copied! Toggle word wrap Toggle overflow
5.2. 一時レプリケーションマネージャーアカウントを使用した新しいサーバーの初期化 リンクのコピーリンクがクリップボードにコピーされました!
証明書ベースの認証では、ディレクトリーに格納されている証明書が使用されます。ただし、新しいサーバーを初期化する前は、server2.example.com のデータベースは空であり、関連付けられた証明書を持つアカウントは存在しません。したがって、データベースの初期化前に、証明書を使用してレプリケーションすることはできません。この問題は、server2.example.com を一時的なレプリケーションマネージャーアカウントで初期化することで解決できます。
前提条件
-
Directory Server インスタンスを
server2.example.comにインストールした。詳細は、.inf ファイルを使用したコマンドラインでの新規インスタンスの設定 を参照してください。 -
dc=example,dc=com接尾辞のデータベースが存在する。 -
server1.example.comとserver2.example.comの両方のサーバーの Directory Server で TLS 暗号化を有効にした。
手順
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"
# 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 Copied! Toggle word wrap Toggle overflow このコマンドは、
server2.example.comホストをdc=example,dc=com接尾辞のサプライヤーとして設定し、このホストのレプリカ ID を2に設定します。さらに、このコマンドは、指定されたパスワードで一時的なcn=replication manager,cn=configユーザーを作成し、このアカウントが接尾辞の変更をこのホストに複製できるようにします。トポロジー内のすべてのサプライヤーにわたって、1 つの接尾辞に対するレプリカ ID は
1から65534の間の一意の整数である必要があります。server1.example.com上で:レプリケーションを有効にします。
dsconf -D "cn=Directory Manager" ldaps://server1.example.com replication enable --suffix="dc=example,dc=com" --role="supplier" --replica-id="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 Copied! Toggle word wrap Toggle overflow 認証用に直前の手順で一時的なアカウントを使用する一時的なレプリカ合意を作成します。
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
# 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_agreementCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
初期化が成功したことを確認します。
dsconf -D "cn=Directory Manager" ldaps://server1.example.com repl-agmt init-status --suffix "dc=example,dc=com" temporary_agreement Agreement successfully initialized.
# 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 Copied! Toggle word wrap Toggle overflow
5.3. 証明書ベースの認証を使用したマルチサプライヤーレプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
証明書ベースの認証を使用するマルチサプライヤーレプリケーション環境では、レプリカは証明書を使用して相互に認証します。
前提条件
-
server1.example.comとserver2.example.comの両方のホストで証明書ベースの認証を設定します。 - Directory Server は、クライアント証明書を発行する認証局 (CA) を信頼します。
-
クライアント証明書は、サーバーの
/etc/dirsrv/slapd-instance_name/certmap.confで設定された要件を満たしています。
手順
server1.example.com上で:一時的なレプリカ合意を削除します。
dsconf -D "cn=Directory Manager" ldaps://server1.example.com repl-agmt delete --suffix="dc=example,dc=com" temporary_agreement
# dsconf -D "cn=Directory Manager" ldaps://server1.example.com repl-agmt delete --suffix="dc=example,dc=com" temporary_agreementCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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"
# 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 Copied! Toggle word wrap Toggle overflow バインドグループの変更を自動的にチェックするように Directory Server を設定します。
dsconf -D "cn=Directory Manager" ldaps://server1.example.com replication set --suffix="dc=example,dc=com" --repl-bind-group-interval=0
# dsconf -D "cn=Directory Manager" ldaps://server1.example.com replication set --suffix="dc=example,dc=com" --repl-bind-group-interval=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
server2.example.com上で:一時的なレプリケーションマネージャーアカウントを削除します。
dsconf -D "cn=Directory Manager" ldaps://server2.example.com replication delete-manager --suffix="dc=example,dc=com" --name="Replication Manager"
# dsconf -D "cn=Directory Manager" ldaps://server2.example.com replication delete-manager --suffix="dc=example,dc=com" --name="Replication Manager"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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"
# 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 Copied! Toggle word wrap Toggle overflow バインドグループの変更を自動的にチェックするように Directory Server を設定します。
dsconf -D "cn=Directory Manager" ldap://server2.example.com replication set --suffix="dc=example,dc=com" --repl-bind-group-interval=0
# dsconf -D "cn=Directory Manager" ldap://server2.example.com replication set --suffix="dc=example,dc=com" --repl-bind-group-interval=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 証明書ベースの認証を使用して複製合意を作成します。
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
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-server1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
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-server2Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
初期化が成功したことを各サーバーで確認します。
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.
# 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 Copied! Toggle word wrap Toggle overflow
第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"
# 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 Copied! Toggle word wrap Toggle overflow このコマンドは、
dc=example,dc=com接尾辞のハブとしてhub.example.comホストを設定します。また、このコマンドは、指定したパスワードを持つcn=replication manager,cn=configユーザーを作成し、このアカウントが接尾辞の変更をこのホストに複製するのを許可します。
検証
レプリケーション設定を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらのパラメーターは以下を示しています。
-
nsDS5ReplicaBindDNはレプリケーションマネージャーアカウントを指定します。 -
nsDS5ReplicaRootは、レプリケートされる接尾辞を設定します。 -
nsDS5ReplicaTypeを2に設定して、このホストがコンシューマーで、ハブにも有効であることを定義します。 -
nsDS5ReplicaIdを65535に設定して、このホストがハブであることを定義します。--role "hub"オプションを定義すると、dsconfユーティリティーはこの値を自動的に設定します。
-
6.2. コマンドラインを使用した、既存サーバーのハブサーバーに対するサプライヤーとしての設定 リンクのコピーリンクがクリップボードにコピーされました!
既存のサーバーをサプライヤーとして準備するには、以下を行う必要があります。
- 接尾辞のレプリケーションを有効にします。
- ハブへのレプリカ合意を作成します。
- ハブを初期化します。
レプリケーショントポロジーの既存のサプライヤーでこの手順を実行します。
前提条件
-
参加するハブで
dc=example,dc=com接尾辞のレプリケーションを有効にしている。
手順
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
# dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication enable --suffix "dc=example,dc=com" --role "supplier" --replica-id 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、
supplier.example.comホストをdc=example,dc=com接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を1に設定します。重要トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は
1から65534の間の一意の整数である必要があります。レプリカ合意を追加し、新規サーバーを初期化します。
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
# 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-hubCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、
example-agreement-supplier-to-hubという名前のレプリカ合意を作成します。レプリカ合意は、ハブのホスト名、プロトコル、ハブへのデータの接続や複製時にサプライヤーが使用する認証情報などの設定を定義します。この合意の作成後、Directory Server は
hub.example.comを初期化します。複製するデータ量によっては、初期化に時間がかかる場合があります。
検証
レプリケーション設定を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらのパラメーターは以下を示しています。
-
nsDS5ReplicaRootは、レプリケートされる接尾辞を設定します。 -
nsDS5ReplicaTypeを3に設定して、このホストがサプライヤーであることを定義します。
-
初期化が成功したかどうかを確認します。
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.
# 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 Copied! Toggle word wrap Toggle overflow レプリケーションのステータスを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Replication StatusフィールドおよびLast Update Statusフィールドを確認します。
トラブルシューティング
デフォルトでは、サーバー上のすべての合意に対するレプリケーションアイドルタイムアウトは 1 時間です。タイムアウトが原因で大規模なデータベースの初期化が失敗する場合は、
nsslapd-idletimeoutパラメーターをより高い値に設定します。たとえば、パラメーターを7200(2 時間) に設定するには、次のコマンドを実行します。dsconf -D "cn=Directory Manager" ldap://supplier1.example.com config replace nsslapd-idletimeout=7200
# dsconf -D "cn=Directory Manager" ldap://supplier1.example.com config replace nsslapd-idletimeout=7200Copy to Clipboard Copied! Toggle word wrap Toggle overflow 無制限の期間を設定するには、
nsslapd-idletimeoutを0に設定します。
6.3. コマンドラインを使用したハブの新しいコンシューマーの準備 リンクのコピーリンクがクリップボードにコピーされました!
consumer.example.com ホストを準備するには、レプリケーションを有効にします。このプロセスでは、以下を行います。
- レプリケーショントポロジーでこのサーバーのロールを設定します。
- レプリケートされる接尾辞を定義します。
- このホストへの接続にハブが使用するレプリケーションマネージャーアカウントを作成します。
レプリケーショントポロジーに追加するコンシューマーで、以下の手順を実行します。
前提条件
- Directory Server インスタンスがインストールされている。詳細は、コマンドラインで .inf ファイルを使用して新しいインスタンスをセットアップする を参照してください。
-
dc=example,dc=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"
# 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 Copied! Toggle word wrap Toggle overflow このコマンドは、
consumer.example.comホストをdc=example,dc=com接尾辞のコンシューマーとして設定します。また、このコマンドは、指定したパスワードを持つcn=replication manager,cn=configユーザーを作成し、このアカウントが接尾辞の変更をこのホストに複製するのを許可します。
検証
レプリケーション設定を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらのパラメーターは以下を示しています。
-
nsDS5ReplicaBindDNはレプリケーションマネージャーアカウントを指定します。 -
nsDS5ReplicaRootは、レプリケートされる接尾辞を設定します。 -
nsDS5ReplicaTypeを2に設定して、このホストがコンシューマーであることを定義します。
-
6.4. コマンドラインを使用した、ハブサーバーのコンシューマーに対するサプライヤーとしての設定 リンクのコピーリンクがクリップボードにコピーされました!
ハブを準備するには、以下を行う必要があります。
- コンシューマーへのレプリカ合意を作成します。
- コンシューマーを初期化します。
レプリケーショントポロジーのハブでこの手順を実行します。
前提条件
- ハブが初期化され、サプライヤーからハブへのレプリケーションが機能する。
-
ハブで
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
# 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-consumerCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、
example-agreement-hub-to-consumerという名前のレプリカ合意を作成します。レプリカ合意は、コンシューマーのホスト名、プロトコル、このコンシューマーへのデータの接続や複製時にサプライヤーが使用する認証情報などの設定を定義します。この合意の作成後、Directory Server は
consumer.example.comを初期化します。複製するデータ量によっては、初期化に時間がかかる場合があります。
検証
初期化が成功したかどうかを確認します。
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.
# 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 Copied! Toggle word wrap Toggle overflow レプリケーションのステータスを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Replication StatusフィールドおよびLast Update Statusフィールドを確認します。
トラブルシューティング
デフォルトでは、サーバー上のすべての合意に対するレプリケーションアイドルタイムアウトは 1 時間です。タイムアウトが原因で大規模なデータベースの初期化が失敗する場合は、
nsslapd-idletimeoutパラメーターをより高い値に設定します。たとえば、パラメーターを7200(2 時間) に設定するには、次のコマンドを実行します。dsconf -D "cn=Directory Manager" ldap://hub .example.com config replace nsslapd-idletimeout=7200
# dsconf -D "cn=Directory Manager" ldap://hub .example.com config replace nsslapd-idletimeout=7200Copy to Clipboard Copied! Toggle word wrap Toggle overflow 無制限の期間を設定するには、
nsslapd-idletimeoutを0に設定します。
第7章 Web コンソールを使用したカスケードレプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
カスケードレプリケーションのシナリオでは、ハブとなる 1 台のサーバーがコンシューマーとサプライヤーの両方のロールを果たします。ハブは、変更ログを維持する読み取り専用のレプリカです。サプライヤーから更新を受け取り、これらの更新をコンシューマーに提供します。カスケードレプリケーションは、負荷の高いトラフィックのバランスをとる場合や、地理的に分散した環境でサプライヤーをローカルに配置する場合に使用します。
7.1. Web コンソールを使用した新しいハブサーバーの準備 リンクのコピーリンクがクリップボードにコピーされました!
hub.example.com ホストを準備するには、レプリケーションを有効にします。このプロセスでは、以下を行います。
- レプリケーショントポロジーでこのサーバーのロールを設定します。
- レプリケートされる接尾辞を定義します。
- このホストへの接続にサプライヤーが使用するレプリケーションマネージャーアカウントを作成します。
レプリケーショントポロジーに追加するハブで、以下の手順を実行します。
前提条件
- Directory Server インスタンスがインストールされている。
- dc=example,dc=com 接尾辞のデータベースが存在する。
- Web コンソールでインスタンスにログインしている。
手順
-
Replicationメニューを開きます。 -
dc=example,dc=com接尾辞を選択します。 レプリケーションを有効にします。
- をクリックします。
Replication RoleフィールドでConsumerを選択し、作成するレプリケーションマネージャーアカウントおよびパスワードを入力します。この設定により、ホストを
dc=example,dc=com接尾辞のハブとして設定します。- をクリックします。
検証
-
Replicationメニューを開きます。 -
dc=example,dc=com接尾辞を選択します。 -
Replica Roleフィールドに値Hubが含まれている場合、レプリケーションが有効になり、ホストがコンシューマーとして設定されます。
7.2. Web コンソールを使用した、既存サーバーのハブサーバーに対するサプライヤーとしての設定 リンクのコピーリンクがクリップボードにコピーされました!
既存のサーバーをサプライヤーとして準備するには、以下を行う必要があります。
- 接尾辞のレプリケーションを有効にします。
- ハブへのレプリカ合意を作成します。
- ハブを初期化します。
レプリケーショントポロジーの既存のサプライヤーでこの手順を実行します。
前提条件
-
参加するハブで
dc=example,dc=com接尾辞のレプリケーションを有効にしている。 - Web コンソールでインスタンスにログインしている。
手順
-
Replicationメニューを開きます。 -
dc=example,dc=com接尾辞を選択します。 レプリケーションを有効にします。
- をクリックします。
Replication RoleフィールドでSupplierを選択し、レプリカ ID を入力し、作成するレプリケーションマネージャーアカウントの識別名 (DN) およびパスワードを入力します。この設定により、ホストを
dc=example,dc=com接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を1に設定します。重要トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は
1から65534の間の一意の整数である必要があります。- をクリックします。
レプリカ合意を追加し、新規サーバーを初期化します。
Agreementsタブで、 をクリックし、次のフィールドに入力します。この設定により、
example-agreement-supplier-to-hubという名前のレプリカ合意が作成されます。レプリカ合意は、ハブのホスト名、プロトコル、このハブへのデータの接続や複製時にサプライヤーが使用する認証情報などの設定を定義します。-
Consumer InitializationフィールドでDo Online Initializationを選択し、合意の保存後に新規サーバーを自動的に初期化します。 をクリックします。
この合意の作成後、Directory Server は
hub.example.comを初期化します。複製するデータ量によっては、初期化に時間がかかる場合があります。
検証
-
Replicationメニューを開きます。 -
dc=example,dc=com接尾辞を選択します。 Agreementsタブで、テーブルのState列での契約のステータスを確認。
7.3. Web コンソールを使用したハブの新規コンシューマーの準備 リンクのコピーリンクがクリップボードにコピーされました!
consumer.example.com ホストを準備するには、レプリケーションを有効にします。このプロセスでは、以下を行います。
- レプリケーショントポロジーでこのサーバーのロールを設定します。
- レプリケートされる接尾辞を定義します。
- このホストへの接続にサプライヤーが使用するレプリケーションマネージャーアカウントを作成します。
レプリケーショントポロジーに追加するコンシューマーで、以下の手順を実行します。
前提条件
- Directory Server インスタンスがインストールされている。詳細は、Web コンソールを使用した新規インスタンスの設定 を参照してください。
-
dc=example,dc=com接尾辞のデータベースが存在する。 - Web コンソールでインスタンスにログインしている。
手順
-
Replicationメニューを開きます。 -
dc=example,dc=com接尾辞を選択します。 - をクリックします。
Replication RoleフィールドでConsumerを選択し、作成するレプリケーションマネージャーアカウントおよびパスワードを入力します。この設定により、ホストを
dc=example,dc=com接尾辞のコンシューマーとして設定します。さらに、サーバーは指定のパスワードでcn=replication manager,cn=configユーザーを作成し、このアカウントがこのホストに接尾辞の変更を複製することができます。- をクリックします。
検証
-
Replicationメニューを開きます。 -
dc=example,dc=com接尾辞を選択します。 -
Replica Roleフィールドに値Consumerが含まれている場合、レプリケーションが有効になり、ホストがコンシューマーとして設定されます。
7.4. Web コンソールを使用した、ハブサーバーのコンシューマーに対するサプライヤーとしての設定 リンクのコピーリンクがクリップボードにコピーされました!
ハブを準備するには、以下を行う必要があります。
- コンシューマーへのレプリカ合意を作成します。
- コンシューマーを初期化します。
レプリケーショントポロジーのハブでこの手順を実行します。
前提条件
- ハブが初期化され、サプライヤーからハブへのレプリケーションが機能する。
- ハブで dc=example,dc=com 接尾辞のレプリケーションを有効にしている。
- Web コンソールでインスタンスにログインしている。
手順
-
Replicationメニューを開きます。 -
dc=example,dc=com接尾辞を選択します。 レプリカ合意を追加し、コンシューマーを初期化します。
Agreementsタブで、 をクリックし、次のフィールドに入力します。この設定により、
example-agreement-hub-to-consumerという名前のレプリカ合意が作成されます。レプリカ合意は、コンシューマーのホスト名、プロトコル、このコンシューマーへのデータの接続や複製時にハブが使用する認証情報などの設定を定義します。-
Consumer InitializationフィールドでDo Online Initializationを選択し、合意の保存後にコンシューマーを自動的に初期化します。 をクリックします。
この合意の作成後、Directory Server は
consumer.example.comを初期化します。複製するデータ量によっては、初期化に時間がかかる場合があります。
検証
-
Replicationメニューを開きます。 -
dc=example,dc=com接尾辞を選択します。 Agreementsタブで、テーブルのState列での契約のステータスを確認。
第8章 マルチサプレットレプリケーション環境でのレイテンシーの改善 リンクのコピーリンクがクリップボードにコピーされました!
特定のマルチサプライヤーレプリケーション環境では (たとえば、サーバーがワイドエリアネットワーク (WAN) を介して接続されている場合)、マルチサプライヤーが同時に更新を受け取ると、レプリケーションのレイテンシーが高くなる可能性があります。これは、1 つのサプライヤーがレプリカを長期間解放せずにレプリカのみにアクセスした場合に発生します。このような場合は、他のサプライヤーがこのコンシューマーに更新を送信できないため、レプリケーションのレイテンシーが増加します。
一定期間の経過後にレプリカを解放するには、レプリケーションサプライヤーとハブに nsds5ReplicaReleaseTimeout パラメーターを設定します。
ほとんどの環境では 60 秒のデフォルト値が適しています。設定した値が高すぎるまたは低すぎると、レプリケーションのパフォーマンスに影響を及ぼす可能性があります。設定した値が低すぎると、レプリケーションサーバーは常に相互に再取得し、サーバーは多くの更新を送信できなくなります。トラフィックの多いレプリケーション環境では、タイムアウトが長いと 1 つのサプライヤーのみがレプリカにアクセスする状況を改善できます。ただし、ほとんどの場合、120 秒よりも高い値を設定するとレプリケーションの速度が低下します。
8.1. コマンドラインを使用したレプリケーション解放タイムアウトの設定 リンクのコピーリンクがクリップボードにコピーされました!
マルチサプライヤーレプリケーション環境でレプリケーションの効率を向上させるには、すべてのハブおよびサプライヤーでレプリケーションリリースのタイムアウト値を更新します。
前提条件
- 複数のサプライヤーとハブ間でレプリケーションを設定している。
手順
接尾辞のタイムアウト値を設定します。
dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication set --suffix="dc=example,dc=com" --repl-release-timeout=70
# dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication set --suffix="dc=example,dc=com" --repl-release-timeout=70Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、
example,dc=comの接尾辞のレプリケーションタイムアウトを70秒に変更します。インスタンスを再起動します。
dsctl instance_name restart
# dsctl instance_name restartCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.2. Web コンソールを使用したレプリケーション解放タイムアウトの設定 リンクのコピーリンクがクリップボードにコピーされました!
マルチサプライヤーレプリケーション環境でレプリケーションの効率を向上させるには、すべてのハブおよびサプライヤーでレプリケーションリリースのタイムアウト値を更新します。
前提条件
- 複数のサプライヤーとハブ間でレプリケーションを設定している。
手順
- タブで、接尾辞エントリーを選択します。
-
Show Advanced Settingsをクリックします。 -
Replication Release Timeoutフィールドの値を更新します。 - をクリックします。
第9章 レプリケーショントポロジーにおけるコンシューマーの初期化 リンクのコピーリンクがクリップボードにコピーされました!
レプリカ合意を作成した後、コンシューマーを初期化する必要があります。そうしないと、Directory Server はレプリケーションを開始しません。初期化操作中に、サプライヤーは既存のデータをコンシューマーにコピーします。
9.1. コンシューマーの初期化のタイミング リンクのコピーリンクがクリップボードにコピーされました!
コンシューマーの初期化には、サプライヤーサーバーからコンシューマーサーバーへのデータのコピーが含まれます。サブツリーがコンシューマーに物理的に配置されたら、サプライヤーサーバーはコンシューマーサーバーへの更新操作のリプレイを開始できます。
通常の操作では、コンシューマーを再初期化しないでください。ただし、サプライヤーとコンシューマーのデータに大きな相違がある場合は、コンシューマーの再初期化を実行します。
たとえば、サプライヤーサーバーのデータをバックアップから復元した場合は、そのサーバーによって提供されるすべてのコンシューマーも再初期化する必要があります。もう 1 つの例としては、サプライヤーが長期間 (1 週間以上) コンシューマーと連絡が取れず、コンシューマーが古すぎて更新できないと判断し、再初期化する必要があるとサプライヤーが判断した場合が挙げられます。
トポロジーに応じて、オンラインまたはオフラインの方法を使用してコンシューマーを初期化します。
- コンシューマーの数が少ない場合は、Web コンソールを使用してオンラインでコンシューマーの初期化を実行します。オンラインコンシューマーの初期化は、コンシューマーがサプライヤーサーバーでのレプリカ合意の設定の一部として初期化される時に使用する方法です。
- レプリカの数が多い場合やデータベースが大きい場合は、コマンドラインを使用して、単一の LDIF ファイルから手動でコンシューマー初期化を実行します。
9.2. コマンドラインを使用してインスタンスがオンラインのときにコンシューマーを初期化する リンクのコピーリンクがクリップボードにコピーされました!
サプライヤーとコンシューマーのインスタンスがオンラインの場合、コマンドラインを使用してコンシューマーを初期化できます。
前提条件
-
サプライヤーサーバーとコンシューマーサーバーで
dc=example,dc=com接尾辞のレプリケーションを有効化している。 - サプライヤーサーバーとコンシューマーサーバーの間でレプリカ合意を作成している。
手順
コンシューマーを初期化するには、次を実行します。
dsconf <supplier_instance_name> repl-agmt init --suffix="dc=example,dc=com" <supplier_consumer_agreement_name>
# dsconf <supplier_instance_name> repl-agmt init --suffix="dc=example,dc=com" <supplier_consumer_agreement_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 複製するデータ量によっては、初期化に時間がかかる場合があります。
検証
合意のステータスを表示します。
dsconf <supplier_instance_name> repl-agmt init-status --suffix "dc=example,dc=com" <supplier_consumer_agreement_name> Agreement successfully initialized.
# dsconf <supplier_instance_name> repl-agmt init-status --suffix "dc=example,dc=com" <supplier_consumer_agreement_name> Agreement successfully initialized.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.3. Web コンソールを使用してオンラインでコンシューマーを初期化する リンクのコピーリンクがクリップボードにコピーされました!
サプライヤーインスタンスとコンシューマーインスタンスがオンラインの場合のみ、Web コンソールを使用してコンシューマーを初期化できます。
前提条件
-
サプライヤーサーバーとコンシューマーサーバーで
dc=example,dc=com接尾辞のレプリケーションを有効化している。 - サプライヤーサーバーとコンシューマーサーバーの間でレプリカ合意を作成している。
- Web コンソールで Directory Server インスタンスにログインしている。
手順
- Replication メニューを開き、レプリケートする接尾辞を選択します。
- Agreements タブで、レプリカ合意の名前の横にあるオプションメニュー (⋮) をクリックし、 を選択します。
ポップアップウィンドウの Yes, I am sure チェックボックスをオンにして初期化を確定します。
複製するデータ量によっては、初期化に時間がかかる場合があります。
検証
- 初期化が正常に完了した場合、Last Init Status 列に Initialized 状態が表示されます。
9.4. インスタンスがオフラインのときにコンシューマーを初期化する リンクのコピーリンクがクリップボードにコピーされました!
大規模なデータベースや多数のコンシューマーがある場合は、コマンドラインを使用して、オフライン初期化を行うことを検討してください。この手順には、サプライヤーサーバーからデータをエクスポートし、そのデータをコンシューマーサーバーにインポートすることが含まれます。
前提条件
-
サプライヤーサーバーとコンシューマーサーバーで
dc=example,dc=com接尾辞のレプリケーションを有効化している。 - サプライヤーサーバーとコンシューマーサーバーの間でレプリカ合意を作成している。
手順
サプライヤーサーバーで、次の手順を実行します。
サプライヤー上のインスタンスをシャットダウンします。
dsctl <supplier_instance_name> stop
# dsctl <supplier_instance_name> stopCopy to Clipboard Copied! Toggle word wrap Toggle overflow レプリケートする接尾辞を含む
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
# dsctl <supplier_instance_name> db2ldif userRoot /var/lib/dirsrv/slapd-<supplier_instance_name>/ldif/example.ldifCopy to Clipboard Copied! Toggle word wrap Toggle overflow サプライヤーでインスタンスを起動します。
dsctl <supplier_instance_name> start
# dsctl <supplier_instance_name> startCopy to Clipboard Copied! Toggle word wrap Toggle overflow
コンシューマーサーバーで、次の手順を実行します。
コンシューマー上のインスタンスをシャットダウンします。
dsctl <consumer_instance_name> stop
# dsctl <consumer_instance_name> stopCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
エクスポートされた
example.ldifファイルをコンシューマーの/var/lib/dirsrv/slapd-<consumer_instance_name>/ldif/ディレクトリーにコピーします。 -
/var/lib/dirsrv/slapd-<consumer_instance_name>/ldif/example.ldifファイルからuserRootデータベースをインポートします。dsctl ldif2db コマンドを使用してデータをインポートする方法の詳細は、サーバーがオフラインのときにコマンドラインを使用してデータをインポートする を参照してください。 コンシューマー側でインスタンスを起動します。
dsctl <consumer_instance_name> start
# dsctl <consumer_instance_name> startCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
合意のステータスを表示します。
dsconf <supplier_instance_name> repl-agmt init-status --suffix "dc=example,dc=com" <supplier_consumer_agreement_name> Agreement successfully initialized.
# dsconf <supplier_instance_name> repl-agmt init-status --suffix "dc=example,dc=com" <supplier_consumer_agreement_name> Agreement successfully initialized.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.5. 初期化タイムアウトの設定 リンクのコピーリンクがクリップボードにコピーされました!
タイムアウトが原因で大規模なデータベースの初期化が失敗する場合は、次のいずれかのパラメーターをより長い期間または無期限に設定します。
-
サーバー上のすべてのレプリカ合意のタイムアウトを設定する、
cn=configエントリーのnsslapd-idletimeout設定パラメーター。 -
レプリケーションマネージャーの DN 内の
nsIdleTimeoutパラメーターは、このレプリケーションマネージャーエントリーを使用するすべての合意のタイムアウトを設定します。
前提条件
- root 権限がある。
手順
タイムアウトをグローバルに無効にするには、
nsslapd-idletimeoutを0に設定します。dsconf <instance_name> config replace nsslapd-idletimeout=0 Successfully replaced value(s) for 'nsslapd-idletimeout': '0'
# dsconf <instance_name> config replace nsslapd-idletimeout=0 Successfully replaced value(s) for 'nsslapd-idletimeout': '0'Copy to Clipboard Copied! Toggle word wrap Toggle overflow cn=replication manager,cn=configエントリーのタイムアウトを無効にするには、以下のコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第10章 レプリケーショントポロジーからのインスタンスの削除 リンクのコピーリンクがクリップボードにコピーされました!
ハードウェアの停止や構造の変更など、特定の状況では、管理者はレプリケーショントポロジーから Directory Server インスタンスを削除します。インスタンスを削除する手順は、削除するレプリカのロールによって異なります。
10.1. レプリケーショントポロジーからのコンシューマーまたはハブの削除 リンクのコピーリンクがクリップボードにコピーされました!
レプリケーショントポロジーでコンシューマーまたはハブが不要になった場合は、これを削除します。
前提条件
- 削除するインスタンスがコンシューマーまたはハブである。
- 削除するホストがハブであり、トポロジー内の他のサーバーのサプライヤーとしても機能する場合、分離しないように、これらのサーバーにデータを複製するように他のサプライヤーまたはハブを設定している。
手順
削除するコンシューマーまたはハブ:
接尾辞とそれに対応するデータベースをリスト表示します。
dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix list dc=example,dc=com (userroot)
# dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix list dc=example,dc=com (userroot)Copy to Clipboard Copied! Toggle word wrap Toggle overflow データベースの名前を書き留めます。
データベースを読み取り専用モードに設定して、追加の更新を回避します。
dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix set --enable-readonly "userroot"
# dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix set --enable-readonly "userroot"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
削除するコンシューマーまたはハブとレプリカ合意を結んでいるすべてのサプライヤーで以下を実行します。
レプリケートされる接尾辞のレプリカ合意をリスト表示します。
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 ...
# 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 Copied! Toggle word wrap Toggle overflow cn属性には、次の手順に必要なレプリカ合意名が含まれます。レプリカ合意を削除します。
dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt delete --suffix "dc=example,dc=com" example-agreement
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt delete --suffix "dc=example,dc=com" example-agreementCopy to Clipboard Copied! Toggle word wrap Toggle overflow
コンシューマーまたはハブで、すべての接尾辞のレプリケーションを無効にします。
dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com replication disable --suffix "dc=example,dc=com"
# dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com replication disable --suffix "dc=example,dc=com"Copy to Clipboard Copied! Toggle word wrap Toggle overflow このホストがハブの場合は、レプリケーションを無効にすると、このサーバーのこの接尾辞のすべてのレプリカ合意も自動的に削除されます。
次のステップ
削除されたインスタンスをテスト目的に使用する場合は、読み取り専用モードを無効にします。
dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix set --disable-readonly userroot
# dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix set --disable-readonly userrootCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要テスト目的でトポロジーから削除したインスタンスを使用する場合は、クライアントが引き続き使用していないことを確認してください。
インスタンスを削除します。
dsctl instance_name remove --do-it
# dsctl instance_name remove --do-itCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2. レプリケーショントポロジーからのサプライヤーの削除 リンクのコピーリンクがクリップボードにコピーされました!
レプリケーショントポロジーからサプライヤーをきれいに削除することは、ハブまたはコンシューマーを削除するよりも複雑です。これは、トポロジー内のすべてのサプライヤーが他のサプライヤーに関する情報を保存し、サプライヤーが利用できない状態になった場合でも、その情報を保持するためです。
Directory Server は、レプリカ更新ベクトル (RUV) と呼ばれるメタデータセットに、レプリケーショントポロジーに関する情報を維持します。RUV には、ID と URL 等のサプライヤーに関する情報、ローカルサーバー上の最新の変更状態番号 (CSN)、および最初の変更の CSN などが含まれています。サプライヤーとコンシューマーはいずれも RUV 情報を保存し、これを使用してレプリケーションの更新を制御します。
サプライヤーを完全に削除するには、設定エントリーと共にそのメタデータを削除する必要があります。
前提条件
- 削除するインスタンスがサプライヤーである。
- 削除するホストがトポロジー内の他のサーバーのサプライヤーとしても機能する場合、分離しないように、これらのサーバーにデータを複製するように他のサプライヤーまたはハブを設定している。
手順
削除するサプライヤーで、以下を行います。
接尾辞とそれに対応するデータベースをリスト表示します。
dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix list dc=example,dc=com (userroot)
# dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix list dc=example,dc=com (userroot)Copy to Clipboard Copied! Toggle word wrap Toggle overflow データベースの名前を書き留めます。
データベースを読み取り専用モードに設定して、追加の更新を回避します。
dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix set --enable-readonly "userroot"
# dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix set --enable-readonly "userroot"Copy to Clipboard Copied! Toggle word wrap Toggle overflow トポロジー内の他のすべてのサーバーが、このサプライヤーからすべてのデータを受け取るまで待ちます。確認のため、他のサーバーの CSN が、削除するサプライヤーの CSN と同等以上であることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow レプリカ ID を表示します。
dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com replication get --suffix "dc=example,dc=com" | grep -i "nsds5replicaid" nsDS5ReplicaId: 1
# dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com replication get --suffix "dc=example,dc=com" | grep -i "nsds5replicaid" nsDS5ReplicaId: 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、レプリカ ID は
1です。この手順の最後のステップのレプリカ ID を書き留めます。
削除するホストとレプリカ合意があるすべてのサプライヤーで、以下を実施します。
レプリケートされる接尾辞のレプリカ合意をリスト表示します。
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 ...
# 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 Copied! Toggle word wrap Toggle overflow cn属性には、次の手順に必要なレプリカ合意名が含まれます。レプリカ合意を削除します。
dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt delete --suffix "dc=example,dc=com" example-agreement
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt delete --suffix "dc=example,dc=com" example-agreementCopy to Clipboard Copied! Toggle word wrap Toggle overflow
削除するサプライヤーで、すべての接尾辞のレプリケーションを無効にします。
dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com replication disable --suffix "dc=example,dc=com"
# dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com replication disable --suffix "dc=example,dc=com"Copy to Clipboard Copied! Toggle word wrap Toggle overflow レプリケーションを無効にすると、このサーバーのこの接尾辞のレプリカ合意もすべて自動的に削除されます。
-
次に進む前に、
ds-replcheck出力のReplica RUVセクションにリスト表示されているすべての Directory Server インスタンスがオンラインであることを確認します。 トポロジー内の残りのサプライヤーのいずれかで、レプリカ ID の RUV をクリーンアップします。
dsconf -D "cn=Directory Manager" ldap://server.example.com repl-tasks cleanallruv --suffix "dc=example,dc=com" --replica-id 1
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-tasks cleanallruv --suffix "dc=example,dc=com" --replica-id 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドでは、この手順の前のステップで表示されるレプリカ 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
# 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=comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
削除されたインスタンスをテスト目的に使用する場合は、読み取り専用モードを無効にします。
dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix set --disable-readonly userroot
# dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix set --disable-readonly userrootCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要テスト目的でトポロジーから削除したインスタンスを使用する場合は、クライアントが引き続き使用していないことを確認してください。
インスタンスを削除します。
dsctl instance_name remove --do-it
# dsctl instance_name remove --do-itCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第11章 マルチサプライヤーレプリケーショントポロジーでのレプリカの独占の防止 リンクのコピーリンクがクリップボードにコピーされました!
マルチサプライヤーレプリケーショントポロジーでは、大規模な更新負荷のサプライヤーが、他のサプライヤーも更新できないようにレプリカを独占する場合があります。
このセクションでは、独占が発生する状況、この問題を特定する方法、独占状態を回避するためにサプライヤーを設定する方法を説明します。
11.1. 独占が発生する場合 リンクのコピーリンクがクリップボードにコピーされました!
マルチサプライヤーレプリケーションの機能の 1 つは、サプライヤーがレプリカへの排他的アクセスを取得することです。ロックアウト時にサプライヤーがアクセスの取得を試みると、レプリカはビジー応答を送り、サプライヤーは nsds5ReplicaBusyWaitTime パラメーターに設定した時間が待機してから次の試行を開始します。その間、サプライヤーは更新を別のレプリカに送信します。最初のレプリカが解放されると、サプライヤーはこのホストに更新を送ります。
ロックアウトされたサプライヤーが大規模な更新負荷の配下にある場合や、変更ログに保留中の更新が多数あると、問題になる場合があります。この状況では、ロックしているサプライヤーは更新の送信を終えると、すぐに同じレプリカの再取得を試みます。他のサプライヤーは依然として待機している可能性があるため、このような試行はほとんどの場合で成功します。nsds5ReplicaSessionPauseTime パラメーターで、2 つの更新セッション間で一時停止を設定できます。これにより、単一のサプライヤーが数時間またはそれ以上にわたってレプリカを独占することになります。
11.2. レプリカの独占を識別するためのレプリケーションロギングの有効化 リンクのコピーリンクがクリップボードにコピーされました!
1 つ以上のサプライヤーが頻繁に高い更新負荷にあり、レプリカが頻繁に更新を受信しない場合は、レプリケーションメッセージのロギングを有効にして、独占状態を特定します。
前提条件
- レプリケーショントポロジーに複数のサプライヤーがある。
手順
レプリケーションロギングを有効にします。
dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-errorlog-level=8192
# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-errorlog-level=8192Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、レプリケーションロギングのみを有効にし、他のエラーメッセージのロギングは無効である点に注意してください。
/var/log/dirsrv/slapd-instance_name/errorsログファイルを監視し、以下のエラーメッセージを検索します。Replica Busy! Status: [Error (1) Replication error acquiring replica: replica busy]
Replica Busy! Status: [Error (1) Replication error acquiring replica: replica busy]Copy to Clipboard Copied! Toggle word wrap Toggle overflow Directory Server がしばしばこのエラーをログに記録することがある点に注意してください。ただし、レプリカが頻繁に更新を受信せず、サプライヤーがこのエラーをログに記録する場合は、設定を更新してこの問題を解決することを検討してください。
11.3. レプリカの独占を回避するためのサプライヤーの設定 リンクのコピーリンクがクリップボードにコピーされました!
この手順では、レプリカの独占を防ぐために、サプライヤーでパラメーターを設定する方法を説明します。
環境と負荷の違いにより、状況に関連するパラメーターのみを設定し、実際の環境に応じて値を調整します。
前提条件
- レプリケーショントポロジーに複数のサプライヤーがある。
-
Directory Server が頻繁に
Replica Busy!Status: [Error (1) Replication error acquiring replica: replica busy]エラーを記録する。
手順
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
# dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt set --suffix "dc=example,dc=com" --busy-wait-time 5 replication_agreement_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、待機時間を
5秒に設定します。この設定は、指定されたレプリカ合意にのみ適用されます。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
# dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt set --suffix "dc=example,dc=com" --session-pause-time 15 replication_agreement_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、一時停止を
15秒に設定します。デフォルトでは、nsds5ReplicaSessionPauseTimeはnsds5ReplicaBusyWaitTimeの値よりも 1 秒長くなるように設計されています。この設定は、指定されたレプリカ合意にのみ適用されます。nsds5ReplicaReleaseTimeoutパラメーターを設定して、更新の送信が完了したかどうかに関わらず、指定時間後にレプリケーションセッションを終了します。dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication set --suffix "dc=example,dc=com" --repl-release-timeout 90
# dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication set --suffix "dc=example,dc=com" --repl-release-timeout 90Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、タイムアウトを
90秒に設定します。この設定は、指定した接尾辞のすべてのレプリカ合意に適用されます。オプション: サプライヤーのタイムアウト期間を設定して、低速または切断された接続を介して更新を無限に送信しようとするコンシューマーに接続されたままにならないようにします。
dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt set --conn-timeout 600 --suffix "dc=example,dc=com" replication_agreement_name
# dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt set --conn-timeout 600 --suffix "dc=example,dc=com" replication_agreement_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、タイムアウトを
600秒 (10 分) に設定します。最適な値を特定するには、アクセスログでレプリケーションプロセスにかかる平均時間を確認し、それに応じてタイムアウト期間を設定します。
第12章 レプリケーション環境のインスタンスがオフラインになった後のレプリケーション更新の強制 リンクのコピーリンクがクリップボードにコピーされました!
通常のメンテナンスでレプリケーションに関連する Directory Server インスタンスを停止する場合、インスタンスがオンラインに戻ったら、サプライヤーは直ちにディレクトリーデータを更新する必要があります。この更新は、コマンドラインおよび Web コンソールを使用して強制できます。
12.1. コマンドラインを使用したレプリケーション更新の強制 リンクのコピーリンクがクリップボードにコピーされました!
サプライヤーで以下の手順を実行し、example-agreement の dc=example,dc=com 接尾辞のレプリケーション更新を強制します。
前提条件
- レプリケーションが設定されている。
- コンシューマーが初期化されている。
手順
レプリカ合意に更新スケジュールが設定されているかどうかを確認します。
dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt get --suffix "dc=example,dc=com" example-agreement
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt get --suffix "dc=example,dc=com" example-agreementCopy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの出力に
nsDS5ReplicaUpdateSchedule: *が含まれている、またはnsDS5ReplicaUpdateScheduleパラメーターが存在しない場合、更新スケジュールは設定されていません。nsDS5ReplicaUpdateScheduleに、以下のようなスケジュールが含まれる場合には、値を書き留めておきます。nsDS5ReplicaUpdateSchedule: 0800-2200 0246
nsDS5ReplicaUpdateSchedule: 0800-2200 0246Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新スケジュールが設定されている場合は、以下のコマンドを実行して一時的に無効にします。
dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt set --schedule \ --suffix "dc=example,dc=com" example-agreement*
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt set --schedule \ --suffix "dc=example,dc=com" example-agreement*Copy to Clipboard Copied! Toggle word wrap Toggle overflow レプリカ合意を一時的に無効にします。
dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt disable --suffix "dc=example,dc=com" example-agreement
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt disable --suffix "dc=example,dc=com" example-agreementCopy to Clipboard Copied! Toggle word wrap Toggle overflow レプリカ合意を再度有効にして、レプリケーションの更新を強制的に実行します。
dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt enable --suffix "dc=example,dc=com" example-agreement
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt enable --suffix "dc=example,dc=com" example-agreementCopy to Clipboard Copied! Toggle word wrap Toggle overflow この手順の最初にレプリケーションスケジュールが設定されていた場合、スケジュールを以前の値に設定します。
dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt set --schedule "0800-2200 0246" --suffix "dc=example,dc=com" example-agreement
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt set --schedule "0800-2200 0246" --suffix "dc=example,dc=com" example-agreementCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
レプリケーションのステータスを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.2. Web コンソールを使用したレプリケーション更新の強制 リンクのコピーリンクがクリップボードにコピーされました!
サプライヤーで以下の手順を実行し、レプリケーション更新を強制します。
前提条件
- レプリケーションが設定されている。
- コンシューマーが初期化されている。
- Web コンソールでインスタンスにログインしている。
手順
-
Replicationメニューを開きます。 -
dc=example,dc=com接尾辞を選択します。 -
Agreementsタブを開きます。 レプリカ合意に更新スケジュールが設定されているかどうかを確認します。
-
契約の横にあるオーバーフローメニューをクリックし、
Edit Agreementを選択します。 Schedulingタブで、現在設定されている値をメモします。Use A Custom Scheduleが選択されていない場合、スケジュールは設定されません。
-
契約の横にあるオーバーフローメニューをクリックし、
レプリカ合意の横にあるオーバーフローメニューをクリックし、
Disable/Enable Agreementを選択して合意を無効にします。State列の合意のステータスがDisabledになります。レプリカ合意の横にあるオーバーフローメニューをもう一度クリックし、
Disable/Enable Agreementを選択して、レプリカ合意を再度有効にし、レプリケーションの更新を適用します。State列の合意のステータスがEnabledになります。この手順の最初にレプリケーションスケジュールが設定されていた場合、スケジュールを以前の値に設定します。
- オーバーフローメニューをクリックし、 → を選択します。
-
Schedulingタブで、以前の値を設定します。
検証
レプリケーションのステータスを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第13章 レプリカのロールの変更 リンクのコピーリンクがクリップボードにコピーされました!
レプリケーショントポロジーでは、レプリカのロールを変更できます。たとえば、ハードウェアの停止によりサプライヤーが利用できない場合は、コンシューマーをサプライヤーにプロモートできます。逆に、ハードウェアリソースが少ないサプライヤーをコンシューマーにデモートし、その後新しいハードウェアを持つ別のサプライヤーを追加することもできます。
13.1. コマンドラインを使用したレプリカのプロモート リンクのコピーリンクがクリップボードにコピーされました!
以下のようにプロモートできます。
- コンシューマーをハブまたはサプライヤーへ
- ハブをサプライヤーへ
本セクションでは、dc=example,dc=com 接尾辞のレプリカをプロモートする方法を説明します。
前提条件
- Directory Server インスタンスがレプリケーショントポロジーのメンバーである。
- プロモートするレプリカがコンシューマーまたはハブである。
手順
プロモートするレプリカがレプリカ合意を持つハブで、ハブがプロモート後にデータを他のホストに送信しないようにするには、レプリカ合意を削除します。
ハブのレプリカ合意をリスト表示します。
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 ...
# 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 Copied! Toggle word wrap Toggle overflow cn属性には、次の手順に必要なレプリカ合意名が含まれます。ハブからレプリカ合意を削除します。
dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt delete --suffix "dc=example,dc=com" example-agreement
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt delete --suffix "dc=example,dc=com" example-agreementCopy to Clipboard Copied! Toggle word wrap Toggle overflow
インスタンスをプロモートします。
コンシューマーまたはハブをサプライヤーにプロモートする場合は、以下を入力します。
dsconf -D "cn=Directory Manager" ldap://server.example.com replication promote --suffix "dc=example,dc=com" --newrole "supplier" --replica-id 2
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication promote --suffix "dc=example,dc=com" --newrole "supplier" --replica-id 2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は
1から65534の間の一意の整数値である必要があります。コンシューマーをハブにプロモートする場合は、以下を入力します。
dsconf -D "cn=Directory Manager" ldap://server.example.com replication promote --suffix "dc=example,dc=com" --newrole "hub"
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication promote --suffix "dc=example,dc=com" --newrole "hub"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 新しいロールのレプリカがトポロジー内の他のホストに更新を送信する必要がある場合は、レプリカ合意を作成します。
13.2. Web コンソールを使用したレプリカのプロモート リンクのコピーリンクがクリップボードにコピーされました!
以下のようにプロモートできます。
- コンシューマーをハブまたはサプライヤーへ
- ハブをサプライヤーへ
本セクションでは、dc=example,dc=com 接尾辞のレプリカをプロモートする方法を説明します。
前提条件
- Directory Server インスタンスがレプリケーショントポロジーのメンバーである。
- プロモートするレプリカがコンシューマーまたはハブである。
- Web コンソールでインスタンスにログインしている。
手順
プロモートするレプリカがレプリカ合意を持つハブで、ハブがプロモート後にデータを他のホストに送信しないようにするには、レプリカ合意を削除します。
- → に移動します。
-
削除する合意の横にある をクリックし、
Delete Agreementを選択します。
→ に移動し、 ボタンをクリックします。
コンシューマーまたはハブをサプライヤーにプロモートする場合は、
Supplierを選択して一意のレプリカ ID を入力します。重要トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は
1から65534の間の一意の整数値である必要があります。-
コンシューマーをハブにプロモートする場合は、
Hubを選択します。
-
Yes, I am sure. を選択します。 - をクリックします。
- 新しいロールのレプリカがトポロジー内の他のホストに更新を送信する必要がある場合は、レプリカ合意を作成します。
13.3. コマンドラインを使用したレプリカのデモート リンクのコピーリンクがクリップボードにコピーされました!
以下のようにデモートできます。
- サプライヤーまたはハブをコンシューマーへ
- ハブをコンシューマーへ
本セクションでは、dc=example,dc=com 接尾辞のレプリカをデモートする方法を説明します。
前提条件
- Directory Server インスタンスがレプリケーショントポロジーのメンバーである。
- デモートするレプリカがサプライヤーまたはハブである。
手順
デモートするレプリカに必要なくなったレプリカ合意がある場合は、たとえばレプリカをコンシューマーにデモートする場合、レプリカ合意を削除します。
レプリカのレプリカ合意をリスト表示します。
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 ...
# 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 Copied! Toggle word wrap Toggle overflow cn属性には、次の手順に必要なレプリカ合意名が含まれます。レプリカからレプリカ合意を削除します。
dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt delete --suffix "dc=example,dc=com" example-agreement
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt delete --suffix "dc=example,dc=com" example-agreementCopy to Clipboard Copied! Toggle word wrap Toggle overflow
インスタンスをデモートします。
dsconf -D "cn=Directory Manager" ldap://server.example.com replication demote --suffix "dc=example,dc=com" --newrole "hub_or_consumer"
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication demote --suffix "dc=example,dc=com" --newrole "hub_or_consumer"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定するロールに応じて
--newroleパラメーターをhubまたはconsumerに設定します。- レプリカをハブとして設定していて、トポロジー内の他のホストに更新を送信する必要がある場合は、レプリカ合意を作成します。
13.4. Web コンソールを使用したレプリカのデモート リンクのコピーリンクがクリップボードにコピーされました!
以下のようにデモートできます。
- サプライヤーまたはハブをコンシューマーへ
- ハブをコンシューマーへ
本セクションでは、dc=example,dc=com 接尾辞のレプリカをデモートする方法を説明します。
前提条件
- Directory Server インスタンスがレプリケーショントポロジーのメンバーである。
- デモートするレプリカがサプライヤーまたはハブである。
- Web コンソールでインスタンスにログインしている。
手順
デモートするレプリカに必要なくなったレプリカ合意がある場合は、たとえばレプリカをコンシューマーにデモートする場合、レプリカ合意を削除します。
- → に移動します。
-
削除する合意の横にある をクリックし、
Delete Agreementを選択します。
- → に移動し、 ボタンをクリックします。
- 新しいレプリカロールを選択します。
-
Yes, I am sure. を選択します。 - をクリックします。
- 新しいロールのレプリカがトポロジー内の他のホストに更新を送信する必要がある場合は、レプリカ合意を作成します。
第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接尾辞のレプリケーションを有効にしている。
手順
変更ログのトリミングを設定します。
changelog エントリーの最長期間を設定するには、以下を入力します。
dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --suffix "dc=example,dc=com" --max-age "4w"
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --suffix "dc=example,dc=com" --max-age "4w"Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、最長期間を 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"
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --suffix "dc=example,dc=com" --max-entries "100000"Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、changelog のエントリーの最大数を 100,000 に設定します。
デフォルトでは、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
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --suffix "dc=example,dc=com" --trim-interval 600Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、間隔を 10 分 (600 秒) に設定します。
検証
接尾辞の changelog 設定を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、デフォルトとは異なるパラメーターのみを表示します。
14.2. 大規模な changelog の手動によるサイズ縮小 リンクのコピーリンクがクリップボードにコピーされました!
レプリケーション changelog のトリミングが有効になっていない場合など、特定の状況では、changelog が過度に大きなサイズに増大する可能性があります。これを修正するには、changelog のサイズを手動で減らすことができます。
この手順では、dc=example,dc=com 接尾辞の変更ログをトリミングする方法を説明します。サプライヤーでこの手順を実行します。
前提条件
-
dc=example,dc=com接尾辞のレプリケーションを有効にしている。
手順
オプション: changelog のサイズを表示します。
dc=example,dc=com接尾辞のバックエンドデータベースを特定します。dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list dc=example,dc=com (userroot)
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list dc=example,dc=com (userroot)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 括弧内の名前は、対応する接尾辞のデータを保存するバックエンドデータベースです。
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
# 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.dbCopy to Clipboard Copied! Toggle word wrap Toggle overflow
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
# 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: 300Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力に特定の属性が表示されない場合、Directory Server はデフォルト値を使用します。
一時的に、トリミングに関連するパラメーターを減らします。
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
# 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 60Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要パフォーマンス上の理由から、短い間隔設定を永続的に使用しないでください。
-
--trim-intervalパラメーターに設定した時間が経過するのを待ちます。 changelog を圧縮して、ディスク領域を再度確保します。
dsconf -D "cn=Directory Manager" ldap://server.example.com backend compact-db --only-changelog
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend compact-db --only-changelogCopy to Clipboard Copied! Toggle word wrap Toggle overflow changelog パラメーターを、一時的に減らす前の値にリセットします。
dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --suffix "dc=example,dc=com" --max-age "4w" --trim-interval 300
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --suffix "dc=example,dc=com" --max-age "4w" --trim-interval 300Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
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
# 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.dbCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第15章 レプリケーション changelog の暗号化 リンクのコピーリンクがクリップボードにコピーされました!
攻撃者がサーバーのファイルシステムにアクセスできる場合は、レプリケーション changelog を暗号化してインスタンスのセキュリティーを強化します。
changelog 暗号化は、サーバーの TLS 暗号化キーと同じ PIN を使用してキーのロックを解除します。サーバーの起動時に PIN を手動で入力するか、PIN ファイルを使用する必要があります。
Directory Server は、無作為に生成された対称暗号キーを使用して、changelog を暗号化および復号化します。サーバーは、設定された暗号ごとに異なるキーを使用します。これらの鍵は、サーバーの TLS 証明書から公開鍵を使用してラップされ、生成したラップ済みキーがサーバーの設定ファイル内に保存されます。属性暗号化の効果的な強度は、ラップに使用されるサーバーの TLS キーの強度と同じです。サーバーの秘密鍵と PIN にアクセスできないと、ラップ済みのコピーから対称キーを復旧することができません。
15.1. コマンドラインを使用した changelog の暗号化 リンクのコピーリンクがクリップボードにコピーされました!
レプリケーショントポロジーのセキュリティーを向上させるには、サプライヤーおよびハブの changelog を暗号化します。この手順では、dc=example,dc=com 接尾辞に対して changelog 暗号化を有効にする方法を説明します。
前提条件
- サーバーの TLS 暗号化が有効になっている。
- ホストは、レプリケーショントポロジー内のサプライヤーまたはハブです。
手順
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"
# 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 Copied! Toggle word wrap Toggle overflow dc=example,dc=com接尾辞の変更ログの暗号化を有効にします。dsconf -D "cn=Directory Manager" ldap://server.example.com replication --suffix "dc=example,dc=com" --encrypt
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication --suffix "dc=example,dc=com" --encryptCopy to Clipboard Copied! Toggle word wrap Toggle overflow /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
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication import-changelog from-ldif -r "dc=example,dc=com" /tmp/changelog.ldifCopy to Clipboard Copied! Toggle word wrap Toggle overflow インスタンスを再起動します。
dsctl instance_name restart
# dsctl instance_name restartCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
- エントリーの更新など、LDAP ディレクトリーに変更を加えます。
インスタンスを停止します。
dsctl instance_name stop
# dsctl instance_name stopCopy to Clipboard Copied! Toggle word wrap Toggle overflow 接尾辞とそれに対応するデータベースをリスト表示します。
dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list dc=example,dc=com (userroot)
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list dc=example,dc=com (userroot)Copy to Clipboard Copied! Toggle word wrap Toggle overflow changelog の暗号化を有効にするデータベースの名前を書き留めておきます。
以下のコマンドを実行して、changelog の一部を表示します。
dbscan -f /var/lib/dirsrv/slapd-instance_name/db/userroot/replication_changelog.db | tail -50
# dbscan -f /var/lib/dirsrv/slapd-instance_name/db/userroot/replication_changelog.db | tail -50Copy to Clipboard Copied! Toggle word wrap Toggle overflow changelog が暗号化されている場合は、暗号化されたデータのみが表示されます。
インスタンスを起動します。
dsctl instance_name start
# dsctl instance_name startCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第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が存在する。
手順
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"
# 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 Copied! Toggle word wrap Toggle overflow このコマンドは、
authorityRevocationList、accountUnlockTime、memberof属性を増分更新から除外し、accountUnlockTimeのみを合計更新から除外します。- 注記
-
合計更新と増分更新から同じ属性のリストを除外する場合は、the--
frac-list オプションを使用して、除外される属性のリストをnsDS5ReplicatedAttributeList設定属性にのみ追加します。
-
オプション: 空のレプリケーション更新を防ぐ場合は、
--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
# dsconf instance_name repl-agmt list --suffix=dc=example,dc=com | grep -i nsDS5ReplicatedAttributeList nsDS5ReplicatedAttributeList: (objectclass=) $ EXCLUDE authorityRevocationList accountUnlockTime memberof nsDS5ReplicatedAttributeListTotal: (objectclass=) $ EXCLUDE accountUnlockTimeCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 重要
-
nsDS5ReplicatedAttributeListとnsDS5ReplicatedAttributeListTotalの値には(objectclass=*) $ EXCLUDE部分が含まれている必要があります。たとえば、ldapmodifyユーティリティーを使用して属性を直接編集する場合は、除外する属性のリストとともにこの部分を指定する必要があります。
-
nsDS5ReplicatedAttributeList -
nsDS5ReplicatedAttributeListTotal
17.2. Web コンソールを使用して、合計更新と増分更新から属性を除外する リンクのコピーリンクがクリップボードにコピーされました!
基本的なシナリオでは、部分レプリケーションでは、合計更新と増分更新から同じ属性リストを除外します。ただし、パフォーマンス上などの理由で、増分更新からさまざまな属性を除外するように Directory Server を設定できます。
前提条件
-
dc=example,dc=com接尾辞を複製し、レプリカ合意example_agreementが存在する。
手順
- → に移動します。
- 部分レプリケーションを設定する合意の Options メニュー (⫶) をクリックし、 を選択してウィザードウィンドウを開きます。
Fractional Settings タブを開き、次のフィールドを設定します。
- 合計更新と増分更新から同じ属性を除外する場合は、これらの属性を Exclude Attributes フィールドにのみ追加します。
合計更新と増分更新から異なる属性を除外する場合:
-
増分更新から除外される属性を、
nsDS5ReplicatedAttributeListパラメーターを設定する 除外属性 フィールドに追加します。 -
合計 (初期) 更新から除外される属性を、
nsDS5ReplicatedAttributeListTotalパラメーターを設定する Exclude Init Attributes フィールドに追加します。
-
増分更新から除外される属性を、
- オプション: 空のレプリケーション更新を防止する場合は、Directory Server がレプリケーションから削除する属性を Strip Attributes フィールドに追加します。
- Save Agreement ボタンをクリックします。
検証
- 変更を表示するには、レプリカ合意設定を開きます。
17.3. 部分レプリケーションにおける空の更新の防止 リンクのコピーリンクがクリップボードにコピーされました!
部分レプリケーションでは、レプリケーション更新から属性が除外されます (nsDS5ReplicatedAttributeList、nsDS5ReplicatedAttributeListTotal)。しかし、除外された属性への変更があっても、修正イベントが発生し、空のレプリケーション更新が生成されます。
空の更新を防ぐには、Directory Server が空のレプリケーションイベントで送信せず、更新シーケンスから削除する属性のリストを追加する nsds5ReplicaStripAttrs パラメーターを使用します。これには論理的に、modifiersName のような操作属性が含まれる必要があります。レプリケーションイベントが空でない場合、Directory Server は削除された属性を他の変更とともに複製します。
たとえば、accountUnlockTime 属性をレプリケーションから除外しました。ロックされたユーザーの場合、accountUnlockTime で設定された期間が経過すると、Directory Server は自動的にユーザーのロックを解除します。accountUnlockTime 属性のみが変更され、その属性はレプリケーションから除外されます。ただし、このロック解除イベントは、操作属性 internalmodifytimestamp も変更します。これにより、ユーザーアカウントが変更されたため、レプリケーションイベントがトリガーされます。ただし、複製されるデータは新しい変更タイムスタンプのみであり、それ以外の場合は更新は空になります。ログイン時間やパスワードの有効期限に関連する属性が多数ある場合、空のレプリケーション更新が多数作成され、サーバーのパフォーマンスに悪影響を与えたり、関連するアプリケーションに干渉したりする可能性があります。
次の手順では、空の更新を防ぐために不要な属性を削除します。
前提条件
-
dc=example,dc=com接尾辞を複製し、レプリカ合意example_agreementが存在する。
手順
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# dsconf -D "cn=Directory Manager" instance_name repl-agmt set example_agreement \ --suffix="dc=example,dc=com" --strip-list="modifiersname \ modifytimestamp internalmodifiersname" Successfully updated agreementCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
レプリカ合意設定を表示します。
dsconf instance_name repl-agmt list --suffix=dc=example,dc=com | grep -i nsds5ReplicaStripAttrs nsds5ReplicaStripAttrs: modifiersname modifytimestamp internalmodifiersname
# dsconf instance_name repl-agmt list --suffix=dc=example,dc=com | grep -i nsds5ReplicaStripAttrs nsds5ReplicaStripAttrs: modifiersname modifytimestamp internalmodifiersnameCopy to Clipboard Copied! Toggle word wrap Toggle overflow
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 のパスワード
手順
ldapsearchユーティリティーを使用して、keep-alive エントリーを見つけます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 各 keep-alive エントリーは特定のサプライヤーに固有であり、識別名 (DN) にサプライヤーのレプリカ ID が含まれます。この例では、レプリカ ID は
1です。
第18章 コマンドラインを使用したレプリケーショントポロジーの監視 リンクのコピーリンクがクリップボードにコピーされました!
サプライヤー、コンシューマー、およびハブの間のディレクトリーデータレプリケーションの状態を監視するには、レプリケーションの進行状況、レプリカ ID、変更の数、およびその他のパラメーターに関する情報を提供するレプリケーショントポロジーレポートを使用できます。レポートをより速く生成して読みやすくするために、独自の認証情報およびエイリアスを設定できます。
18.1. コマンドラインを使用したレプリケーショントポロジーレポートの表示 リンクのコピーリンクがクリップボードにコピーされました!
レプリケーショントポロジー内の各合意のレプリケーションステータスに関する全体的な情報を表示するには、レプリケーショントポロジーレポートを表示できます。これを行うには、dsconf replication monitor コマンドを使用します。
前提条件
- ホストがレプリケーショントポロジーのメンバーである。
- コンシューマーを初期化している。
手順
レプリケーショントポロジーレポートを表示するには、次のように入力します。
dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication monitor
# dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication monitorCopy to Clipboard Copied! Toggle word wrap Toggle overflow dsconfユーティリティーは、トポロジー内の各インスタンスの認証情報を要求します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.2. .dsrc ファイルでのレプリケーション監視の認証情報の設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、dsconf replication monitor コマンドは、リモートインスタンスに対して認証する際に、バインド DN およびパスワードを要求します。将来、レポートをより速く簡単に生成するために、ユーザーの ~/.dsrc ファイルで、トポロジー内のサーバーごとにバインド DN と任意でパスワードを設定できます。
前提条件
- ホストがレプリケーショントポロジーのメンバーである。
- コンシューマーを初期化している。
手順
-
オプション:
~/.dsrcファイルを作成します。 ~/.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
[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:S3cretCopy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、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
検証
-
dsconf replication monitorコマンドを実行して、dsconfユーティリティーが~/.dsrcファイルで設定された認証情報を使用するかどうかを確認します。詳しくは、コマンドラインを使用したレプリケーショントポロジーレポートの表示 を参照してください。
18.3. レプリケーショントポロジーモニタリング出力でのエイリアスの使用 リンクのコピーリンクがクリップボードにコピーされました!
レポートを読みやすくするために、レポート出力に表示される独自のエイリアスを設定できます。デフォルトでは、レプリケーション監視レポートにはリモートサーバーのホスト名が含まれています。
前提条件
- ホストがレプリケーショントポロジーのメンバーである。
- コンシューマーを初期化している。
手順
レポートにエイリアスを表示する場合は、次のいずれかの方法を使用します。
~/.dsrcファイルでエイリアスを定義します。[repl-monitor-aliases] M1 = server1.example.com:389 M2 = server2.example.com:389
[repl-monitor-aliases] M1 = server1.example.com:389 M2 = server2.example.com:389Copy to Clipboard Copied! Toggle word wrap Toggle overflow -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
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication monitor -a M1=server1.example.com:389 M2=server2.example.com:389Copy to Clipboard Copied! Toggle word wrap Toggle overflow
どちらの場合も、dsconf replication monitor コマンドは出力にエイリアスを表示します。
第19章 Web コンソールを使用したレプリケーショントポロジーの監視 リンクのコピーリンクがクリップボードにコピーされました!
サプライヤー、コンシューマー、およびハブの間のディレクトリーデータレプリケーションの状態を監視するには、レプリケーションの進行状況、レプリカ ID、変更の数、およびその他のパラメーターに関する情報を提供するレプリケーショントポロジーレポートを使用できます。レポートをより速く生成して読みやすくするために、独自の認証情報およびエイリアスを設定できます。
19.1. Web コンソールを使用したレプリケーショントポロジーレポートの表示 リンクのコピーリンクがクリップボードにコピーされました!
レプリケーショントポロジー内の各合意のレプリケーションステータスに関する全体的な情報を表示するには、レプリケーショントポロジーレポートを表示できます。
前提条件
- ホストがレプリケーショントポロジーのメンバーである。
- コンシューマーを初期化している。
- Web コンソールにログインしている。
手順
- → に移動します。 ページが開きます。
- をクリックします。
リモートインスタンスにログインするためのパスワードを入力し、 をクリックします。Directory Server は、既存のレプリケーションアグリーメントのバインド DN 値を使用します。
レプリケーショントポロジーレポートは、 タブで生成されます。
注記別のレプリケーショントポロジーレポートを生成するには、 タブに移動します。
19.2. Web コンソールを使用したレプリケーション監視の認証情報の設定 リンクのコピーリンクがクリップボードにコピーされました!
レプリケーショントポロジーレポートをより迅速かつ簡単に生成するために、認証用のトポロジー内のサーバーごとに、独自のバインド DN と任意でパスワードを設定できます。この場合、レプリケーショントポロジーレポートを生成するたびにレプリケーション認証情報を確認する必要はありません。デフォルトでは、Directory Server は既存のレプリケーションアグリーメントからこれらの認証情報を取得します。
前提条件
- ホストがレプリケーショントポロジーのメンバーである。
- コンシューマーを初期化している。
- Web コンソールにログインしている。
手順
- → に移動します。 ページが開きます。
- をクリックします。
リモートインスタンスへの認証に使用するレプリケーションのログイン認証情報を入力します。
-
Hostname。サーバーが認証するリモートインスタンスのホスト名。 -
Port。リモートインスタンスポート。 -
Bind DN。認証に使用される DN をリモートインスタンスにバインドします。 -
Password。認証に使用されるパスワード。 -
Interactive Input。オンにすると、レプリケーショントポロジーレポートを生成するたびに Directory Server がパスワードを要求します。
-
- をクリックします。
検証
レプリケーショントポロジーレポートを生成して、レポートが認証情報を要求するかどうかを確認します。詳しくは、Web コンソールを使用したレプリケーショントポロジーレポートの表示 を参照してください。
19.3. Web コンソールを使用したレプリケーション命名エイリアスの設定 リンクのコピーリンクがクリップボードにコピーされました!
レポートを読みやすくするために、レポート出力に表示される独自のエイリアスを設定できます。デフォルトでは、レプリケーション監視レポートにはサーバーのホスト名が含まれています。
前提条件
- ホストがレプリケーショントポロジーのメンバーである。
- コンシューマーを初期化している。
- Web コンソールにログインしている。
手順
- → に移動します。 ページが開きます。
- をクリックします。
エイリアスの詳細を入力します。
-
Alias。レプリケーショントポロジーレポートに表示されるエイリアス。 -
Hostname。インスタンスのホスト名。 -
Port。インスタンスポート。
-
- をクリックします。
検証
- レプリケーショントポロジーレポートを生成して、レポートが新しいエイリアスを使用しているかどうかを確認します。詳しくは、Web コンソールを使用したレプリケーショントポロジーレポートの表示 を参照してください。
第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
# 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 secondsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
20.2. 2 つのオンライン Directory Server インスタンスの比較 リンクのコピーリンクがクリップボードにコピーされました!
2 つのオンラインサーバーを比較すると、負荷が大きい場合、そのデータベースの内容が異なります。この問題を回避するために、ds-replcheck は -l time_in_seconds パラメーターを ds-replcheck に渡すことにより、ラグタイム値を使用します。デフォルトでは、この値は 300 秒 (5 分) に設定されます。ユーティリティーがラグタイム内の不整合を検出した場合、ユーティリティーはそれを報告しません。これにより、誤検出が軽減されます。
デフォルトでは、レプリカ合意の特定の属性を複製から除外した場合、ds-replcheck はこれらの属性を異なると報告します。これらの属性を無視するには、ユーティリティーに -i attribute_list パラメーターを渡します。
手順
オンラインで、
supplier.example.comとreplica.example.comのdc=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"
# 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 Copied! Toggle word wrap Toggle overflow -mパラメーターおよび-rパラメーターは、サプライヤーとレプリカへの URL を設定します。
20.3. オフラインの 2 つの Directory Server インスタンスの比較 リンクのコピーリンクがクリップボードにコピーされました!
2 つのオフライン Directory Server インスタンスを比較するには、両方のホスト上のデータベースをエクスポートし、ds-replcheck を使用してそれらを比較します。
デフォルトでは、レプリカ合意の特定の属性を複製から除外した場合、ds-replcheck はこれらの属性を異なると報告します。これらの属性を無視するには、ユーティリティーに -i attribute_list パラメーターを渡します。
手順
サプライヤーで、接尾辞とそれに対応するデータベースをリストします。
dsconf -D "cn=Directory Manager" ldap://supplier.example.com backend suffix list dc=example,dc=com (userroot) o=test (test_database)
# dsconf -D "cn=Directory Manager" ldap://supplier.example.com backend suffix list dc=example,dc=com (userroot) o=test (test_database)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 比較するデータベースの名前または接尾辞をメモします。
インスタンスの実行中にデータベースをエクスポートします。
dsconf -D "cn=Directory Manager" ldap://supplier.example.com backend export -r -l /var/lib/dirsrv/slapd-instance_name/ldif/export-supplier.ldif userRoot
# dsconf -D "cn=Directory Manager" ldap://supplier.example.com backend export -r -l /var/lib/dirsrv/slapd-instance_name/ldif/export-supplier.ldif userRootCopy to Clipboard Copied! Toggle word wrap Toggle overflow -rパラメーターは、エクスポートにレプリケーション状態情報が含まれるようにし、-lはエクスポートファイルへのパスを設定します。そのファイルを作成するには、dirsrvユーザーが宛先ディレクトリーへの書き込み権限を持っている必要があることに注意してください。- サプライヤーと比較するレプリカで前の手順を繰り返します。
エクスポートしたファイルを一方のホストからもう一方のホストにコピーします。たとえば、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/
# scp /var/lib/dirsrv/slapd-instance_name/ldif/export-replica.ldif supplier.example.com:/var/lib/dirsrv/slapd-instance_name/ldif/Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドでは、SSH を使用してサプライヤーにアクセスできる必要があることに注意してください。
サプライヤーで、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"
# 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 Copied! Toggle word wrap Toggle overflow -mおよび-rパラメーターは、サプライヤーとレプリカへのパスを設定し、-ridは、サプライヤーのレプリカ ID を設定します。
20.4. ds-replcheck 出力の説明 リンクのコピーリンクがクリップボードにコピーされました!
ds-replcheck ユーティリティーの出力には、次のセクションが含まれています。
- データベース RUV
データベースの Replication Update Vectors (RUV) と、最小および最大の Change Sequence Numbers (CSN) をリスト表示します。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - エントリー数
tombstone エントリーを含む、両方のサーバー上のエントリーの合計数を表示します。以下に例を示します。
Supplier: 12 Replica: 10
Supplier: 12 Replica: 10Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Tombstones
各レプリカの tombstone エントリーの数を表示します。これらのエントリーは、合計エントリー数に追加されます。以下に例を示します。
Supplier: 4 Replica: 2
Supplier: 4 Replica: 2Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 競合エントリー
各競合エントリーの識別名 (DN)、競合タイプ、および作成された日付をリスト表示します。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 欠落エントリー
足りない各エントリーの DN と、エントリーが存在する他のサーバーからの作成日をリスト表示します。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - エントリーの不整合
相手のサーバーとは異なる属性を持つエントリーの DN をリスト表示します。状態情報が利用可能な場合は、これも表示されます。属性の状態情報が利用できない場合には、元の値としてリスト表示されます。レプリケーションが初めて初期化されてから、値が更新されていないことを意味します。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第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=com を Server B にレプリケートし、Server B は新しく作成されたエントリーを Server A にレプリケートし、各サーバーで名前の競合が発生します。変更シーケンス番号 (CSN) を比較することにより、各サーバーはどのエントリーが以前に作成されたかを判断します。たとえば、Server B のエントリーが先に作成されました。
自動競合解決手順では、最後に作成されたエントリー (Server A 上のエントリー) が次のように変更されます。
-
一意でない DN に
nsuniqueid値を追加します。 -
nsds5replconflict属性と、競合の原因となった操作の説明を追加します。 -
ldapsubentryobjectclass を追加します。
現在、次のエントリーが両方のサーバーに存在します。
有効な エントリーには以下が含まれます。
-
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
-
名前の競合を手動で解決するには、各サーバーで次の手順を実行します。
手順
競合エントリーをリスト表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 競合エントリーが存在する場合は、続行方法を決定します。
有効なエントリー (
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
# 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=comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 競合エントリー (
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
# 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=comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 両方のエントリーを保持するには、新しい相対識別名 (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
# 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=comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 上記のコマンドは、競合エントリーの名前を
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オブジェクトクラスを使用してエントリーを作成します。
手順
孤立したエントリーの競合をリスト表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 孤立したエントリーの競合が存在する場合は、続行する方法を決定します。
glue エントリーおよびその子エントリーを削除するには、次のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow glue エントリーを通常のエントリーに変換するには、次のコマンドを実行します。
dsconf -D "cn=Directory Manager" ldap://server.example.com repl-conflict convert-glue "ou=parent,dc=example,dc=com"
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-conflict convert-glue "ou=parent,dc=example,dc=com"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
21.3. 廃止または欠落しているサプライヤーに関するエラーの特定および解決 リンクのコピーリンクがクリップボードにコピーされました!
Directory Server は、レプリカ更新ベクトル (RUV) と呼ばれるメタデータのセットとして、他のレプリカに更新を送信する全サプライヤーなどのレプリケーショントポロジーに関する情報を保存します。RUV には、ID と URL、ローカルサーバー上の最新の変更状態番号 (CSN)、最初の変更の CSN などのサプライヤーに関する情報が含まれています。サプライヤーとコンシューマーはいずれも RUV 情報を保存し、これを使用してレプリケーションの更新を制御します。
レプリケーショントポロジーからサプライヤーを削除すると、その情報は別のレプリカの RUV に残る場合があります。cleanallruv タスクを使用して、トポロジー内のすべてのサプライヤーから RUV エントリーを削除できます。
前提条件
- レプリケーションが有効である。
手順
/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.[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 Copied! Toggle word wrap Toggle overflow この場合、レプリカ ID
8が原因でこのエラーが発生します。有効な ID と無効なすべての RUV レコードとレプリカ ID を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 返されるレプリカ ID のリスト (
1、2、および8) を書き留めます。レプリカ ID
8のクリーンアップタスクを実行します。dsconf -D "cn=Directory Manager" ldap://server1.example.com repl-tasks cleanallruv --suffix="dc=example,dc=com" --replica-id=8
# dsconf -D "cn=Directory Manager" ldap://server1.example.com repl-tasks cleanallruv --suffix="dc=example,dc=com" --replica-id=8Copy to Clipboard Copied! Toggle word wrap Toggle overflow Directory Server は RUV クリーンアップタスクを複製することに注意してください。したがって、1 つのサプライヤーでのみ、タスクを開始する必要があります。
レプリカの 1 つがダウンしている場合などに参加できない場合は、
--force-cleaningオプションを使用して、RUV の即時クリーンアップを実行できます。
検証
RUV レコードおよびレプリカ ID を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、レプリカ ID
8の RUV エントリーを返さなくなりました。
21.4. サプライヤーの cleanallruv タスクを停止する リンクのコピーリンクがクリップボードにコピーされました!
パフォーマンスまたはメンテナンスの目的で、タスクが長時間実行される場合は cleanallruv タスクを停止できます。dsconf ユーティリティーを使用してタスクを停止できます。
前提条件
- レプリケーションが有効である。
手順
サプライヤーのすべての
cleanallruvタスクを表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、レプリカが応答しなくなったため、
cleanallruvタスクを完了できないことが示されています。場合によっては、サーバーのパフォーマンスに悪影響を与える可能性があります。cleanallruvタスクを停止します。dsconf <instance_name> repl-tasks abort-cleanallruv --suffix "dc=example,dc=com" --replica-id 12
# dsconf <instance_name> repl-tasks abort-cleanallruv --suffix "dc=example,dc=com" --replica-id 12Copy to Clipboard Copied! Toggle word wrap Toggle overflow さらに、
--certifyオプションを使用して、Directory Server にすべてのレプリカ上のcleanallruvタスクを強制的に停止させることもできます。
検証
サプライヤーのすべての
cleanallruvタスクを表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第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 プラグインを設定します。Retro Changelog プラグインは、
- クライアントを設定します。たとえば、同期するサブツリーの検索ベースを設定します。詳細は、クライアントのドキュメントを参照してください。
次の手順では、コマンドラインを使用して Content Synchronization プラグインと Retro Changelog プラグインを設定します。
前提条件
-
root権限がある。
手順
Retro Changelog が有効になっているかどうかを確認します。
dsconf <instance_name> plugin retro-changelog show ... nsslapd-pluginEnabled: off
# dsconf <instance_name> plugin retro-changelog show ... nsslapd-pluginEnabled: offCopy to Clipboard Copied! Toggle word wrap Toggle overflow Retro Changelog プラグインが無効になっている場合は、有効にします。
dsconf <instance_name> plugin retro-changelog enable Enabled plugin 'Retro Changelog Plugin'
# dsconf <instance_name> plugin retro-changelog enable Enabled plugin 'Retro Changelog Plugin'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# dsconf <instance_name> plugin retro-changelog add --attribute nsuniqueid:targetUniqueId Successfully changed the cn=Retro Changelog Plugin,cn=plugins,cn=configCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: パフォーマンスを向上させるには、次の推奨事項を適用します。
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
# dsconf <instance_name> plugin retro-changelog set --max-age 2d Successfully changed the cn=Retro Changelog Plugin,cn=plugins,cn=configCopy to Clipboard Copied! Toggle word wrap Toggle overflow クライアントがデータを同期するためにアクセスするバックエンドまたはサブツリーがわかっている場合は、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
# 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=configCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Content Synchronization プラグインを有効にします。
dsconf <instance_name> plugin contentsync enable Enabled plugin 'Content Synchronization'
# dsconf <instance_name> plugin contentsync enable Enabled plugin 'Content Synchronization'Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 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";)
aci: (targetattr != "aci")(version 3.0; acl "Sync Request Control"; allow( read, search ) userdn = "ldap:///all";)Copy to Clipboard Copied! Toggle word wrap Toggle overflow ACI を調整する方法の詳細は、ACI バインドルールの定義 を参照してください。
サービスを再起動します。
dsctl <instance_name> restart
# dsctl <instance_name> restartCopy to Clipboard Copied! Toggle word wrap Toggle overflow
これで、クライアントは SyncRepl プロトコルを使用して Directory Server とデータを同期できるようになりました。