Sun Java 徽标     上一章      目录      索引      下一章     

Sun 徽标
Sun Java(TM) System Directory Server 5 2004Q2 管理指南 

第 8 章
管理复制

复制是一种机制,通过这种机制可以将目录内容自动从一个 Directory Server 复制到另一个或多个服务器。任何类型的写操作-条目添加、修改乃至删除-都可以自动镜像到其他 Directory Server。有关复制概念、复制方案以及如何在目录部署中计划复制的完整说明,请参阅《Directory Server Deployment Planning Guide》中的 Chapter 6 "Understanding Replication"

Directory Server 5.2 具有下列新增复制功能:

本章介绍设置各种复制方案时要执行的任务,包括下列主题:


简介

配置复制是比较复杂的任务。开始之前,您应该清楚地了解组织中复制的部署方式,如使用的是单主复制、多主复制还是利用集线器的级联复制。复制单位为后缀或子后缀:将同时复制该后缀的所有条目。在要进行的部署中,必须将每个后缀标识为后缀所包含数据的主副本、集线器副本或专门使用者副本。

服务器中的已复制后缀称为副本。主副本是既能接受客户机读取操作也能接受其写入操作的副本。集线器副本和专门使用者副本是只能通过复制机制接收更新的只读副本。集线器副本可以从主副本或另一集线器副本接收更新,并将其转发给其他集线器副本或专门使用者副本。专门使用者副本只能从主副本或集线器副本接收更新。

下面的三个图表显示了通用复制方案中副本之间的关系。

图 8-1 单主复制

具有一个主副本和两个专门使用者副本的单主复制

图 8-2 利用集线器的级联复制

具有一个主副本、两个集线器和四个专门使用者副本的级联复制

图 8-3 多主复制

具有两个主副本和三个专门使用者副本的多主复制

本文档还使用术语供应商使用者,指的是参与复制协议的两种服务器角色。供应商是发送复制更新的服务器,使用者是接收这些更新的服务器。上图说明了以下关系:

不论协议为何种类型,许多复制设置都适用于协议的供应商角色或使用者角色中的副本。


配置复制的步骤摘要

以下步骤假设您正在复制单个后缀。如果要复制多个后缀,您可以在各个服务器中对其进行并行配置。也就是说,可以重复每一步以配置多个后缀的复制。

要配置任何复制拓扑,请按以下顺序操作:

  1. 在除单主副本之外的所有服务器上定义复制管理员条目(或者在所有服务器上都使用默认复制管理员)。
  2. 在包含专门使用者副本的所有服务器上:
    1. 为使用者副本创建一个空后缀。
    2. 通过复制向导启用此后缀的使用者副本。
    3. 配置高级副本设置(可选)。
  3. 在包含集线器副本的所有服务器上(如果适用):
    1. 为集线器副本创建一个空后缀。
    2. 通过复制向导启用此后缀的集线器副本。
    3. 配置高级副本设置(可选)。
  4. 在包含主副本的所有服务器上:
    1. 为要成为主副本的副本选择或创建一个后缀。
    2. 通过复制向导启用此后缀的主副本。
    3. 配置高级副本设置(可选)。
  5. 按照以下顺序配置所有供应商副本上的复制协议:
    1. 多主集合中的主副本之间的协议。
    2. 主副本及其专门使用者副本之间的协议。
    3. 主副本和集线器副本之间的协议。
    4. 您可以选择在此阶段配置部分复制。

  6. 配置集线器副本及其使用者副本之间的复制协议。
  7. 对于多主复制,从包含数据原副本的同一主副本中初始化所有的主副本。初始化集线器副本和使用者副本。

  8. 尝试创建复制协议之前,先启用所有的副本是很重要的。这样,您可以在创建复制协议后立即初始化使用者副本。使用者初始化始终是设置复制过程中的最后一个阶段。



选择复制管理员

设置复制的一个关键部分是选择条目,也称为复制管理员,发送复制更新时供应商将使用复制管理员以绑定到使用者服务器。所有包含接收更新的后缀的服务器都必须至少有一个复制管理员条目。

Directory Server 有一个可以在每台服务器中使用的默认复制管理员条目。其 DN 是 cn=ReplicationManager,cn=replication,cn=config

建议您在简单复制方案中使用默认复制管理员。复制向导自动使用此条目配置使用者副本,从而简化副本部署。

如果未定义默认复制管理员口令,此复制向导将提示您设置此口令。如果以后要更改口令,请执行下列操作:

  1. 在 Directory Server Console的顶级“配置”选项卡中选择数据节点,然后在右侧面板中选择“复制”选项卡。
  2. 在“复制管理员”标题下的两个文本字段中均输入新的口令。
  3. 确认口令后,单击“保存”。如果口令与确认口令不一致,则“保存”按钮不活动。

如果不使用默认复制管理员,您可以新建任意用作复制管理员的条目。例如,您可能想让若干复制管理员条目对每个已复制后缀都有一个不同的口令。创建个人复制管理员的另一个原因是为了支持复制的不同验证模式,例如通过 SSL 使用证书。

复制管理员条目必须包含定义复制协议时选择的验证方法所要求的属性。例如,默认复制管理员是 person 对象类,它允许使用 userPassword 属性进行简单验证。有关使用证书以绑定到复制管理员的详细信息,请参阅“通过 SSL 复制”

复制管理员条目不应该位于使用者服务器的已复制后缀中。定义复制管理员的合适位置是 cn=replication,cn=config

如果是通过命令行手动新建复制管理员,则必须通过修改副本配置条目的 nsDS5ReplicaBindDN 属性在使用者副本上指定绑定 DN。

如果是使用旧版复制,则对复制管理员条目还有其他约束。有关详细信息,请参阅“将 Directory Server 5.2 配置为 Directory Server 4.x 的使用者”


警告

您一定不要使用复制管理员条目的 DN 和口令在服务器上绑定或执行操作。复制管理员仅供复制机制使用,任何其他使用可能都需要重新初始化副本。

目录管理员绝对不可以用作复制管理员。


为每个使用者选择了复制管理员后,请执行以下操作:

  1. 写下或牢记您所选择或创建的复制管理员 DN。以后如果在供应商中创建与其使用者之间的复制协议时,需要此 DN 和口令。
  2. 如果要定义口令过期策略,请注意不要包括复制管理员,否则将导致口令过期后复制失败。要在复制管理员条目上禁用口令过期,请创建一个其口令不会过期的口令策略,然后将此策略分配给复制管理员条目。有关详细信息,请参阅“管理单个口令策略”


配置专门使用者

专门使用者是已复制后缀的只读副本。它可以接收来自以复制管理员身份绑定的服务器的更新,以进行更改。配置使用者服务器由两个步骤组成,首先准备用来存放副本的空后缀,然后使用复制向导在该后缀上启用复制。可选的高级配置包括选择其他复制管理员、设置引用或者设置清除延迟。

以下小节给出了在专门使用者服务器中配置专门使用者副本的步骤。请在包含给定后缀的专门使用者副本的每台服务器中重复所有步骤。

创建使用者副本的后缀

如果不存在此后缀,请在使用者副本中使用一个与要使用主副本 DN 相同的 DN 创建一个空后缀。有关说明,请参阅“创建后缀”

如果存在不为空的后缀,则从主副本中初始化副本时后缀内容将丢失。

启用使用者副本

复制向导可以简化启用专门使用者副本的过程:

  1. 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点以及要作为使用者副本后缀的节点,然后在此后缀下选择“复制”节点。
  2. 副本状态信息将显示在右侧面板中。

  3. 单击“启用复制”按钮启动复制向导。
  4. “使用者复制”单选按钮默认情况下处于选中状态。单击“下一步”以继续。
  5. 如果未执行上述步骤,系统将提示您输入并确认默认复制管理员口令。在每个字段中键入同一口令,然后单击“下一步”以继续。
  6. 如果默认复制管理员已经有一个已定义口令,则向导将跳过这一步。

  7. 更新复制配置时,复制向导将显示状态消息。完成后单击“关闭”。

现在,复制状态会显示副本已准备好接收更新,左侧窗格中的图标会发生变化反映这种情况。

高级使用者配置

默认情况下,向导将副本配置为使用默认复制管理员。如果希望使用另外的复制管理员条目,则必须设置高级配置。还可以使用此对话框设置修改和清除延迟的引用。

  1. 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点以及要配置后缀的节点,然后在此后缀下选择“复制”节点。
  2. 在右侧面板中,单击“高级”按钮以显示“高级复制设置”对话框。
  3. 在“绑定 DN”选项卡中,使用“添加”和“删除”按钮来创建一个有效复制管理员的 DN 列表。这样,供应商就可以在与副本间的协议中使用上述任一 DN。可以输入 DN 名称或浏览目录来添加新的 DN。
  4. 要配置通过 SSL 使用证书进行的复制,请以上述其中一个复制管理员身份输入证书条目的 DN。

  5. 完成后单击“确定”,或者选择“可选”选项卡进行高级配置。
  6. 在“高级副本设置”对话框的“可选”选项卡中,LDAP URL 列表指定了发送至该使用者的修改请求的其他引用。使用“添加”或“删除”按钮创建 LDAP URL 列表。
  7. 此复制机制自动配置使用者,以返回复制拓扑中所有已知主副本的引用。这些默认引用假设客户机通过常规连接使用简单验证。如果要使客户机可以选择绑定至使用 SSL 实现安全连接的主副本,请以 ldaps://服务器名:端口的形式添加引用,其中端口使用的是安全端口号。(如果将主副本配置为仅用于安全连接,则 URL 将默认指向安全端口。)

    如果已将一个或多个 LDAP URL 添加为引用,选中表下面的复选框将会强制使用者仅发送引用至这些 LDAP URL,而不会为主副本发送。例如,如果希望客户机始终被引用至主服务器中的安全端口,而不是默认端口,请为这些安全端口创建一个 LDAP URL 列表并选中此复选框。如果希望指定用来处理所有更新的特定主副本或 Directory Server 代理,您也可以使用独占引用。

  8. 还可以在“可选”选项卡中更改清除延迟。
  9. 使用者服务器存储有关副本内容更新的内部信息,清除延迟参数指定了服务器必须保留该信息的时间长度。这与其供应商服务器上更改日志的 MaxAge 参数有关。这两个参数的较短者决定了这两台服务器间的复制被禁用或关闭多久后,仍可正常恢复复制的时间。7 天的默认值就大多数情况而言已足够了。

  10. 单击“确定”保存此副本的高级复制配置。


