搜索

9.2. 从复制拓扑中删除供应商

download PDF

从复制拓扑中删除供应商比删除 hub 或消费者更复杂。这是因为拓扑中的每个供应商都存储了其他供应商的信息,即使供应商突然不可用,它们也会保留这些信息。

目录服务器在一组称为副本更新向量(RUV)的元数据中维护关于复制拓扑的信息。RUV 包含有关供应商的信息,如 ID、URL、最新的更改状态号(CSN),以及第一次更改的 CSN。供应商和消费者均存储 RUV 信息,它们使用它来控制复制更新。

要完全删除供应商,您必须删除其元数据以及配置条目。

前提条件

  • 要删除的实例是供应商。
  • 如果要删除的主机也充当拓扑中其他服务器的供应商,您配置了其他供应商或中心将数据复制到这些服务器,以防止它们被隔离。

流程

  1. 在要删除的供应商中:

    1. 列出后缀及其对应的数据库:

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

      请注意数据库的名称。

    2. 将数据库设置为只读模式以防止进一步更新:

      # dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix set --enable-readonly "userroot"
    3. 等待拓扑中的所有其他服务器收到此供应商的所有数据。要验证,请确保其他服务器上的 CSN 等于或大于供应商上要删除的 CSN:

      # ds-replcheck online -D "cn=Directory Manager" -w password -m ldap://host-to-remove.example.com:389 -r ldap://server.example.com:389 -b dc=example,dc=com
      ================================================================================
               Replication Synchronization Report  (Tue Mar  5 09:46:20 2021)
      ================================================================================
      
      Database RUV's
      =====================================================
      
      Supplier RUV:
        {replica 1 ldap://host-to-remove.example.com:389} 5c7e8927000100010000 5c7e89a0000100010000
        {replicageneration} 5c7e8927000000010000
      
      Replica RUV:
        {replica 1 ldap://host-to-remove.example.com:389} 5c7e8927000100010000 5c7e8927000400010000
        {replica 2 ldap://server.example.com:389}
        {replicageneration} 5c7e8927000000010000
    4. 显示副本 ID:

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

      在本例中,副本 ID 是 1。记住此步骤的最后一步的副本 ID。

  2. 在所有具有与您要删除的主机的复制协议的供应商中:

    1. 列出复制的后缀的复制协议:

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

      cn 属性包含下一步中所需的复制协议名称。

    2. 删除复制协议:

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt delete --suffix "dc=example,dc=com" example-agreement
  3. 在要删除的供应商上,禁用所有后缀的复制:

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

    禁用复制也会删除这个服务器上此后缀的所有复制协议。

  4. 在继续操作前,请确保 ds-replcheck 输出的 Replica RUV 部分中列出的所有目录服务器实例都是在线的。
  5. 在拓扑中剩余的其中一个供应商上,清理副本 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
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.