15.10. レプリケーショントポロジーからの Directory Server インスタンスの削除
ハードウェアの停止や構造の変更など、特定の状況では、管理者はレプリケーショントポロジーから Directory Server インスタンスを削除します。本セクションでは、インスタンスの削除に関する詳細を説明します。
15.10.1. Replication Topology からのコンシューマーまたはハブの削除
レプリケーショントポロジーからコンシューマーまたはハブを削除するには、以下を実行します。
- 削除するホストがハブであり、トポロジー内の他のサーバーのサプライヤーでもある場合は、他のサプライヤーまたはハブを設定して、これらのサーバーにデータを複製します。これらのサーバーに他のサプライヤーが設定されておらず、ハブを削除すると、これらのサーバーはレプリケーショントポロジーから分離されます。レプリケーションの設定に関する詳細は、以下を参照してください。
- 削除するホストで、更新を防ぐためにデータベースを読み取り専用モードに設定します。
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h host-to-remove.example.com -x dn: cn=userRoot,cn=ldbm database,cn=plugins,cn=config changetype: modify replace: nsslapd-readonly nsslapd-readonly: on
- 削除するホストとのレプリカ合意があるすべてのサプライヤーで、レプリカ合意を削除します。以下に例を示します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt \ delete --suffix="dc=example,dc=com" agreement_name
- コンシューマーまたはハブで、すべての接尾辞のレプリケーションを無効にします。以下に例を示します。
# dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com replication \ disable --suffix="dc=example,dc=com"
レプリケーションを無効にすると、このサーバーのこの接尾辞のレプリカ合意がすべて自動的に削除されます。
15.10.2. レプリケーショントポロジーからのサプライヤーの削除
レプリケーショントポロジーからサプライヤーをきれいに削除することは、シューマーまたはハブを削除するよりも複雑です。これは、トポロジー内のすべてのサプライヤーが他のサプライヤーに関する情報を保存し、サプライヤーが利用できない状態になった場合でも、その情報を保持するためです。
Directory Server は、レプリカ更新ベクトル (RUV) と呼ばれるメタデータセットに、レプリケーショントポロジーに関する情報を維持します。RUV には、ID と URL 等のサプライヤーに関する情報、ローカルサーバー上の最新の変更状態番号 (CSN)、および最初の変更の CSN などが含まれています。サプライヤーとコンシューマーはいずれも RUV 情報を保存し、これを使用してレプリケーションの更新を制御します。
サプライヤーを完全に削除するには、設定エントリーと共にそのメタデータを削除する必要があります。
- 削除するレプリカがトポロジー内の他のサーバーのサプライヤーでもある場合は、他のサプライヤーまたはハブを設定して、そのサーバーにデータを複製します。これらのサーバーに他のサプライヤーが設定されておらず、サプライヤーを削除すると、これらのサーバーはレプリケーショントポロジーから分離されます。レプリケーションの設定に関する詳細は、以下を参照してください。
- 削除するサプライヤーで、以下を行います。
- データベースを読み取り専用モードにして、更新ができないようにします。詳細については、「読み取り専用モードでのデータベースの設定」 を参照してください。
- トポロジー内の他のすべてのサーバーが、このサプライヤーからすべてのデータを受け取るまで待ちます。確認のため、他のサーバーの CSN が、削除するサプライヤーの CSN と同等以上であることを確認します。以下に例を示します。
# ds-replcheck online -D "cn=Directory Manager" -w password -m ldap://replica-to-remove.example.com:389 -r ldap://server.example.com:389 -b dc=example,dc=com ================================================================================ Replication Synchronization Report (Tue Mar 5 09:46:20 2019) ================================================================================ Database RUV's ===================================================== Supplier RUV: {replica 1 ldap://replica-to-remove.example.com:389} 5c7e8927000100010000 5c7e89a0000100010000 {replicageneration} 5c7e8927000000010000 Replica RUV: {replica 1 ldap://replica-to-remove.example.com:389} 5c7e8927000100010000 5c7e8927000400010000 {replica 2 ldap://server.example.com:389} {replicageneration} 5c7e8927000000010000
- レプリカ ID を表示します。
# dsconf -D "cn=Directory Manager" ldap://replica-to-remove.example.com replication get --suffix="dc=example,dc=com" | grep -i "nsds5replicaid" nsDS5ReplicaId: 1
この例では、レプリカ ID は 1 です。この手順の最後のステップのレプリカ ID を書き留めます。
- 削除するレプリカとのレプリカ合意があるすべてのサプライヤーで、レプリカ合意を削除します。以下に例を示します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt \ delete --suffix="dc=example,dc=com" agreement_name
- 削除するレプリカで、すべての接尾辞のレプリケーションを無効にします。以下に例を示します。
# dsconf -D "cn=Directory Manager" ldap://replica-to-remove.example.com replication \ disable --suffix="dc=example,dc=com"
レプリケーションを無効にすると、このサーバーのこの接尾辞のレプリカ合意がすべて自動的に削除されます。 - トポロジー内の残りのサプライヤーのいずれかで、レプリカ ID の RUV をクリーンアップします。以下に例を示します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-tasks \ cleanallruv --suffix="dc=example,dc=com" --replica-id=1
このコマンドは、この手順の直前の手順で表示されるレプリカ ID を指定する必要があります。