配置集线器

集线器副本既可作为使用者副本也可作为主副本,以进一步将已复制数据分配至更多的使用者副本。集线器副本既能从供应商接收更新,又能将复制更新发送给其使用者副本。它们不接受修改,但可以将引用返回到主副本。

配置集线器服务器由两个步骤组成,首先准备用来存放副本的空后缀,然后使用复制向导在该后缀中启用复制。可选的高级配置包括选择其他复制管理员、设置引用、设置清除延迟以及设置更改日志参数。

以下小节给出了配置一台集线器服务器的步骤。请在包含给定后缀的集线器副本的每台服务器上重复所有步骤。

创建集线器副本的后缀

如果不存在此后缀,请在集线器服务器中使用与要使用的主副本相同的 DN 创建一个空后缀。有关说明,请参阅“创建后缀”

如果存在不为空的后缀,则从主副本中初始化副本时后缀内容将丢失。

启用集线器副本

复制向导可以简化启用集线器副本的过程:

  1. 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和要作为集线器副本后缀的节点,然后在此后缀下选择“复制”节点。
  2. 副本状态信息将显示在右侧面板中。

  3. 单击“启用复制”按钮启动复制向导。
  4. 选择“集线器副本”单选按钮,然后单击“下一步”以继续。
  5. 如果未执行上述步骤,系统将提示您选择更改日志文件。默认更改日志文件显示在文本字段中。如果不希望使用默认值,请输入更改日志的文件名,或者单击“浏览”显示一个文件选择器。
  6. 如果已经启用更改日志,则向导将跳过此步骤。

  7. 单击“下一步”。如果未执行上述步骤,系统将提示您输入并确认默认复制管理员口令。在每个字段中键入同一口令,然后单击“下一步”以继续。
  8. 如果默认复制管理员已经有一个已定义口令,则向导将跳过这一步。

  9. 更新复制配置时,复制向导将显示状态消息。完成后单击“关闭”。

现在,复制状态会显示副本已准备好接收更新,左侧窗格中的图标会发生变化反映这种情况。

高级集线器配置

作为供应商,集线器服务器需要一个更改日志,向导会将集线器副本配置为使用默认更改日志设置。要修改这些设置,请执行以下操作:

  1. 在 Directory Server Console 的顶级“配置”选项卡中选择“数据”节点,然后在右侧面板中选择“复制”选项卡。
  2. 您可能需要刷新此选项卡的内容,方法为选中“启用更改日志”复选框并单击“重置”按钮。然后在复制向导中,您将会看到选择的更改日志文件。
  3. 可以更改此更改日志文件的名称,并更新更改日志参数:
    1. Max changelog records—决定了可以存储的总修改量,以向使用者发送更新。默认情况下此值是无限制的。如果对副本进行了大量的改动,则您可能希望限制记录的数目以节省磁盘空间。
    2. Max changelog age—决定了发送至使用者的更新在集线器中存储的时间。默认情况下此值是无限制的。最大存留期参数是限制更改日志大小的推荐方式。

同样,复制向导使用的也是默认复制管理员。如果已经创建另一个希望使用的复制管理员条目,则需要设置高级配置。还可以使用此对话框设置修改和清除延迟的引用。

  1. 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和要配置后缀的节点,然后在此后缀下选择“复制”节点。
  2. 在右侧面板中,单击“高级”按钮以显示“高级复制设置”对话框。
  3. 在“绑定 DN”选项卡中,使用“添加”和“删除”按钮来创建一个有效复制管理员的 DN 列表。这样,供应商就可以在与副本间的协议中使用上述任一 DN。可以输入 DN 名称或浏览目录来添加新的 DN。
  4. 要配置通过 SSL 使用证书进行的复制,请以上述其中一个复制管理员身份输入证书条目的 DN。

  5. 完成后单击“确定”,或者选择“可选”选项卡进行高级配置。
  6. 在“高级副本设置”对话框的“可选”选项卡中,LDAP URL 列表指定了发送至此集线器的修改请求的其他引用。使用“添加”或“删除”按钮创建 LDAP URL 列表。
  7. 此复制机制自动配置集线器,以返回复制拓扑中所有已知主副本的引用。这些默认引用假设客户机通过常规连接使用简单验证。如果要使客户机可以选择绑定至使用 SSL 实现安全连接的主副本,请以 ldaps://服务器名:端口 的形式添加引用(其中端口号使用的是安全 端口 号)。

    如果已将一个或多个 LDAP URL 添加为引用,选中表下面的复选框将会强制服务器仅发送引用至这些 LDAP URL,而不会为主副本发送。例如,如果希望客户机始终被引用至主服务器中的安全端口,而不是默认端口,请为这些安全端口创建一个 LDAP URL 列表并选中此复选框。如果希望指定用来处理所有更新的特定主副本或 Directory Server 代理,您也可以使用独占引用。

  8. 还可以在“可选”选项卡中更改清除延迟。
  9. 集线器服务器存储有关副本内容更新的内部信息,清除延迟参数指定了服务器必须保留该信息的时间长度。这与提供更新的服务器中更改日志的 MaxAge 参数有关(不是与其本身的更改日志有关)。这两个参数的较短者决定了这两台服务器间的复制被禁用或关闭多久后,仍可正常恢复复制的时间。7 天的默认值就大多数情况而言已足够了。

  10. 单击“确定”保存此副本的高级复制配置。


配置主副本

主副本包含数据的主副本,并在向其他所有副本发送更新前集中所有的修改。主副本记录所有的更改、检查其使用者的状态并在必要时向使用者发送更新。在多主复制中,一个主副本还会接收到来自其他主副本的更新。

配置主服务器包括以下步骤:定义包含主副本的后缀、启用使用复制向导的主副本以及在必要时配置高级复制。

以下小节给出了配置一台主服务器的步骤。请在包含给定后缀的主副本的每台服务器中重复所有步骤。

定义主副本的后缀

在包含要复制条目的主副本服务器中选择或创建一个后缀。有关说明,请参阅“创建后缀”

创建复制协议前,此后缀应该包含所有初始数据。这样,您可以立即初始化此数据的使用者副本。要确保正确的主副本配置操作和初始化,只能有一个主副本包含所有的初始数据,其他主副本中的后缀应该为空。

启用主副本

复制向导可以简化启用主副本的过程:

  1. 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和要作为主副本后缀的节点,然后在此后缀下选择“复制”节点。
  2. 副本状态信息将显示在右侧面板中。

  3. 单击“启用复制”按钮启动复制向导。
  4. 选中“主副本”单选按钮,然后单击“下一步”以继续。
  5. 输入一个“副本 ID”:选择 1 到 65534 之间的一个整数(包括 1 和 65534)。
  6. 对于给定后缀,所有主副本的“副本 ID”都必须是唯一的。同一服务器中不同后缀的主副本可以使用相同的“副本 ID”,只要它在每个副本的其他主副本中是唯一的。

  7. 单击“下一步”。如果未执行上述步骤,系统将提示您选择更改日志文件。默认更改日志文件显示在文本字段中。如果不希望使用默认值,请输入更改日志的文件名,或者单击“浏览”显示一个文件选择器。
  8. 如果已经启用更改日志,则向导将跳过此步骤。

  9. 单击“下一步”。如果未执行上述步骤,系统将提示您输入并确认默认复制管理员口令。如果是单主复制,则无需使用复制管理员,但仍然需要输入一个口令以继续操作。在每个字段中键入同一口令,然后单击“下一步”以继续。
  10. 如果默认复制管理员已经有一个已定义口令,则向导将跳过这一步。

  11. 更新复制配置时,复制向导将显示状态消息。完成后单击“关闭”。

现在复制状态将显示此主副本的“副本 ID”,左侧窗格中的图标将发生变化,反映此后缀的复制是活动的。

高级多主复制配置

默认情况下,向导将主副本配置为使用默认更改日志设置。要修改更改日志设置,请执行以下操作:

  1. 在 Directory Server Console 的顶级“配置”选项卡中选择“数据”节点,然后在右侧面板中选择“复制”选项卡。
  2. 您可能需要刷新此选项卡的内容,方法为选中“启用更改日志”复选框并单击“重置”按钮。然后在复制向导中,您将会看到选择的更改日志文件。
  3. 可以更改此更改日志文件的名称,以及更新更改日志参数:
    1. Max changelog records—决定了可以存储的总修改量,以向使用者发送更新。默认情况下此值是无限制的。如果对副本进行了大量的改动,则您可能希望限制记录的数目以节省磁盘空间。
    2. Max changelog age—决定了发送至使用者的更新在主副本中存储的时间。默认情况下此值是无限制的。最大存留期参数是限制更改日志大小的推荐方式。

同样,复制向导使用的也是默认复制管理员。如果已经创建另一个希望使用的复制管理员条目,则需要设置高级配置。还可以使用此对话框设置修改和清除延迟的引用。如果配置的是单主副本,您可以跳过此过程。

  1. 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和要配置后缀的节点,然后在此后缀下选择“复制”节点。
  2. 在右侧面板中,单击“高级”按钮以显示“高级复制设置”对话框。
  3. 在“绑定 DN”选项卡中,使用“添加”和“删除”按钮来创建一个有效复制管理员的 DN 列表。这样,供应商就可以在与副本间的协议中使用上述任一 DN。可以输入 DN 名称或浏览目录来添加新的 DN。
  4. 要配置通过 SSL 使用证书进行的复制,请以上述其中一个复制管理员身份输入证书条目的 DN。

  5. 完成后单击“确定”,或者选择“可选”选项卡进行高级配置。
  6. 在“高级副本设置”对话框的“可选”选项卡中,LDAP URL 列表指定了发送至此主副本的修改请求的其他引用。初始化后,主副本将立即自动返回引用,如“多主副本初始化后会聚”中所述。使用“添加”或“删除”按钮创建 LDAP URL 列表。
  7. 此复制机制自动配置集线器,以返回复制拓扑中所有已知主副本的引用。这些默认引用假设客户机通过常规连接使用简单验证。如果要使客户机可以选择绑定至使用 SSL 实现安全连接的主副本,请以 ldaps://服务器名:端口 的形式添加引用(其中端口号使用的是安全 端口 号)。

    如果已将一个或多个 LDAP URL 添加为引用,选中表下面的复选框将会强制服务器仅发送引用至这些 LDAP URL,而不会为主副本发送。例如,如果希望客户机始终被引用至主服务器中的安全端口,而不是默认端口,请为这些安全端口创建一个 LDAP URL 列表并选中此复选框。

  8. 还可以在“可选”选项卡中更改清除延迟。
  9. 主副本服务器必须存储副本内容更新的内部信息,清除延迟参数指定了这些服务器必须保存这些信息多长时间。这与主副本服务器中更改日志的 MaxAge 参数有关(不是与其本身的更改日志有关)。这两个参数的较短者决定了这两台服务器间的复制被禁用或关闭多久后,仍可正常恢复复制的时间。7 天的默认值就大多数情况而言已足够了。

  10. 单击“确定”保存此副本的高级复制配置。


