9.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 set --enable-readonly "userroot"
トポロジー内の他のすべてのサーバーが、このサプライヤーからすべてのデータを受け取るまで待ちます。確認のため、他のサーバーの CSN が、削除するサプライヤーの CSN と同等以上であることを確認します。
#
ds-replcheck online -D "cn=Directory Manager" -w password -m ldap://host-to-remove.example.com:389 -r ldap://server.example.com:389 -b dc=example,dc=com
================================================================================ Replication Synchronization Report (Tue Mar 5 09:46:20 2021) ================================================================================ Database RUV's ===================================================== Supplier RUV: {replica 1 ldap://host-to-remove.example.com:389} 5c7e8927000100010000 5c7e89a0000100010000 {replicageneration} 5c7e8927000000010000 Replica RUV: {replica 1 ldap://host-to-remove.example.com:389} 5c7e8927000100010000 5c7e8927000400010000 {replica 2 ldap://server.example.com:389} {replicageneration} 5c7e8927000000010000レプリカ ID を表示します。
#
dsconf -D "cn=Directory Manager" ldap://host-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 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 ...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://host-to-remove.example.com replication disable --suffix "dc=example,dc=com"
レプリケーションを無効にすると、このサーバーのこの接尾辞のレプリカ合意もすべて自動的に削除されます。
-
次に進む前に、
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
このコマンドでは、この手順の前のステップで表示されるレプリカ 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
次のステップ
削除されたインスタンスをテスト目的に使用する場合は、読み取り専用モードを無効にします。
#
dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix set --disable-readonly userroot
重要テスト目的でトポロジーから削除したインスタンスを使用する場合は、クライアントが引き続き使用していないことを確認してください。
インスタンスを削除します。
#
dsctl instance_name remove --do-it