创建复制协议

复制协议是供应商(此供应商配置和控制发送更新至给定使用者的方式)上的一组参数。必须在发送更新至其使用者的供应商副本中创建复制协议。必须为要更新的每个使用者创建复制协议。

按以下顺序创建复制协议:

  1. 多主副本集的主副本之间的协议,从包含要复制后缀原副本的主副本开始复制。
  2. 主副本和不是通过集线器副本复制的专门使用者副本之间的协议。
  3. 主副本和集线器副本之间的协议。
  4. 集线器副本及其使用者副本之间的协议。

例如,图 8-3 所示的具有 2 个主副本和 3 个专门使用者副本的多主复制拓扑中,应该按以下顺序创建八个复制协议:

要创建复制协议,请执行以下操作:

  1. 在 Directory Server Console 的“顶级配置”选项卡中,展开“数据”节点和供应商后缀的节点,然后在此后缀下选择“复制”节点。
  2. 副本状态信息将显示在右侧面板中。

  3. 单击已定义复制协议的列表旁的“新建”按钮。
  4. 在“复制协议”对话框中,从菜单中选择一个包含使用者副本的现有服务器,或者单击“其他”按钮定义一个。
  5. 单击“其他”按钮后,输入完全符合要求的使用者服务器名及其 LDAP 端口号。如果此端口使用 SSL,请选中安全端口复选框,以启用复制更新的连接安全。

  6. 输入使用者服务器中复制管理员条目的 DN 和口令。默认情况下,此 DN 即为默认复制管理员的 DN。
  7. 如果选择的是有安全端口的使用者,您可以单击“选项”按钮以确定 DN 字段的含义。如果使用口令连接,供应商将通过加密 SSL 连接使用简单验证和通讯。如果使用证书连接,DN 字段是包含证书的条目 DN,不需要口令。

  8. 键入此协议的说明字符串(可选)。使用者服务器名和端口号以及说明字符串将显示在此主副本的复制协议列表中。
  9. 完成后单击“确定”。屏幕上将显示一个验证对话框,询问是否要测试刚才输入的连接参数。
  10. 如果要使用给定复制管理员和口令测试至给定服务器及端口号的连接,请单击“是”。如果连接失败,您仍然有可能使用此协议,可能情况为参数正确但服务器脱机。
  11. 测试完成后,协议将显示在此主副本的复制协议列表中。

以后可以编辑复制协议,对使用者服务器上的复制管理员 DN 和口令进行更改:

  1. 从列表中选择复制协议,然后单击“编辑”按钮。
  2. 在“复制协议”对话框中,选择“连接”选项卡。
  3. 编辑使用者服务的复制管理员 DN 或口令。
  4. 编辑此协议的说明字符串(可选)。
  5. 单击“确定”保存新设置,向此使用者发送更新时可以立即开始使用这些新设置。
  6. 其他选项卡中的配置参数在“启用部分复制”“通过 WAN 复制”中进行了说明。

  7. 创建了每个复制协议后,可以选择为此后缀配置部分复制,然后立即初始化此副本,如“初始化副本”中所述。


配置部分复制

默认情况下,复制会将已复制后缀中的全部条目复制到使用者副本。使用部分复制功能,可以指定复制期间要进行复制的属性子集或不对其进行复制的属性子集。部分复制是在复制协议中配置的,允许您为主副本的每个使用者副本定义属性集。这样,您可以更有效地控制要分布的数据,以及使用复制带宽和使用者资源。

例如,如果希望减小复制带宽,可以选择对通常具有较大值的属性不进行复制,如 photojpegPhotoaudio。这样,在使用者副本中这些属性不可用。再举一例,您可以选择向专门执行验证的使用者服务器仅复制 uiduserpassword 属性。

部分复制注意事项

启用或修改属性的分式集要求您重新初始化使用者副本。因此,应该在部署前确定部分复制的需要,并在第一次初始化副本时定义属性集。

鉴于某些属性的复杂功能(如 ACI、角色 CoS)存在相关性,复制小的属性集时应加备小心。此外,不复制 ACI、角色或 CoS 机制的说明符或过滤器中提及的其他属性将会牺牲数据的安全性,或导致搜索返回的属性处于不同的集合中。管理不包括的属性列表相对于管理要包括的属性列表更安全,产生人为错误的可能性也比较小。

如果要复制的属性集合不允许所有要复制条目遵循此架构,则您应该在使用者服务器中关闭架构检查。复制不遵循条目不会导致错误,因为复制机制会避开使用者中的架构检查。不过,这样使用者将包含不遵循条目,应该关闭架构检查以向其客户机公开相关状态。

部分复制是在主副本与集线器副本及专门使用者副本之间的复制协议中配置的。不支持多主复制环境中两个主副本之间的部分复制配置。同时,如果若干主副本与同一副本之间有复制协议,则所有这些协议都必须复制同一属性集。

Directory Server 5.2 中提供的部分复制功能具有与 Directory Server 以前版本的向后兼容性。配置部分复制协议时,主副本和使用者副本都必须在 Directory Server 5.2 版实例中。

定义属性集

属性集是副本中启用部分复制时要复制的属性(不包括其他所有属性)的列表。可以在主服务器中定义任意数量的属性集,然后将这些属性集之一与复制协议关联。

  1. 在 Directory Server Console 的顶级“配置”选项卡中选择“数据”节点,然后在右侧面板中选择“复制”选项卡。
  2. 单击“复制”选项卡底部的“管理已复制属性集”按钮。可能需要向下滑动才能看到此按钮。
  3. 单击“添加”定义新的属性集或者从列表中选择一个现有的属性集,然后单击“编辑”修改此属性集。在显示的“属性集”对话框中,选择或取消选择“复制”列中的复选框以使该集包括或不包括相应的属性。属性名旁边的复选框表明该属性将被复制。
  4. 默认情况下,选择所有属性,建议仅取消选择特别不希望复制的那些属性。如果希望重新选择,“全部选中”按钮将重新选择所有属性。取消选择大量的属性时,目录服务器将复制除取消选择的属性以外的所有属性。如果后来架构中定义了新的属性并将这些新的属性用在了已复制的条目中,则这些新的属性将被复制,除非编辑该属性集以对其进行取消选择。

    单击“一个都不选中”按钮将取消选择所有属性,然后可以选择要在集中包括的属性。单击“一个都不选中”后,定义精确的属性集时,将仅复制选定的属性。如果后来架构中定义了新的属性并将这些新的属性用在了已复制的条目中,则这些新的属性将不会被复制,除非编辑该属性集以对其进行选择。


    属性 objectClassnsUniqueIdnsDS50ruv 以及 RDN 命名属性将始终被复制,不论是否在属性集合中排除这些属性。这是因为 objectClass 和命名属性是 LDAP 修改所必需的,nsUniqueIdnsDS50ruv 是正确复制所必需的。

    不包括 ACI 属性将会对使用者副本中的访问控制有影响。不包括 userPassword 属性将会导致没有用户可以验证使用者副本。


  5. 为此属性集输入或修改说明字符串(可选)。这是在已定义的集列表中显示的文本和编辑将使用该集的复制协议时显示的文本。如果没有提供任何说明,则服务器将根据不包括或包括的属性来生成说明。
  6. 完成后单击“保存”。

启用部分复制

只能在现有复制协议中启用部分复制:

  1. 按照“创建复制协议”中的说明创建复制协议,或者选择一个以前定义的协议对其进行修改。
  2. 按照“禁用复制协议”中的说明禁用复制协议。必须禁用协议才能修改部分复制配置。
  3. 选择已禁用协议,然后单击“编辑”。在显示的“复制协议”对话框中选择“已复制属性”选项卡。
  4. 选中“仅复制一个属性集”复选框。
  5. 从下拉列表中选择一个现有属性集,或者单击“新建”,按照“定义属性集”中的说明定义一个新的属性集。还可以单击“管理已复制属性集”查看和修改现有属性集定义。
  6. 部分复制仅允许一个属性集与复制协议关联。该属性集应该包含要复制属性的确切列表。

  7. 选择属性集后,单击“确定”。一个提示性消息发出警告,说明您已经配置部分复制,需要重新初始化使用者副本。单击“确定”去除该消息。
  8. 单击“启用”重新激活复制协议。
  9. 取决于要复制的属性,您应该考虑在使用者服务器中禁用架构检查。
  10. 如果其他主副本与此副本之间也有复制协议,必须在所有这些主副本中重复此步骤,以启用具有相同属性集的部分复制。
  11. 现在必须初始化使用者副本,或者,如果已复制此副本则对其进行重新初始化。请参阅下面的“初始化副本”


初始化副本

创建复制协议后,必须在复制实际开始前初始化使用者副本。初始化期间,将物理数据从供应商副本复制到使用者副本。

某些错误条件或配置更改要求您重新初始化副本。重新初始化时,使用者副本中已复制后缀的内容将被删除,并被主副本中后缀的内容替换。这样可以确保副本保持同步,复制更新可以重新开始。这里说明的所有初始化方法还将自动生成使用者副本的索引,这样使用者就准备好以最佳状态响应客户机的读请求。

何时进行初始化

必须在配置这两个副本后且在可以进行复制前进行副本初始化。后缀中的数据已完全复制到使用者后,供应商可以开始重新对使用者执行更新操作。

在正常操作情况下,绝对不能对使用者副本再次进行初始化。不过,不论何种原因从备份中恢复单主副本中的数据时,您都应该重新初始化所有更新的副本。使用多主复制的情况下,如果使用者已由其他主副本更新,则可能不需要对其进行重新初始化。

可以使用控制台联机初始化副本,也可以使用命令行手动初始化副本。初始化数量较少的使用者,使用控制台进行联机初始化会比较方便。可以从复制协议直接联机初始化副本。不过,由于是按顺序对每个副本进行初始化,所以此方法不适用于初始化大量副本。从一个 LDIF 文件中同时初始化大量使用者副本时,使用命令行手动初始化是更有效的方法。

最后,有经验的管理员还可以使用二进制复制功能复制主副本或使用者副本。对此功能的某些限制仅能使具有大量数据库文件的副本具有可操作性并能节省时间,例如包含上百万个条目的副本。

在多主复制中初始化副本

如果进行多主复制,应该按以下顺序初始化副本:

  1. 确保一个主副本中包含要复制数据的完整集合。使用此主副本在其他每个主副本中初始化副本。
  2. 从主副本中(请参阅“执行联机副本初始化”)或者从任一主副本的 LDIF 文件中(请参阅“导出副本至 LDIF”)初始化使用者副本。

在级联复制中初始化副本

如果进行级联复制,请注意应该始终按以下顺序初始化副本:

  1. 如果还进行多主复制,请确保一个主副本中包含有要复制数据的完整集合。使用此主副本在其他每个主副本中初始化副本。
  2. 在第一级集线器副本的主副本中初始化第一级集线器副本。
  3. 如果有几个集线器副本级别,对于每一级要初始化的副本,在它的已初始化的前一级副本中对其进行初始化。
  4. 在集线器副本的最后一个级别,初始化专门使用者副本。

多主副本初始化后会聚

如果进行的是多主复制,给定主副本进行初始化时,其他主副本可能会处理更改操作。因此,初始化完成后,新的主副本必须还接收初始化数据中不包括的新更新。由于初始化可能需要很长时间,所以挂起的更新数量可能也会很庞大。

为了允许会聚这些挂起的更新,初始化后,新初始化的主副本会被设置为只能读取客户机操作(只有当在命令行中通过 LDIF 文件进行初始化或者使用备份来执行二进制复制时才会出现这种情况)。它是 Directory Server 5.2 中新增的行为。

因此,初始化后,多主配置中的主副本将处理复制更新并允许读操作,但它将为客户机所有写操作返回引用。可以按“高级多主复制配置”中的说明定义这些引用。下列条件下主副本会回复到读-写模式:

通过控制台开始接收更新

执行下列步骤,以明确允许多主副本初始化后可以进行更新操作:

  1. 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
  2. 在右侧面板中,控制台将显示一个消息,指示副本已经初始化,目前正返回更新操作的引用。如果此消息指示已启用自动引用延迟,您仍然可以按照此步骤改写延迟。

  3. 使用 insync 工具确保副本已与其他所有主副本会聚。如果所有服务器中修改之间的延迟为零或者副本从未有任何要复制的更改,则副本处于同步状态(-1 延迟)。有关详细信息,请参阅《Directory Server Administration Reference》中的 Chapter 1 "insync"
  4. 单击消息右侧的按钮立即开始接收更新操作。

通过命令行开始接收更新

通过检查会聚并明确允许更新操作从而自动处理初始化多主副本的脚本中可能会使用到下列命令:

  1. 使用 insync 工具确保副本已与其他所有主副本会聚。如果所有服务器中修改之间的延迟为零或者副本从未有任何要复制的更改,则副本处于同步状态(-1 延迟)。有关详细信息,请参阅《Directory Server Administration Reference》中的 Chapter 1 "insync"
  2. 使用下列命令来修改 ds5BeginReplicaAcceptUpdates 配置属性:
  3. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: cn=replica, cn=suffixName, cn=mapping tree, cn=config
    changetype: modify
    add: ds5BeginReplicaAcceptUpdates
    ds5BeginReplicaAcceptUpdates: start
    ^D

初始化副本时,将自动删除 ds5BeginReplicaAcceptUpdates,这样初始化后更新操作会被再次拒绝。

设置自动引用延迟

ds5ReferralDelayAfterInit 配置属性决定了初始化后多长时间(以秒为单位)副本将返回引用。经历此延迟时间后,副本将自动开始处理客户机的更新操作。此属性对于每个副本都是特定的,应该根据“多主副本初始化后会聚”中说明的标准对此值进行设置。

如果刚刚对某副本进行了初始化,还不能接收更新,则更改此属性的值将会动态地影响相应的副本。您可以在延迟过程中修改此值以增加或减小延迟。如果此延迟已经到期并且副本正在接收更新,设置此值将没有任何效果。

此属性的默认值是 -1,表示副本将会无限期地拒绝更新操作。在这种情况下,可以定义延迟以在延迟到期时自动允许更新,从初始化后计算此时间。设置已经到期的延迟将会导致副本立即开始接收更新。

  1. 使用以下命令设置 ds5ReferralDelayAfterInit 属性:
  2. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: cn=replica, cn=suffixName, cn=mapping tree, cn=config
    changetype: modify
    replace: ds5ReferralDelayAfterInit
    ds5ReferralDelayAfterInit: seconds
    ^D

使用控制台初始化副本

使用控制台进行联机副本初始化是初始化或重新初始化使用者副本的最简单的方法。不过,如果正在初始化大量条目(超过 1-2 百万),则此过程可能很耗时,这种情况下您可能会发现使用命令行进行使用者副本初始化是更有效的方法(有关详细信息,请参阅“从命令行初始化副本”)。

使用控制台初始化使用者副本时,在初始化过程完成前,此后缀上的所有操作(包括搜索)都将被引用回主副本服务器。

使用 Directory Server Console 时,利用已配置的部分复制初始化副本非常简单明了。初始化期间,仅将选定的属性发送至使用者。

执行联机副本初始化

要使用控制台初始化或重新初始化副本,请执行以下操作:

  1. 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和主副本后缀的节点,然后在此后缀下选择“复制”节点。
  2. 副本状态信息将显示在右侧面板中。

  3. 在已定义协议的列表中,选择要进行初始化的使用者副本的相应复制协议,然后单击“操作”>“初始化远程副本”。
  4. 将出现一条确认信息,提示使用者副本中存储的所有信息都将被删除。

  5. 在验证框中单击“是”。
  6. 联机使用者副本初始化将立即开始。复制协议的图标将显示一个红色的标记指示初始化过程的状态。

  7. 单击“刷新”>“立即刷新”或“刷新”>“持续刷新”跟踪使用者副本初始化的状态。
  8. 突出显示的协议的所有消息都将显示此列表下的文本框中。

有关监控复制状态和初始化状态的详细信息,请参阅“监视复制状态”

从命令行初始化副本

对于复制大量条目的部署,使用命令行手动进行副本初始化是使用者副本初始化的最快方法。如果出于性能限制而不适合进行联机处理,请使用手动处理。不过,手动初始化使用者副本的过程比联机初始化过程要复杂得多。

要手动初始化或重新初始化副本,请首先将后缀数据的原副本导出至 LDIF 文件。如果正在初始化分式副本,则您应该将过滤此文件以仅保留已复制属性。然后将该文件传送到所有使用者服务器,并导入它。在多主复制部署中,可以使用从原主副本中导出的 LDIF 文件对其他主副本和所有使用者副本进行初始化。在级联复制环境中,可以使用同一个文件来初始化集线器副本及其使用者副本。

不论何种情况,都必须以从已配置主副本中导出的 LDIF 文件开始。不能使用任意的 LDIF 来初始化所有副本,因为它不包含复制数据。必须首先将 LDIF 文件导入至主副本,然后按照下列步骤将其导出。

导出副本至 LDIF

可以使用 db2ldif-rdb2ldif-task-r 命令存储 LDIF 文件中的副本内容。有关详细信息,请参阅“从命令行导出到 LDIF”必须使用 -r 选项利用这些命令导出副本。

下面的示例会将整个 dc=example,dc=com 副本导出至名为 example_master.ldif 的文件:

 

# /usr/sbin/directoryserver -s example stop
# /usr/sbin/directoryserver db2ldif -r -s "dc=example,dc=com" \
  -a /var/ds5/slapd-serverID/ldif/example_master.ldif
# /usr/sbin/directoryserver -s example start

然后,如果必要可以过滤 LDIF 文件,并将其传送到使用者主机,从而对使用者副本进行初始化。

过滤用于部分复制的 LDIF 文件

如果已经配置部分复制,在将导出的 LDIF 文件复制至使用者服务器前,应该过滤出所有未使用的属性。Directory Server 提供 fildif 工具用于完成此过程。此工具过滤给定的 LDIF 文件,以仅保留复制协议中定义的属性集所允许的属性。

此工具将读取服务器配置以确定属性集定义。要读取配置文件,必须以 root 用户身份或以拥有进程和文件的用户身份(由 nsslapd-localuser 属性指定)来运行 fildif 工具。例如,以下命令将过滤在上个示例中从 dc=example,dc=com 后缀中导出的文件:

# CAMUS=/var/opt/mps/serverroot/slapd-camus
# /var/opt/mps/serverroot/shared/bin/fildif \
-i $CAMUS/ldif/example_master.ldif \
-o $CAMUS/ldif/filtered.ldif -c $CAMUS/config/dse.ldif \
-b "cn=rousseau.example.com:389, cn=replica, \
cn=\"dc=example,dc=com\", cn=mapping tree, cn=config"

-i-o 分别为输入和输出文件。-c 选项是包含复制协议和属性集定义的配置文件。dse.ldif 文件是服务器存储 cn=config 条目内容(包括复制协议和属性集)的位置。

-b 选项是定义部分复制的复制协议的 DN。可以通过作为目录管理员在 Directory Server Console 中浏览 cn=config 后缀,以查找该条目。在后缀的 cn=replica 条目下选择条目,并使用编辑>复制 DN菜单项将此 DN 复制到剪贴板,以备输入命令时使用。

有关 fildif 工具的完整命令行语法,请参阅《Directory Server Administration Reference》中的 Chapter 1 "fildif"

然后,您可以使用 fildif 生成的 filtered.ldif 文件初始化此复制协议中的使用者副本。按照下节中的说明将此文件传送至使用者服务器,并将其导入。

将 LDIF 文件导入至使用者副本

您可以使用 Directory Server Console 中的导入功能,或者使用 directoryserver ldif2dbdirectoryserver ldif2db-task 命令将含有主副本内容的 LDIF 文件导入到使用者副本。进行所有的导入操作时,这些命令需要目录管理员的绑定 DN 和口令,以执行导入。“从命令行导入 LDIF” 对这两种导入方法进行了说明。

下面的示例显示了如何将 LDIF 文件导入至 dc=example,dc=com 使用者副本:

 

# /usr/sbin/directoryserver -s example stop
# /usr/sbin/directoryserver ldif2db -s "dc=example,dc=com" \
  -i example_master.ldif
# /usr/sbin/directoryserver -s example start

使用 ldif2db-task 不需要预先停止服务器。有关详细信息,请参阅《Directory Server Administration Reference》中的 Chapter 1 "ldif2db-task"

使用二进制复制初始化副本

二进制复制功能可以复制整个服务器,方法是使用一台服务器中的二进制备份文件在另一台服务器中恢复为相同的目录内容。此高级功能与目录服务器的数据库文件进行交互,最好由有经验的管理员使用。

二进制复制限制

因为二进制复制功能会将数据库文件从一台计算机移动至另一台计算,所以此机制受到以下严格限制:

在上面的条件下,可以对另一个主副本服务器的二进制复制的主副本,或者另一个使用者服务器的二进制复制的使用者副本进行初始化或重新初始化。下面两个步骤介绍了执行二进制复制的可选方法,一个不需要停止服务器,另一个使用的磁盘空间最小。

不停止服务器的情况下进行二进制复制

建议使用下面的步骤执行二进制复制,因为它使用标准备份功能来创建服务器的数据库文件。执行标准备份可以确保所有的数据库文件在无需停止服务器的情况下处于相关状态。

不过,此步骤有一定的限制,您需要加以考虑。备份操作和恢复操作在同一台计算机中创建数据库文件的副本,因此每台计算机中这些文件所需磁盘空间将加倍。另外,如果目录包含上吉字节的数据,这些文件的实际复制操作将花费大量的时间。如果您的磁盘空间有限或者数据库文件特别大,请参阅“使用最小磁盘空间进行二进制复制”

  1. 在新副本的目标计算机中安装 Directory Server,必要时创建服务器的一个新实例,然后按照“二进制复制限制”中的说明对其进行配置。
  2. 在此副本涉及的复制拓扑中创建所有复制协议。包括从供应商与此副本之间的协议,如果不是专门使用者副本,还包括此副本与其使用者副本之间的协议。
  3. 选择一个与要初始化的副本类型相同的已完全配置和初始化的副本(可能为主副本、集线器副本或使用者副本),并根据“使用控制台备份服务器”中的步骤在此后缀中执行标准备份。
  4. 将备份目录中的所有文件复制或传送到目标计算机的目录中,例如使用 ftp 命令。
  5. 按照“从备份恢复数据”中的说明将文件加载至目标服务器。
  6. 如果在多主复制方案中已经初始化了一个新的主副本,请按照“多主副本初始化后会聚”中的步骤进行操作,以确保新副本可以开始接收客户机的更新操作。

使用最小磁盘空间进行二进制复制

下面的步骤使用的磁盘空间以及耗费的时间都较少,因为它不备份数据库文件。不过,它要求您停止被复制的服务器,以确保数据库文件处于相关状态。


警告

千万不要将此步骤用于重新初始化已参与多主复制方案的主副本。只能用于重新初始化使用者服务器或者初始化新的主副本服务器。要重新初始化现有主副本,请使用联机初始化、导入 LDIF 文件或者执行“不停止服务器的情况下进行二进制复制”中说明的步骤。


  1. 在新副本的目标计算机中安装 Directory Server,必要时创建服务器的一个新实例,然后按照“二进制复制限制”中的说明对其进行配置。
  2. 在此副本涉及的复制拓扑中创建所有复制协议。包括从供应商与此副本之间的协议,如果不是专门使用者副本,还包括此副本与其使用者副本之间的协议。
  3. 按照“启动和停止 Directory Server”中的说明停止要被初始化或重新初始化的目标服务器。
  4. 选择一个与要初始化的副本类型相同的已完全配置和初始化副本(可能为主副本、集线器副本或使用者副本),并停止服务器。如果在多主配置中复制主副本,则您应该确保在停止服务器前,已使用来自其他主副本的最近更改对其进行了完全更新。
  5. 删除来自目标服务器的所有数据库文件,包括事务日志、更改日志和区域文件(__db.xxx 文件)。除非文件已被重新定位,否则数据库文件和事务日志将位于 ServerRoot/slapd-server ID/db 目录下。
  6. 复制或传送所有数据库文件(包括从源副本计算机至目标计算机的事务处理日志),如使用 ftp 命令。除非文件已被重新定位,否则数据库文件和事务日志将位于 ServerRoot/slapd-server ID/db 目录下。
  7. 如果初始化主副本或集线器副本,您还必须复制更改日志中的所有文件,默认情况下这些文件位于 ServerRoot/slapd-server ID/changelog 下。

  8. 重新启动源服务器和目标服务器。


启用引用完整性插件

如果要使用引用完整性插件,必须在所有主副本服务器中启用该插件。不需要在集线器服务器或使用者服务器中启用。请参阅“将引用完整性与复制一起使用”


通过 SSL 复制

可以对复制所涉及到的 Directory Server 进行配置,这样所有复制操作都可以通过 SSL 连接进行。要执行此操作,请完成以下步骤:

  1. 将供应商和使用者服务器配置为都可以使用 SSL。
  2. 有关详细信息,请参阅第 11 章“管理验证和加密”


    • 如果供应商服务器证书是一种在 SSL 握手过程中不能充当客户机的仅 SSL 服务器证书,则通过 SSL 进行的复制将失败。
    • 自签名的证书当前不支持通过 SSL 复制。

  3. 如果没有为使用者服务器中的后缀配置复制,请按照“启用使用者副本”中的说明启用此复制。
  4. 以另一个复制管理员的身份按照“高级使用者配置”中说明的步骤定义使用者服务器中的证书条目 DN。
  5. 如果没有为供应商服务器中的后缀配置复制,请按照“启用集线器副本”“启用主副本”中的说明启用此复制。
  6. 在供应商服务器,创建一个新复制协议,以将更新发送至位于安全 SSL 端口的使用者服务器。有关详细说明,请按照“创建复制协议”中的步骤执行操作。在使用者服务器上指定一个安全端口,选择一个SSL 选项(确定使用口令还是证书)。为所选的 SSL 选项输入 DN(复制管理员或证书)。

配置复制协议后,供应商将会通过 SSL 向使用者发送所有复制更新消息,如果您选择该项,则将使用证书。如果使用为 SSL 配置的协议通过控制台执行客户初始化,则客户初始化还会使用安全连接。


通过 WAN 复制

Directory Server 5.2 具有可以执行任意形式复制的能力,包括在通过广域网 (WAN) 连接的计算机之间进行多主复制 (MMR)。复制机制的内部改善允许供应商服务器以较长等待时间和较低带宽通过网络对具有合理延迟的使用者服务器进行初始化和更新。


复制数据传输速率始终比可用的物理介质所能允许的带宽速率要低。如果副本之间的更新容量不能在物理上与可用带宽相适应,则即使进行调整也无法阻止各个副本在较重的更新负载下产生差异。复制延迟和更新性能与多种因素有关,包括但不仅限于下列内容:修改率、条目大小、服务器硬件、平均等待时间和平均带宽。如果您的系统环境中有复制方面的问题,请与 Sun 专业服务代表联系。


复制机制的内部参数默认情况下处于适用于 WAN 的最佳状态。不过,如果由于上面提及的因素而导致复制速度慢,您可能会根据经验调整窗口大小和组大小这两个参数。您还可以计划复制以避开峰值网络时间,从而改善整个网络的使用情况。最后,Directory Server 支持对复制数据的压缩,以优化带宽的使用情况。

配置网络参数

以下两个参数确定了复制机制如何对条目进行分组,以通过网络更有效地发送这些条目。它们影响供应商和使用者交换复制更新消息和确认的方式。

请监视您所作的任何修改所产生的影响,并相应地进行调整。有关说明,请参阅“监视复制状态”

这两种网络参数在每个复制协议中都是可配置的。这样,您可以根据每个使用者的特定网络状况调整复制性能。

不需要中断复制来修改窗口大小和组大小参数:

  1. 在 Directory Server Console 上选择“配置”选项卡,然后展开“数据”节点和已复制后缀的节点。
  2. 在此后缀下选择“复制”节点,在右侧窗格中选择要配置的复制协议,然后单击“编辑”。
  3. 在“复制协议”对话框中选择“网络”选项卡,输入窗口大小的新值(范围为 1 到 1000)和组大小的新值(范围为 1 到 100)。组大小必须小于或等于窗口大小。
  4. 单击“确定”保存新值,然后关闭“复制协议”对话框。
  5. 新参数值将立即生效,下一个复制更新发送至相应的使用者。

计划复制活动

如果副本之间紧密同步不是非常重要,则通过 WAN 复制数据的一种方法就是在低网络使用率期间计划更新。网络可用性越高,执行更新就越快,如果已经在高使用率下运行,则复制消息将不会进一步加大网络拥塞。

通过使用者复制协议,您可以每天或每周为每个使用者独立计划更新:

  1. 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和已复制后缀的节点。
  2. 在此后缀下选择“复制”节点,在右侧窗格中选择要配置的复制协议,然后单击“编辑”。
  3. 选择“复制协议”对话框的“计划”选项卡,然后选择每周计划旁的单选按钮。
  4. 定义计划:
    1. 对于每周更新,选中要发生复制日期(一天或多天)旁的复选框。如果希望在这些日期进一步限制复制,还可以选择输入时间范围(使用 24 小时制)。
    2. 对于每日更新,单击“全部”以每天都进行复制,并输入应该发生复制的时间范围(使用 24 小时制)。
    3. 请注意时间范围不能跨越午夜。

  5. 单击“确定”保存新值,然后关闭“复制协议”对话框。
  6. 新计划将立即生效,将导致相应使用者的下一次复制更新被延迟到计划第一次允许其进行更新时。

数据压缩

要减小复制使用的带宽,可以配置复制压缩更新使用者副本时发送的数据。复制机制使用 Zlib 压缩库。供应者和消费者必须运行在 Solaris 或 Linux 平台上才能启用压缩。

只有通过设置主服务器中复制协议条目上的 ds5ReplicaTransportCompressionLevel 属性,复制压缩的配置才可用。该属性的值可能是下列之一:

您应当根据经验测试和选择压缩级别,以便在 WAN 环境中获得最佳效果,从而实现所期望的复制使用。不应在网络延迟无意义的 LAN(局域网)中设置此参数,因为压缩和解压缩计算将减慢复制速度。

例如,将复制更新发送到 east.example.com 上的使用者时要使用最快的压缩速度,请使用下面的 ldapmodify 命令:

ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: cn=east.example.com:389,cn=replica,cn="suffixDN",
 cn=mapping tree,cn=config
changetype: modify
add: ds5ReplicaTransportCompressionLevel
ds5ReplicaTransportCompressionLevel: 3
^D

有关设置压缩级别的详细信息,请参阅《Directory Server Administration Reference》中的 Chapter 2 "ds5ReplicaTransportCompressionLevel"


修改复制拓扑

本节介绍管理现有复制拓扑的步骤,如编辑或删除复制协议;升级、降级或禁用副本;强制对使用者更新,以及管理更改日志。

管理复制协议

在主副本后缀的复制面板中,可以管理复制协议,以更改协议中的验证信息、中断对特定使用者的复制或者从拓扑中删除使用者副本。

更改复制管理员

可以编辑复制协议来更改用于绑定至使用者服务器的复制管理员身份。为避免中断复制,应该在修改复制协议前定义新复制管理员条目或者使用者证书条目。不过,如果由于绑定失败造成复制的中断,在复制还原设置的限制范围内,复制机制会在您更正错误时自动发送所有必要的更新(请参阅“高级使用者配置”)。

要更改用于验证使用者的复制管理员,请执行以下操作:

  1. 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
  2. 在右侧面板中,选择要修改的复制协议,然后单击“编辑”。
  3. 在“复制协议”对话框中,选择“连接”选项卡。
  4. 此状态行会指示使用者服务器的主机名和端口号。

  5. 修改 DN 和口令字段,以包含另一个复制管理员条目的 DN 和口令或者使用者服务器中证书条目的 DN。
  6. 如果此复制协议通过安全端口使用 SSL,您还可以单击“选项”按钮来选择安全验证的类型。如果使用口令连接,供应商将通过加密 SSL 连接使用给定 DN 进行简单验证。如果使用证书连接,DN 字段是证书条目的 DN,不需要口令。
  7. 不能将现有复制协议从非安全验证切换到安全验证,反之亦然。要启用具有不同安全设置的复制,必须创建另一个复制协议。

  8. 单击“确定”以保存更改。

对复制协议进行复制

对复制协议进行复制是一种在大型复制拓扑中配置供应商副本的多个使用者副本的简单方法:

  1. 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
  2. 在复制协议列表中,选择一个要复制的协议。如果要创建一个具有安全连接的新使用者协议,必须选择一个也使用安全端口的现有协议。如果要创建一个非安全协议,必须选择一个非安全协议。
  3. 单击“编辑”并浏览“复制协议”对话框的选项卡,验证此协议的配置。以下小节将说明这些选项卡的配置:

  4. 在仍选中同一复制协议的情况下,单击“复制”按钮。
  5. 从列表中选择新使用者的主机名或端口号,或者单击“添加主机”按钮使用其他的主机和端口。此列表和“添加主机”对话框将仅允许您选择与要复制的使用者协议具有相同安全类型的使用者。
  6. 确保选中列表中的一个主机名,单击“确定”为该使用者服务器创建一个新的复制协议。
  7. 新协议将复制现有协议的所有配置信息。这就是说您必须具有在两个服务器中定义的完全相同的、并且使用相同口令的复制管理员条目。如果要修改新协议的配置(如更改复制管理员 DN),请从列表中选择该协议,然后单击“编辑”。

禁用复制协议

禁用复制协议时,主副本将停止向指定使用者发送更新。将停止向该服务器进行复制,但协议中的所有设置都将保留。以后可以启用协议重新开始复制。有关在中断后恢复复制机制的信息,请参阅下面的“启用复制协议”

要禁用复制协议,请执行以下操作:

  1. 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
  2. 在右侧面板中,选择要禁用的复制协议。
  3. 在协议列表下的框中选择“操作”>“禁用协议”。
  4. 单击“是”确认要禁用复制协议。

列表中此协议的图标会将显示状态更改为已禁用。

启用复制协议

启用复制协议将恢复向指定使用者进行复制。不过,如果复制的中断时间超过了复制还原设置允许的时间,并且使用者不能由另一供应商更新,则您必须重新初始化使用者。复制还原设置是供应商的更改日志和使用者清除延迟的最大大小和存留期(请参阅“高级使用者配置”)。

中断时间较短,而且复制可以恢复时,重新启用协议后主副本将自动更新使用者。

要启用复制协议,请执行以下操作:

  1. 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
  2. 在右侧面板中,选择要启用的复制协议。
  3. 在协议列表下的框中选择“启用”按钮。
  4. 必要时重新初始化使用者副本。

删除复制协议

删除复制协议将会停止向相应使用者进行复制,并删除此协议的所有配置信息。如果以后要恢复复制,而禁用协议,请按照“禁用复制协议”中的说明进行操作。

要删除复制协议,请执行以下操作:

  1. 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
  2. 在右侧面板中,选择要删除的复制协议。
  3. 在协议列表的右侧单击“删除”按钮。
  4. 单击“是”确认要删除此复制协议。

升级或降级副本

升级或降级副本将会更改其在复制拓扑中的角色。专门使用者副本可以升级为集线器副本,集线器副本可以升级为主副本。主副本可以降级为集线器副本,集线器副本也可以降级为专门使用者副本。不过,主副本不能直接降级为使用者副本,同样使用者副本也不能直接升级为主副本。

多主复制机制中允许的升级和降级使得拓扑非常灵活。先前由某个使用者副本使用的站点负载可能会增大,并需要一个具有若干副本的集线器副本来处理加载。如果加载包括对副本内容的许多修改,则集线器副本可以成为一个主副本,以更快地进行本地更改,然后可以将这些本地更改复制到其他站点中的其他主副本。

要升级或降级一个副本,请执行以下操作:

  1. 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
  2. 在右侧面板中,选择“更改”>“升级-降级副本”菜单项。
  3. 复制向导仅允许您选择一个许可的新角色,然后按步骤完成配置过程以配置新的副本角色。您应该了解以下后果:
    • 降级主副本或集线器副本时,副本将变为只读,并被配置为可以向其他主副本发送引用。新集线器副本将保留它的所有使用者副本,不论是集线器副本还是专门使用者副本。
    • 将单个主副本降级为集线器副本将会创建一个没有主副本的拓扑。假设您要定义的是新主副本,此向导会允许您完成此操作。不过,最好将新主副本添加为多主副本,并在降级其他副本之前允许对其进行初始化。
    • 降级集线器副本或使用者副本时,将删除所有的复制协议。如果其他集线器副本或主副本没有对集线器的使用者副本进行更新,则不会再对其进行更新。您应该在其他集线器副本或主副本中创建新协议,以更新这些使用者副本。
    • 将使用者副本升级为集线器副本时,就会启用其更改日志,您可以定义它与使用者副本之间的新协议。
    • 将集线器副本升级为主副本时,此副本将接受修改请求,您可以定义此副本与其他主副本、集线器副本或专门使用者副本之间的新协议。

禁用副本

禁用副本将会从复制拓扑中删除此副本。它将不再被更新或发送更新,这取决于它的角色是主副本、集线器副本还是使用者副本。禁用供应商将会删除所有复制协议,如果要再次启用此副本,则必须重新创建这些协议。

要禁用副本,请执行以下操作:

  1. 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
  2. 在右侧面板中,选择“更改”>“禁用复制”菜单项。
  3. 在验证对话框中单击“是”。
  4. 重置此后缀的写入权限和引用(可选)。这些设置将与禁用副本时的设置一样,例如,已禁用的使用者副本仍会向它的前一个主副本发送修改请求。
  5. 要修改写入权限和引用,请在“配置”选项卡中选择此后缀的节点,并在右侧面板的“设置”选项中进行修改。有关详细信息,请参阅“设置访问权限和引用”

移动更改日志

更改日志是对给定供应商副本的全部修改的内部记录,服务器使用更改日志来对其他副本重复进行这些修改。更改日志的内容由服务器自动进行管理,即使重新启动服务器后也会通过多主更新对其进行更新。

在 Directory Server 的早期版本中,可以通过 LDAP 访问更改日志。不过,现在更倾向于服务器内部使用此日志。如果您有需要读取更改日志的应用程序,请使用回退更改日志插件获取向后兼容性。有关详细信息,请参阅“使用回退更改日志插件”

只有在需要将更改日志文件移动到另一个位置时,管理员才应该修改更改日志,例如存储此文件的磁盘已满。


警告

禁用更改日志或将其移动至一个新位置时,更改日志将被重新初始化。在上述任一情况下,您都需要重新初始化此服务器中的所有使用者副本。


您必须使用 Directory Server Console 移动更改日志,千万不要使用操作系统 renamemv 命令移动:

  1. 在 Directory Server Console 的顶级“配置”选项卡上选择“数据”节点,然后在右侧面板中选择“复制”选项卡。
  2. 在文本字段中输入一个新位置。从现在起,这是要存储更改日志的新路径和目录名称。例如,将更改日志从默认位置 ServerRoot/slapd-server ID/changelogdb 移动至 ServerRoot/slapd-server ID/newchangelog
  3. 现有更改日志将从原位置删除,新的更改日志将保留在新位置中。

  4. 在“复制”选项卡中单击“保存”。
  5. 重新启动 Directory Server。
  6. 按照“初始化副本”中的说明重新启动使用者副本。

保持副本同步

停止复制涉及的 Directory Server 以进行常规维护后,当目录服务器回到联机状态时,您需要确保该服务器已通过复制立即获得了更新。如果是多主副本环境中的主副本,则需要多主集合中的另一个主副本对目录信息进行更新。如果是其他情况,集线器副本或专门使用者副本脱机进行维护后,它们回到联机状态时,需要由主副本对这些副本进行更新。

本节介绍复制重试算法,以及如何在无需等待下次重试的情况下强制发生复制更新。


只有已经设置复制并且已经初始化使用者副本时,才能使用本节中说明的步骤。


复制重试算法

供应商尝试向使用者副本中复制不成功时,它将以递增的时间间隔定期重试。重试模式如下所示:20、40、80、160,然后 300 秒。此后,供应商将每隔 300 秒(5 分钟)重试一次。

请注意,即使您已将复制协议配置为始终保持供应商副本和使用者副本同步,但要使脱机超过五分钟的副本立即回到最新的状态,仅这样设置还不够。

要确保目录信息在服务器回到联机状态时立即处于同步状态,您可以使用 Directory Server Console 或可定制的脚本。

通过控制台强制复制更新

要确保在使用者、多主复制配置中的主副本经过一定时间回到联机状态后立即向其发送复制更新,您可以在保留最近目录数据的供应商中执行这些步骤:

  1. 在 Directory Server Console 顶级“配置”选项卡中,展开“数据”节点和主副本的后缀节点,然后在此后缀下选择“复制”节点。
  2. 副本状态信息将显示在右侧面板中。

  3. 在与要更新的使用者副本相应的列表中选择复制协议,然后单击“操作”>“立即发送更新”。
  4. 这样,将开始向保留需要被更新信息的副本中进行复制。

通过命令行强制复制更新

在需要更新的使用者副本中,下面的脚本将提示供应商立即发送复制更新。您可以复制此示例,并立即给定一个有意义的名称,如 replicate_now.sh。必须为此示例中列出的变量提供实际值。


管理员必须运行此脚本,因为不能将其配置为在脱机服务器回到联机状态后可以自动运行。


#!/bin/sh
SUP_HOST=supplier_hostname
SUP_PORT=supplier_portnumber
SUP_MGRDN=supplier_directoryManagerDN
SUP_MGRPW=supplier_directoryManagerPassword
MY_HOST=consumer_hostname
MY_PORT=consumer_portnumber

ldapsearch -1 -h ${SUP_HOST} -p ${SUP_PORT} -D "${SUP_MGRDN}" \
           -w ${SUP_MGRPW} -b "cn=mapping tree, cn=config" \
           "(&(objectclass=nsds5replicationagreement) \
              (nsDS5ReplicaHost=${MY_HOST}) \
              (nsDS5ReplicaPort=${MY_PORT}))" \
           dn nsds5ReplicaUpdateSchedule > /tmp/$$

cat /tmp/$$ |
awk ’
BEGIN { s = 0 }
/^dn: / { print $0;
  print "changetype: modify";
  print "replace: nsds5ReplicaUpdateSchedule";
  print "nsds5ReplicaUpdateSchedule: 0000-2359 0123456";
  print "-";
  print "";
  print $0;
  print "changetype: modify";
  print "replace: nsds5ReplicaUpdateSchedule";
  }
/^nsds5ReplicaUpdateSchedule: / { s = 1; print $0; }
/^$/ {
  if ( $s == 1 )
    { print "-" ; print ""; }
  else
    { print "nsds5ReplicaUpdateSchedule: 0000-2359 0123456";
      print "-" ; print ""; };
  s = 0; }
’ > /tmp/ldif.$$

echo "Ldif is in /tmp/ldif.$$"
echo

ldapmodify -c -h ${SUP_HOST} -p ${SUP_PORT} -D "${SUP_MGRDN}" \
           -w ${SUP_MGRPW} -f /tmp/ldif.$$

如果要通过 SSL 连接更新要发生的操作,您必须使用适当的参数和值修改脚本中的 ldapmodify 命令。有关详细信息,请参阅“配置 LDAP 客户机以使用安全性”


使用早期版本进行复制

本节介绍如何使用 Directory Server 的早期版本配置复制。

Directory Server 5.1 和 5.2 版本几乎在所有复制配置方面完全兼容,以下情况例外:

Directory Server 5.2 在下列情况下可能会与 Directory Server 4.x 版本的复制方案有关:

能够将 Directory Server 5.2 作为旧版 Directory Server 的使用者的主要好处在于可以简化已复制环境的移植。有关移植已复制环境所要执行的步骤的详细信息,请参阅《Directory Server Installation and Migration Guide》中的 Chapter 4 "Upgrading and Migrating Data for a Single Directory Server Installation"

将 Directory Server 5.2 配置为 Directory Server 4.x 的使用者

如果要将 Directory Server 5.2 作为 Directory Server 4.x 版本的使用者来使用,必须按照下面的步骤对其进行配置:

  1. 按照“启用主副本”中的说明将此副本启用为副本。即使此副本是 4.x 供应商的使用者,也必须将其配置为主副本。
  2. 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
  3. 在右侧面板中,为此副本选择“更改”>“启用 4.x 兼容性”。此外,还可以从“对象”菜单中选择启用 4.x 兼容性。
  4. 在“启用 4.x 兼容性”窗口中,指定旧版供应商服务器将用来绑定的绑定 DN 和口令。此处指定的绑定 DN 和口令必须用于旧版复制。因此,不能使用现有的 DN 或者 5.x 复制中使用的默认复制管理员。
  5. 如果使用“复制向导”来配置旧版复制,则您指定的绑定 DN 和口令将正确地存储在旧版复制配置条目中。如果是从命令行手动地配置旧版复制,则必须使用 nsslapd-legacy-updatednnsslapd-legacy-updatepw 属性在旧版复制配置条目中指定绑定 DN 和口令。

    旧版复制仅能使用简单验证,而不能使用需要有证书的安全验证。

  6. 单击“确定”。现在,此使用者副本已准备好接收旧版供应商的更新。
  7. 确保 5.2 副本服务器上的架构可以定义将从 4.x 主副本复制的内容所使用的所有属性和对象类。
  8. 通过导入在 4.x 主副本上创建的 LDIF 副本文件来初始化 5.2 副本。此文件中的第一个条目包含 4.x 复制机制所需的 copiedfrom 属性。

在服务器中启用 4.x 兼容性会配置默认安装的旧版复制插件。此插件将处理旧版供应商的更新,并在已复制后缀的内容中执行更新。


只要启用了 4.x 兼容性,此副本就会为客户机的所有修改请求返回引用。尽管 Directory Server 5.2 已配置为主副本,但它不会在此后缀中执行修改请求。反之,它会将引用返回至 4.x 供应商服务器。


要完成旧版复制设置,现在必须配置旧版供应商以向 5.2 Directory Server 进行复制。有关在 4.x Directory Server 中配置复制协议的说明,请参阅随 Directory Server 提供的文档。

更新 Directory Server 5.1 架构

在 Directory Server 5.2 中,架构文件 11rfc2307.ldif 已经更改为符合 RFC2307 要求 (http://www.ietf.org/rfc/rfc2307.txt)。在 5.2 和 5.1 服务器之间配置或启用复制之前,必须更新 5.1 服务器上的架构。在服务器的这两个版本上,架构文件都位于 ServerRoot/slapd-server ID/config/schema/ 下。

  1. 将文件 11rfc2307.ldif 从 5.2 服务器复制到 5.1 服务器。
    • 如果已经在 5.1 服务器上安装了 Solaris 软件包,则还必须删除过时的 10rfc2307.ldif 文件。
    • 如果基于任何其他平台上在 5.1 服务器上安装了 zip 文件,则将覆盖现有的 11rfc2307.ldif 文件。
  2. 以下架构文件将受此更改的影响,还必须从 5.2 服务器对其进行复制以覆盖 5.1 服务器上的现有文件:
    • 20subscriber.ldif
    • 30ns-common.ldif
    • 50ns-admin.ldif
    • 50ns-certificate.ldif
    • 50ns-directory.ldif
    • 50ns-legacy.ldif
    • 50ns-mail.ldif
    • 50ns-mlm.ldif
    • 50ns-msg.ldif
    • 50ns-netshare.ldif
  3. 重新启动 5.1 服务器,然后继续配置复制和初始化副本。同步其他架构元素时,可能会复制服务器之间的某些架构属性,不过,对于复制机制而言,这属于正常行为。
  4. 您可能需要更新依赖旧版本架构的任意应用程序。新的 11rfc2307.ldif 文件包括以下修改:
    • 删除了 automountautomountInformation 属性。
    • ipHost 对象类允许的属性的列表不再包括 o$ ou$ owner$ seeAlso$ serialNumber
    • ieee802Device 对象类必填属性的列表不再包括 cn
    • ieee802Device 对象类允许的属性的列表不再包括 description$ l$ o$ ou$ owner$ seeAlso$ serialNumber
    • bootableDevice 对象类必填属性的列表不再包括 cn
    • bootableDevice 对象类允许的属性的列表不再包括 description$ l$ o$ ou$ owner$ seeAlso$ serialNumber
    • nisMap 对象类的 OID 现在是 1.3.6.1.1.1.2.9


使用回退更改日志插件

希望 Directory Server 5.2 主副本可以维护 4.x 型更改日志时,可以使用回退更改日志插件。有时,这对某些应用程序而言是必要的,如与 Directory Server 4.x 更改日志格式有相关性的 Meta Directory,因为它们从更改日志中读取信息。

回退更改日志插件允许 Directory Server 5.2 成为旧版 4.x 使用者副本的供应商。仅支持 4.x 供应商的 Directory Server 5.2 使用者,如“使用早期版本进行复制”中所述。回退更改日志插件操作与复制协议无关,对复制拓扑没有影响。可以在单主部署方案中的任一台服务器中启用回退更改日志插件。通常,如果正在部署的任何应用程序的要求中包含回退更改日志,则此部署中不应该使用多主复制拓扑。

除保留在服务器的 5.2 更改日志中外,回退更改日志还存储在特殊后缀 cn=changelog 下的单独数据库中。回退更改日志由单级条目组成。更改日志中的每个条目都有对象类 changeLogEntry,并可以包括下表中列出的属性。

表 8-1 回退更改日志条目的属性

属性

定义

changeNumber

该单值属性始终存在。它包含一个唯一标识各个更改的整数。此数值与更改发生的顺序相关。数值越大,更改时间越晚。

targetDN

此属性包含受 LDAP 操作影响的条目的 DN。如果是 modrdn 操作,targetDN 属性包含修改或移动操作前条目的 DN。

changeTime

此属性指定更改操作发生的时间。

changeType

指定 LDAP 操作的类型。该属性的值可能是下列之一:adddeletemodifymodrdn

changes

对于添加和修改操作,则包含对条目所作的更改(LDIF 格式)。

newRDN

如果是 modrdn 操作,则指定条目的新 RDN。

deleteOldRdn

如果是 modrdn 操作,则指定是否已删除原 RDN。

newSuperior

如果是 modrdn 操作,则指定条目的 newSuperior 属性。

启用回退更改日志插件

回退更改日志插件配置信息位于 dse.ldifcn=Retro Changelog Plugin,cn=plugins,cn=config 条目中。

要从 Directory Server Console 启用回退更改日志插件,请执行以下操作:

  1. 在 Directory Server Console 的顶级“配置”选项卡上,展开“插件”节点,并向下滚动以选择“回退更改日志插件”。
  2. 在右侧面板中,选中“启用插件”复选框,并单击“保存”。要禁用该插件,请清除此复选框。
  3. 启用或禁用插件后,必须重新启动 Directory Server。

要从命令行中启用回退更改日志插件,请执行以下操作:

  1. 使用以下命令修改回退更改日志插件的配置条目:
  2. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: cn=Retro Changelog Plugin,cn=plugins,cn=config
    changetype: modify
    replace: nsslapd-pluginenabled
    nsslapd-pluginenabled: on
    ^D

  3. 重新启动服务器。有关重新启动服务器的信息,请参阅“启动和停止 Directory Server”

修整回退更改日志

在指定的时间后,可以自动删除更改日志中的条目。要配置条目从更改日志中自动删除前所经历的时间,必须设置 cn=Retro Changelog Plugincn=pluginscn=config 条目中的 nsslapd-changelogmaxage 配置属性。此属性仅可以从命令行设置,例如:

ldapmodify -h host -p port -D "cn=Directory Manager" -p password
dn: cn=Retro Changelog Plugin,cn=plugins,cn=config
changetype: modify
replace: nsslapd-changelogmaxage
nsslapd-changelogmaxage: IntegerTimeunit
^D

其中 Integer 代表一个数字,Timeunit 可以为下列之一:s 表示秒、m 表示分钟、h 表示小时、d 表示天,w 表示星期。变量 IntegerTimeunit 之间不应该有空格,例如:

nsslapd-changelogmaxage:2d

回退更改日志的下次操作将修整更改日志。

访问回退更改日志

更改日志支持搜索操作。包括下列形式的过滤器时,搜索处于最佳状态:

(&(changeNumber>=X)(changeNumber<=Y))

作为一般规则,不应该在回退更改日志条目上执行添加或修改操作,但可以删除条目减少更改日志的大小。仅在要修改默认访问控制策略时,才需要在回退更改日志中执行修改操作。

创建回退更改日志时,默认情况下将默认应用下列访问控制规则:

不应向匿名用户授予读取权限,因为更改日志条目中可能包含对敏感信息(如口令)的修改如果不允许经过验证的用户查看回退更改日志条目的内容,您可能希望进一步限制对回退更改日志内容的访问。

要修改适用于回退更改日志的默认访问控制策略,您应该修改 cn=changelog 条目的 aci 属性。有关设置 aci 属性的详细信息,请参阅第 6 章“管理访问控制”


监视复制状态

可以使用新命令行工具以及 Directory Server Console 来监视复制状态。

命令行工具

有三种新命令行工具用于监视复制部署:

这些工具位于以下目录中:

ServerRoot/shared/bin

《Directory Server Administration Reference》中的 Chapter 1 "Tools Reference" 给出了完整的命令行语法以及这些工具的使用示例。

复制状态选项卡

要查看 Directory Server Console 中的复制状态摘要,请执行以下操作:

  1. 在 Directory Server Console 的顶级“状态”选项卡中选择“复制”节点。
  2. 右侧面板将显示一个表,包含为此服务器配置的每个复制协议的有关信息。

  3. 如果要监控复制状态,请选中“继续刷新”复选框。例如,您将会看到副本初始化何时结束。
  4. 如果要确定尚未复制到使用者副本的上次主副本更新,请单击“挂起的更改数目”按钮。将警告您,该操作可能需要很长时间并且需要确认。确定挂起更改号需要下载用户的更新记录并和主机的更改日志比较。如果这些日志很大,该操作可能需要很长的时间和大量服务器资源。
  5. 单击列标题并调整其大小,就可以修改表的布局。单击“查看选项”按钮还可以修改表的内容,并且只选择那些希望看到的列。表 8-2 说明了要在表中显示的为服务器的每个协议所选择的复制参数。
  6. 表 8-2 Directory Server Console 状态选项卡中的复制参数

    表标题

    说明

    后缀

    为被复制的后缀或子后缀命名。

    远程副本

    包含使用者服务器的主机名和端口。

    说明

    包含在该复制协议中提供的说明字符串。

    状态

    表示协议是否被禁用、初始化使用者或通过增加更新正常复制。

    摘要

    包含最新的事件(初始化或更新的开始或结束)以及最新收到的消息。

    发送更新

    累积自从复制启用或服务器重新启动以来发送到使用者的独立更新的总量。

    最后一个启动的更新

    表示何时启动了最近复制更新。

    最后一个结束的更新

    表示最近复制更新何时结束。

    最近更新消息

    提供最近复制更新的状态。

    最后一条初始化消息

    提供使用者的最近初始化状态。

    最后一个启动的初始化

    表示使用者副本开始的最近初始化时间。

    最后一个结束的初始化

    表示使用者副本结束的最近初始化时间。


解决常见复制冲突

多主复制使用松散一致性复制模式。这就意味着可在不同服务器上同时修改同一条目。当在两个服务器之间发送更新时,需要解决有冲突的更改内容。大多数情况下,根据与每台服务器上的更改相关联的时间标记,系统可以自动解决有冲突的更改。最近发生的更改具有优先权。

但有些情况下则需要人为干预来解决更改冲突问题,以解决问题。具有无法由复制过程自动解决的更改冲突的条目中包含冲突标记属性 nsds5ReplConflict,该属性是操作属性。

定期搜索包含此属性的条目以查找有冲突的条目。例如,可以使用下面的 ldapsearch 命令:

% ldapsearch -h host -p port -D "cn=Directory Manager" -w  password \
-b "dc=example,dc=com" "(nsds5ReplConflict=*)"

注意默认情况下会对 nsds5ReplConflict 属性编制索引。

解决命名冲突

如果具有相同 DN 的条目是在服务器将所作的更改在彼此之间进行复制之前创建的,则它们可以在各个单独的主副本上创建。复制时,冲突解决机制将自动地对创建的第二个条目重命名。

发生了 DN 命名冲突的条目在重命名时会包含其唯一标识符,这是由其 DN 中的 nsuniqueid 操作属性给出的。例如,如果在两个主副本中同时创建条目 uid=bjensen,ou=People,dc=example,dc=com,则复制后这两个主副本都具有以下两个条目:

应该使用一种使其具有有用 DN 的方法对第二个条目进行重命名。可以删除冲突的条目并再次向它添加一个不冲突的名称。不过,最可靠的方法是创建条目时对其重命名。根据命名属性是单值还是多值,重命名过程会有所不同。下面分别说明每个过程。

重命名具有多值命名属性的条目

要重命名具有多值命名属性的冲突条目,请执行以下操作:

  1. 在保留旧 RDN 值的前提下对条目进行重命名。例如:
  2. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: nsuniqueid=66446001-1dd211b2+uid=bjensen,dc=example,dc=com
    changetype: modrdn
    newrdn: uid=NewValue
    deleteoldrdn: 0
    ^D

    在此步骤中无法删除旧 RDN 值,因为它也包含无法删除的 nsuniqueid 操作属性。

  3. 删除命名属性的旧 RDN 值和冲突标记属性。例如:
  4. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: uid=NewValue,dc=example,dc=com
    changetype: modify
    delete: uid
    uid: bjensen
    -
    delete: nsds5ReplConflict
    ^D

重命名具有单值命名属性的条目

当命名属性是单值(例如 dc,域组件)时,不能只将条目重命名为同一属性的另一个值。必须为其给定一个临时名称。

  1. 使用一个不同的命名属性重命名该条目,并保留旧 RDN。例如:
  2. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: nsuniqueid=66446001-1dd211b2+dc=HR,dc=example,dc=com
    changetype: modrdn
    newrdn: o=TempName
    deleteoldrdn: 0
    ^D

    在此步骤中无法删除旧 RDN 值,因为它也包含无法删除的 nsuniqueid 操作属性。

  3. 将需要的命名属性更改为唯一的值,然后删除冲突标记属性。例如:
  4. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: o=TempName,dc=example,dc=com
    changetype: modify
    replace: dc
    dc: uniqueValue
    -
    delete: nsds5ReplConflict
    ^D

  5. 将条目重命名回需要的命名属性。例如:
  6. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: o=TempName,dc=example,dc=com
    changetype: modrdn
    newrdn: dc=uniqueValue
    deleteoldrdn: 1
    ^D

通过将 deleteoldrdn 属性的值设置为 1,可以删除临时属性值对 o=TempName。如果要保留此属性,可以将 deleteoldrdn 属性的值设置为 0

解决孤条目冲突

复制删除操作时,如果使用者服务器发现要删除的条目有子条目,冲突解决过程就会创建一个紧附条目,以避免目录中出现孤条目。

同样,复制添加操作时,如果使用者服务器找不到父条目,冲突解决过程就会创建一个代表父条目的紧附条目,以便使新条目不是孤条目。

紧附条目是包含对象类 glueextensibleObject 的临时条目。创建紧附条目的方式有以下几种:

解决潜在的互操作问题

对于依赖属性唯一性的应用程序(例如邮件服务器)而言,为实现互操作性,可能需要对包含 nsds5ReplConflict 属性的条目进行访问限制。如果没有限制对这些条目的访问,则需要一个属性的应用程序将同时选择原始条目和包含 nsds5ReplConflict的冲突解决条目,并导致操作失败。

要限制访问,需要使用下列命令修改授予匿名读取访问权限的默认 ACI:

ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: dc=example,dc=com
changetype: modify
delete: aci
aci: (target ="ldap:///dc=example,dc=com")
 (targetattr !="userPassword"
 (version 3.0;acl "Anonymous read-search  access";
 allow (read, search, compare)(userdn = "ldap:///anyone");)
-
add: aci
aci: (target="ldap:///dc=example,dc=com")
 (targetattr!="userPassword")
 (targetfilter="(!(nsds5ReplConflict=*))")(version 3.0;acl
 "Anonymous read-search access";allow (read, search, compare)
 (userdn="ldap:///anyone");)
^D

新的 ACI 将阻止包含 nsds5ReplConflict 属性的条目返回到搜索结果中。



上一章      目录      索引      下一章     


版权所有 2004 Sun Microsystems, Inc. 保留所有权利。