![]() | |
Sun Java(TM) System Directory Server 5.2 2005Q1 管理指南 |
第 8 章
管理复制复制是一种机制,通过这种机制可以将目录内容自动从一个 Directory Server 复制到另一个或多个服务器。任何类型的写操作——条目添加、修改乃至删除——都可以自动镜像到其他 Directory Server。有关复制概念、复制方案以及如何在目录部署中计划复制的完整说明,请参见 Directory Server Deployment Planning Guide。
Directory Server 5.2 具有下列新增复制功能:
本章介绍设置各种复制方案时要执行的任务,包括下列主题:
简介配置复制是比较复杂的任务。开始之前,您应该清楚地了解组织中复制的部署方式,如使用的是单主复制、多主复制还是利用集线器的级联复制。复制单位为后缀或子后缀:将同时复制该后缀的所有条目。在要进行的部署中,必须将每个后缀标识为后缀所包含数据的主副本、集线器副本或专用消费者副本。
服务器中的已复制后缀称为副本。主副本是既能接受客户机读取操作也能接受其写入操作的副本。集线器副本和专用消费者副本是只能通过复制机制接收更新的只读副本。集线器副本可以从主副本或另一集线器副本接收更新,并将其转发给其他集线器副本或专用消费者副本。专用消费者副本只能从主副本或集线器副本接收更新。
下面的三个图表显示了通用复制方案中副本之间的关系。
图 8-1 单主复制
图 8-2 利用集线器的级联复制
图 8-3 多主复制
本文档还使用术语提供者和消费者,指的是参与复制协议的两种服务器角色。提供者是发送复制更新的服务器,消费者是接收这些更新的服务器。上图说明了以下关系:
不论协议为何种类型,许多复制设置都适用于协议的提供者角色或消费者角色中的副本。
配置复制的步骤摘要以下步骤假设您正在复制单个后缀。如果要复制多个后缀,您可以在各个服务器中对其进行并行配置。也就是说,可以重复每一步以配置多个后缀的复制。
要配置任何复制拓扑,请按以下顺序操作:
选择复制管理员设置复制的一个关键部分是选择条目,也称为复制管理员,发送复制更新时提供者将使用复制管理员以绑定到消费者服务器。所有包含接收更新的后缀的服务器都必须至少有一个复制管理员条目。
Directory Server 有一个可以在每台服务器中使用的默认复制管理员条目。其 DN 是 cn=Replication Manager,cn=replication,cn=config。
建议您在简单复制方案中使用默认复制管理员。复制向导自动使用此条目配置消费者副本,从而简化副本部署。
如果未定义默认复制管理员密码,此复制向导将提示您设置此密码。如果以后要更改密码,请执行下列操作:
如果不使用默认复制管理员,您可以新建任意用作复制管理员的条目。例如,您可能想让若干复制管理员条目对每个已复制后缀都有一个不同的密码。创建个人复制管理员的另一个原因是为了支持复制的不同验证模式,例如通过 SSL 使用证书。
复制管理员条目必须包含定义复制协议时选择的验证方法所要求的属性。例如,默认复制管理员是 person 对象类,它允许使用 userPassword 属性进行简单验证。有关使用证书以绑定到复制管理员的详细信息,请参见通过 SSL 复制。
复制管理员条目不应该位于消费者服务器的已复制后缀中。定义复制管理员的合适位置是 cn=replication,cn=config。
如果是通过命令行手动新建复制管理员,则必须通过修改副本配置条目的 nsDS5ReplicaBindDN 属性在消费者副本上指定绑定 DN。
如果是使用旧版复制,则对复制管理员条目还有其他约束。有关详细信息,请参见将 Directory Server 5.2 配置为 Directory Server 4.x 的消费者。
为每个消费者选择了复制管理员后,请执行以下操作:
- 写下或牢记您所选择或创建的复制管理员 DN。以后如果在提供者中创建与其消费者之间的复制协议时,需要此 DN 和密码。
- 如果要定义密码过期策略,请注意不要包括复制管理员,否则将导致密码过期后复制失败。要在复制管理员条目上禁用密码过期,请创建一个其密码不会过期的密码策略,然后将此策略分配给复制管理员条目。有关详细信息,请参见管理单个密码策略。
配置专用消费者专用消费者是已复制后缀的只读副本。它可以接收来自以“复制管理员”身份绑定的服务器的更新,以进行更改。配置消费者服务器由两个步骤组成,首先准备用来存放副本的空后缀,然后使用复制向导在该后缀上启用复制。可选的高级配置包括选择其他复制管理员、设置引用或者设置清除延迟。
以下小节给出了在专用消费者服务器中配置专用消费者副本的步骤。请在包含给定后缀的专用消费者副本的每台服务器中重复所有步骤。
创建消费者副本的后缀
如果不存在此后缀,请在消费者副本中使用一个与要使用主副本 DN 相同的 DN 创建一个空后缀。有关说明,请参见创建后缀。
如果存在不为空的后缀,则从主副本中初始化副本时后缀内容将丢失。
启用消费者副本
复制向导可以简化启用专用消费者副本的过程:
现在,复制状态会显示副本已准备好接收更新,左侧窗格中的图标会发生变化反映这种情况。
高级消费者配置
默认情况下,向导将副本配置为使用默认复制管理员。如果希望使用另外的复制管理员条目,则必须设置高级配置。还可以使用此对话框设置修改和清除延迟的引用。
- 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点以及要配置后缀的节点,然后在此后缀下选择“复制”节点。
- 在右面板中,单击“高级”按钮以显示“高级复制设置”对话框。
- 在“绑定 DN”选项卡中,使用“添加”和“删除”按钮来创建一个有效复制管理员的 DN 列表。这样,提供者就可以在与副本间的协议中使用上述任一 DN。可以输入 DN 名称或浏览目录来添加新的 DN。
要配置通过 SSL 使用证书进行的复制,请以上述其中一个复制管理员身份输入证书条目的 DN。
- 完成后单击“确定”,或者选择“可选”选项卡进行高级配置。
- 在“高级副本设置”对话框的“可选”选项卡中,LDAP URL 列表指定了发送至该消费者的修改请求的其他引用。使用“添加”或“删除”按钮创建 LDAP URL 列表。
此复制机制自动配置消费者,以返回复制拓扑中所有已知主副本的引用。这些默认引用假设客户机通过常规连接使用简单验证。如果要使客户机可以选择绑定至使用 SSL 实现安全连接的主副本,请以 ldaps://servername:port 的形式添加引用(其中端口号使用的是安全端口号)。(如果将主副本配置为仅用于安全连接,则 URL 将默认指向安全端口。)
如果已将一个或多个 LDAP URL 添加为引用,选中表下面的复选框将会强制消费者仅发送引用至这些 LDAP URL,而不会为主副本发送。例如,如果希望客户机始终被引用至主服务器中的安全端口,而不是默认端口,请为这些安全端口创建一个 LDAP URL 列表并选中此复选框。如果希望指定用来处理所有更新的特定主副本或 Directory Server 代理,您也可以使用独占引用。
- 还可以在“可选”选项卡中更改清除延迟。
消费者服务器存储有关副本内容更新的内部信息,清除延迟参数指定了服务器必须保留该信息的时间长度。这与其提供者服务器上更改日志的 MaxAge 参数有关。这两个参数的较短者决定了这两台服务器间的复制被禁用或关闭多久后,仍可正常恢复复制的时间。7 天的默认值就大多数情况而言已足够了。
- 单击“确定”保存此副本的高级复制配置。
配置集线器集线器副本既可作为消费者副本也可作为主副本,以进一步将已复制数据分配至更多的消费者副本。集线器副本既能从提供者接收更新,又能将复制更新发送给其消费者副本。它们不接受修改,但可以将引用返回到主副本。
配置集线器服务器由两个步骤组成,首先准备用来存放副本的空后缀,然后使用复制向导在该后缀中启用复制。可选的高级配置包括选择其他复制管理员、设置引用、设置清除延迟以及设置更改日志参数。
以下小节给出了配置一台集线器服务器的步骤。请在包含给定后缀的集线器副本的每台服务器上重复所有步骤。
创建集线器副本的后缀
如果不存在此后缀,请在集线器服务器中使用与要使用的主副本相同的 DN 创建一个空后缀。有关说明,请参见创建后缀。
如果存在不为空的后缀,则从主副本中初始化副本时后缀内容将丢失。
启用集线器副本
复制向导可以简化启用集线器副本的过程:
- 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和要作为集线器副本后缀的节点,然后在此后缀下选择“复制”节点。
副本状态信息将显示在右面板中。
- 单击“启用复制”按钮启动复制向导。
- 选择“集线器副本”单选按钮,然后单击“下一步”以继续。
- 如果未执行上述步骤,系统将提示您选择更改日志文件。默认更改日志文件显示在文本字段中。如果不希望使用默认值,请输入更改日志的文件名,或者单击“浏览”显示一个文件选择器。
如果已经启用更改日志,则向导将跳过此步骤。
- 单击“下一步”。如果未执行上述步骤,系统将提示您输入并确认默认复制管理员密码。在每个字段中键入同一密码,然后单击“下一步”以继续。
如果默认复制管理员已经有一个已定义密码,则向导将跳过这一步。
- 更新复制配置时,复制向导将显示状态消息。完成后单击“关闭”。
现在,复制状态会显示副本已准备好接收更新,左侧窗格中的图标会发生变化反映这种情况。
高级集线器配置
作为提供者,集线器服务器需要一个更改日志,向导会将集线器副本配置为使用默认更改日志设置。要修改这些设置,请执行以下操作:
Directory Server Administration Reference 中详细介绍了更改日志配置属性。
同样,复制向导使用的也是默认复制管理员。如果已经创建另一个希望使用的复制管理员条目,则需要设置高级配置。还可以使用此对话框设置修改和清除延迟的引用。
- 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和要配置后缀的节点,然后在此后缀下选择“复制”节点。
- 在右面板中,单击“高级”按钮以显示“高级复制设置”对话框。
- 在“绑定 DN”选项卡中,使用“添加”和“删除”按钮来创建一个有效复制管理员的 DN 列表。这样,提供者就可以在与副本间的协议中使用上述任一 DN。可以输入 DN 名称或浏览目录来添加新的 DN。
要配置通过 SSL 使用证书进行的复制,请以上述其中一个复制管理员身份输入证书条目的 DN。
- 完成后单击“确定”,或者选择“可选”选项卡进行高级配置。
- 在“高级副本设置”对话框的“可选”选项卡中,LDAP URL 列表指定了发送至此集线器的修改请求的其他引用。使用“添加”或“删除”按钮创建 LDAP URL 列表。
此复制机制自动配置集线器,以返回复制拓扑中所有已知主副本的引用。这些默认引用假设客户机通过常规连接使用简单验证。如果要使客户机可以选择绑定至使用 SSL 实现安全连接的主副本,请以 ldaps://servername:port 的形式添加引用(其中端口号使用的是安全端口号)。
如果已将一个或多个 LDAP URL 添加为引用,选中表下面的复选框将会强制服务器仅发送引用至这些 LDAP URL,而不会为主副本发送。例如,如果希望客户机始终被引用至主服务器中的安全端口,而不是默认端口,请为这些安全端口创建一个 LDAP URL 列表并选中此复选框。如果希望指定用来处理所有更新的特定主副本或 Directory Server 代理,您也可以使用独占引用。
- 还可以在“可选”选项卡中更改清除延迟。
集线器服务器存储有关副本内容更新的内部信息,清除延迟参数指定了服务器必须保留该信息的时间长度。这与提供更新的服务器中更改日志的 MaxAge 参数有关(不是与其本身的更改日志有关)。这两个参数的较短者决定了这两台服务器间的复制被禁用或关闭多久后,仍可正常恢复复制的时间。7 天的默认值就大多数情况而言已足够了。
- 单击“确定”保存此副本的高级复制配置。
配置主副本主副本包含数据的主副本,并在向其他所有副本发送更新前集中所有的修改。主副本记录所有的更改、检查其消费者的状态并在必要时向消费者发送更新。在多主复制中,一个主副本还会接收到来自其他主副本的更新。
配置主服务器包括以下步骤:定义包含主副本的后缀、启用使用复制向导的主副本以及在必要时配置高级复制。
以下小节给出了配置一台主服务器的步骤。请在包含给定后缀的主副本的每台服务器中重复所有步骤。
定义主副本的后缀
在包含要复制条目的主副本服务器中选择或创建一个后缀。有关说明,请参见创建后缀。
创建复制协议前,此后缀应该包含所有初始数据。这样,您可以立即初始化此数据的消费者副本。要确保正确的主副本配置操作和初始化,只能有一个主副本包含所有的初始数据,其他主副本中的后缀应该为空。
启用主副本
复制向导可以简化启用主副本的过程:
- 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和要作为主副本后缀的节点,然后在此后缀下选择“复制”节点。
副本状态信息将显示在右面板中。
- 单击“启用复制”按钮启动复制向导。
- 选中“主副本”单选按钮,然后单击“下一步”以继续。
- 输入一个“副本 ID”:选择 1 到 65534 之间的一个整数(包括 1 和 65534)。
对于给定后缀,所有主副本的“副本 ID”都必须是唯一的。同一服务器中不同后缀的主副本可以使用相同的“副本 ID”,只要它在每个副本的其他主副本中是唯一的。
- 单击“下一步”。如果未执行上述步骤,系统将提示您选择更改日志文件。默认更改日志文件显示在文本字段中。如果不希望使用默认值,请输入更改日志的文件名,或者单击“浏览”显示一个文件选择器。
如果已经启用更改日志,则向导将跳过此步骤。
- 单击“下一步”。如果未执行上述步骤,系统将提示您输入并确认默认复制管理员密码。如果是单主复制,则无需使用复制管理员,但仍然需要输入一个密码以继续操作。在每个字段中键入同一密码,然后单击“下一步”以继续。
如果默认复制管理员已经有一个已定义密码,则向导将跳过这一步。
- 更新复制配置时,复制向导将显示状态消息。完成后单击“关闭”。
现在复制状态将显示此主副本的“副本 ID”,左侧窗格中的图标将发生变化,反映此后缀的复制是活动的。
高级多主复制配置
默认情况下,向导将主副本配置为使用默认更改日志设置。要修改更改日志设置,请执行以下操作:
Directory Server Administration Reference 中详细介绍了更改日志配置属性。
同样,复制向导使用的也是默认复制管理员。如果已经创建另一个希望使用的复制管理员条目,则需要设置高级配置。还可以使用此对话框设置修改和清除延迟的引用。如果配置的是单主副本,您可以跳过此过程。
- 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和要配置后缀的节点,然后在此后缀下选择“复制”节点。
- 在右面板中,单击“高级”按钮以显示“高级复制设置”对话框。
- 在“绑定 DN”选项卡中,使用“添加”和“删除”按钮来创建一个有效复制管理员的 DN 列表。这样,提供者就可以在与副本间的协议中使用上述任一 DN。可以输入 DN 名称或浏览目录来添加新的 DN。
要配置通过 SSL 使用证书进行的复制,请以上述其中一个复制管理员身份输入证书条目的 DN。
- 完成后单击“确定”,或者选择“可选”选项卡进行高级配置。
- 在“高级副本设置”对话框的“可选”选项卡中,LDAP URL 列表指定了发送至此主副本的修改请求的其他引用。初始化后,主副本将立即自动返回引用,如多主副本初始化后会聚中所述。使用“添加”或“删除”按钮创建 LDAP URL 列表。
此复制机制自动配置集线器,以返回复制拓扑中所有已知主副本的引用。这些默认引用假设客户机通过常规连接使用简单验证。如果要使客户机可以选择绑定至使用 SSL 实现安全连接的主副本,请以 ldaps://servername:port 的形式添加引用(其中端口号使用的是安全端口号)。
如果已将一个或多个 LDAP URL 添加为引用,选中表下面的复选框将会强制服务器仅发送引用至这些 LDAP URL,而不会为主副本发送。例如,如果希望客户机始终被引用至主服务器中的安全端口,而不是默认端口,请为这些安全端口创建一个 LDAP URL 列表并选中此复选框。
- 还可以在“可选”选项卡中更改清除延迟。
主副本服务器必须存储副本内容更新的内部信息,清除延迟参数指定了这些服务器必须保存这些信息多长时间。这与主副本服务器中更改日志的 MaxAge 参数有关(不是与其本身的更改日志有关)。这两个参数的较短者决定了这两台服务器间的复制被禁用或关闭多久后,仍可正常恢复复制的时间。7 天的默认值就大多数情况而言已足够了。
- 单击“确定”保存此副本的高级复制配置。
创建复制协议复制协议是提供者(此提供者配置和控制发送更新至给定消费者的方式)上的一组参数。必须在发送更新至其消费者的提供者副本中创建复制协议。必须为要更新的每个消费者创建复制协议。
按以下顺序创建复制协议:
例如,图 8-3 所示的具有 2 个主副本和 3 个专用消费者副本的多主复制拓扑中,应该按以下顺序创建八个复制协议:
要创建复制协议,请执行以下操作:
- 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和提供者后缀的节点,然后在此后缀下选择“复制”节点。
副本状态信息将显示在右面板中。
- 单击已定义复制协议的列表旁的“新建”按钮。
- 在“复制协议”对话框中,从菜单中选择一个包含消费者副本的现有服务器,或者单击“其他”按钮定义一个。
单击“其他”按钮后,输入完全符合要求的消费者服务器名及其 LDAP 端口号。如果此端口使用 SSL,请选中安全端口复选框,以启用复制更新的连接安全。
- 输入消费者服务器中复制管理员条目的 DN 和密码。默认情况下,此 DN 即为默认复制管理员的 DN。
如果选择的是有安全端口的消费者,您可以单击“选项”按钮以确定 DN 字段的含义。如果使用密码连接,提供者将通过加密 SSL 连接使用简单验证和通讯。如果使用证书连接,DN 字段是包含证书的条目 DN,不需要密码。
- 键入此协议的说明字符串(可选)。消费者服务器名和端口号以及说明字符串将显示在此主副本的复制协议列表中。
- 完成后单击“确定”。屏幕上将显示一个验证对话框,询问是否要测试刚才输入的连接参数。
- 如果要使用给定复制管理员和密码测试至给定服务器及端口号的连接,请单击“是”。如果连接失败,您仍然有可能使用此协议,可能情况为参数正确但服务器脱机。
测试完成后,协议将显示在此主副本的复制协议列表中。
以后可以编辑复制协议,对消费者服务器上的复制管理员 DN 和密码进行更改:
配置部分复制默认情况下,复制会将已复制后缀中的全部条目复制到消费者副本。使用部分复制功能,可以指定复制期间要进行复制的属性子集或不对其进行复制的属性子集。部分复制是在复制协议中配置的,允许您为主副本的每个消费者副本定义属性集。这样,您可以更有效地控制要分布的数据,以及使用复制带宽和消费者资源。
例如,如果希望减小复制带宽,可以选择对通常具有较大值的属性不进行复制,如 photo、jpegPhoto 和 audio。这样,在消费者副本中这些属性不可用。再举一例,您可以选择向专门执行验证的消费者服务器仅复制 uid 和 userpassword 属性。
部分复制注意事项
启用或修改属性的分式集要求您重新初始化消费者副本。因此,应该在部署前确定部分复制的需要,并在第一次初始化副本时定义属性集。
鉴于某些属性的复杂功能(如 ACI、角色 CoS)存在相关性,复制小的属性集时应加备小心。此外,不复制 ACI、角色或 CoS 机制的说明符或过滤器中提及的其他属性将会牺牲数据的安全性,或导致搜索返回的属性处于不同的集合中。管理“不包括的属性”列表相对于管理“要包括的属性”列表更安全,产生人为错误的可能性也比较小。
如果要复制的属性集合不允许所有要复制条目遵循此模式,则您应该在消费者服务器中关闭模式检查。复制“不遵循”条目不会导致错误,因为复制机制会避开消费者中的模式检查。不过,这样消费者将包含“不遵循”条目,应该关闭模式检查以向其客户机公开相关状态。
部分复制是在主副本与集线器副本及专用消费者副本之间的复制协议中配置的。不支持多主复制环境中两个主副本之间的部分复制配置。同时,如果若干主副本与同一副本之间有复制协议,则所有这些协议都必须复制同一属性集。
Directory Server 5.2 中提供的部分复制功能不具有与 Directory Server 以前版本的向后兼容性。配置部分复制协议时,主副本和消费者副本都必须在 Directory Server 5.2 版实例中。
定义属性集
属性集是副本中启用部分复制时要复制的属性(不包括其他所有属性)的列表。可以在主服务器中定义任意数量的属性集,然后将这些属性集之一与复制协议关联。
- 在 Directory Server Console 的顶级“配置”选项卡中选择“数据”节点,然后在右面板中选择“复制”选项卡。
- 单击“复制”选项卡底部的“管理已复制属性集”按钮。可能需要向下滑动才能看到此按钮。
- 单击“添加”定义新的属性集或者从列表中选择一个现有的属性集,然后单击“编辑”修改此属性集。在显示的“属性集”对话框中,选择或取消选择“复制”列中的复选框以使该集包括或不包括相应的属性。属性名旁边的复选框表明该属性将被复制。
默认情况下,选择所有属性,建议仅取消选择特别不希望复制的那些属性。如果希望重新选择,“全部选中”按钮将重新选择所有属性。取消选择大量的属性时,目录服务器将复制除取消选择的属性以外的所有属性。如果后来模式中定义了新的属性并将这些新的属性用在了已复制的条目中,则这些新的属性将被复制,除非编辑该属性集以对其进行取消选择。
单击“一个都不选中”按钮将取消选择所有属性,然后可以选择要在集中包括的属性。单击“一个都不选中”后,定义精确的属性集时,将仅复制选定的属性。如果后来模式中定义了新的属性并将这些新的属性用在了已复制的条目中,则这些新的属性将不会被复制,除非编辑该属性集以对其进行选择。
- 为此属性集输入或修改说明字符串(可选)。这是在已定义的集列表中显示的文本和编辑将使用该集的复制协议时显示的文本。如果没有提供任何说明,则服务器将根据不包括或包括的属性来生成说明。
- 完成后单击“保存”。
启用部分复制
只能在现有复制协议中启用部分复制:
- 按照创建复制协议中的说明创建复制协议,或者选择一个以前定义的协议对其进行修改。
- 按照禁用复制协议中的说明禁用复制协议。必须禁用协议才能修改部分复制配置。
- 选择已禁用协议,然后单击“编辑”。在显示的“复制协议”对话框中选择“已复制属性”选项卡。
- 选中“仅复制一个属性集”复选框。
- 从下拉列表中选择一个现有属性集,或者单击“新建”,按照定义属性集中的说明定义一个新的属性集。还可以单击“管理已复制属性集”查看和修改现有属性集定义。
部分复制仅允许一个属性集与复制协议关联。该属性集应该包含要复制属性的确切列表。
- 选择属性集后,单击“确定”。一个提示性消息发出警告,说明您已经配置部分复制,需要重新初始化消费者副本。单击“确定”关闭该消息。
- 单击“启用”重新激活复制协议。
- 取决于要复制的属性,您应该考虑在消费者服务器中禁用模式检查。
- 如果其他主副本与此副本之间也有复制协议,必须在所有这些主副本中重复此步骤,以启用具有相同属性集的部分复制。
- 现在必须初始化消费者副本,或者,如果已复制此副本则对其进行重新初始化。请参见下面的初始化副本。
初始化副本创建复制协议后,必须在复制实际开始前初始化消费者副本。初始化期间,将物理数据从提供者副本复制到消费者副本。
某些错误条件或配置更改要求您重新初始化副本。重新初始化时,消费者副本中已复制后缀的内容将被删除,并被主副本中后缀的内容替换。这样可以确保副本保持同步,复制更新可以重新开始。这里说明的所有初始化方法还将自动生成消费者副本的索引,这样消费者就准备好以最佳状态响应客户机的读请求。
何时进行初始化
必须在配置这两个副本后且在可以进行复制前进行副本初始化。后缀中的数据已完全复制到消费者后,提供者可以开始重新对消费者执行更新操作。
在正常操作情况下,绝对不能对消费者副本再次进行初始化。不过,不论何种原因从备份中恢复单主副本中的数据时,您都应该重新初始化所有更新的副本。使用多主复制的情况下,如果消费者已由其他主副本更新,则可能不需要对其进行重新初始化。
可以使用控制台联机初始化副本,也可以使用命令行手动初始化副本。初始化数量较少的消费者,使用控制台进行联机初始化会比较方便。可以从复制协议直接联机初始化副本。不过,由于是按顺序对每个副本进行初始化,所以此方法不适用于初始化大量副本。从一个 LDIF 文件中同时初始化大量消费者副本时,使用命令行手动初始化是更有效的方法。
最后,有经验的管理员还可以使用二进制复制功能复制主副本或消费者副本。对此功能的某些限制仅能使具有大量数据库文件的副本具有可操作性并能节省时间,例如包含上百万个条目的副本。
在多主复制中初始化副本
如果进行多主复制,应该按以下顺序初始化副本:
- 确保一个主副本中包含要复制数据的完整集合。使用此主副本在其他每个主副本中初始化副本。
- 从主副本中(请参见执行联机副本初始化)或者从任一主副本的 LDIF 文件中(请参见导出副本至 LDIF)初始化消费者副本。
在级联复制中初始化副本
如果进行级联复制,请注意应该始终按以下顺序初始化副本:
多主副本初始化后会聚
如果进行的是多主复制,给定主副本进行初始化时,其他主副本可能会处理更改操作。因此,初始化完成后,新的主副本必须还接收初始化数据中不包括的新更新。由于初始化可能需要很长时间,所以挂起的更新数量可能也会很庞大。
为了允许会聚这些挂起的更新,初始化后,新初始化的主副本会被设置为只能读取客户机操作。(只有当在命令行中通过 LDIF 文件进行初始化或者使用备份来执行二进制复制时才会出现这种情况)。它是 Directory Server 5.2 中新增的行为。
因此,初始化后,多主配置中的主副本将处理复制更新并允许读操作,但它将为客户机所有写操作返回引用。可以按高级多主复制配置中的说明定义这些引用。下列条件下主副本会回复到读-写模式:
如果选择设置此属性,则您应该确定一个时间始终充裕的延迟,以允许主副本在初始化后与其他主副本会聚。此延迟取决于预期初始化的大小和长度,以及在其他主副本中同时发生更改的几率。初始化后,还在复制更改时就接收更新操作的主副本可能会导致异常错误。如果遇到复制错误,请参见 Directory Server Administration Reference 中的错误参考。
通过控制台开始接收更新
执行下列步骤,以明确允许多主副本初始化后可以进行更新操作:
- 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
在右面板中,控制台将显示一个消息,指示副本已经初始化,目前正返回更新操作的引用。如果此消息指示已启用自动引用延迟,您仍然可以按照此步骤改写延迟。
- 使用 insync 工具确保副本已与其他所有主副本会聚。如果所有服务器中修改之间的延迟为零或者副本从未有任何要复制的更改,则副本处于同步状态(-1 延迟)。有关详细信息,请参见 Directory Server Administration Reference。
- 单击消息右侧的按钮立即开始接收更新操作。
通过命令行开始接收更新
通过检查会聚并明确允许更新操作从而自动处理初始化多主副本的脚本中可能会使用到下列命令:
- 使用 insync 工具确保副本已与其他所有主副本会聚。如果所有服务器中修改之间的延迟为零或者副本从未有任何要复制的更改,则副本处于同步状态(-1 延迟)。有关详细信息,请参见 Directory Server Administration Reference。
- 使用下列命令来修改 the ds5BeginReplicaAcceptUpdates 配置属性:
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-2 百万),则此过程可能很耗时,这种情况下您可能会发现使用命令行进行消费者副本初始化是更有效的方法(有关详细信息,请参见从命令行初始化副本)。
使用控制台初始化消费者副本时,在初始化过程完成前,此后缀上的所有操作(包括搜索)都将被引用回主副本服务器。
使用 Directory Server Console 时,利用已配置的部分复制初始化副本非常简单明了。初始化期间,仅将选定的属性发送至消费者。
执行联机副本初始化
要使用控制台初始化或重新初始化副本,请执行以下操作:
有关监控复制状态和初始化状态的详细信息,请参见监视复制状态。
从命令行初始化副本
对于复制大量条目的部署,使用命令行手动进行副本初始化是消费者副本初始化的最快方法。如果出于性能限制而不适合进行联机处理,请使用手动处理。不过,手动初始化消费者副本的过程比联机初始化过程要复杂得多。请注意,在初始化副本之前,必须先设置复制协议。
要手动初始化或重新初始化副本,请首先将后缀数据的原副本导出至 LDIF 文件。如果正在初始化分式副本,则您应该将过滤此文件以仅保留已复制属性。然后将该文件传送到所有消费者服务器,并导入它。在多主复制部署中,可以使用从原主副本中导出的 LDIF 文件对其他主副本和所有消费者副本进行初始化。在级联复制环境中,可以使用同一个文件来初始化集线器副本及其消费者副本。
不论何种情况,都必须以从已配置主副本中导出的 LDIF 文件开始。不能使用任意的 LDIF 来初始化所有副本,因为它不包含复制数据。必须首先将 LDIF 文件导入至主副本,然后按照下列步骤将其导出。
导出副本至 LDIF
可以使用 db2ldif -r 或 db2ldif-task -r 命令存储 LDIF 文件中的副本内容。有关详细信息,请参见从命令行导出到 LDIF。必须使用 -r 选项利用这些命令导出副本。
下面的示例会将整个 dc=example,dc=com 副本导出至名为 example_master.ldif 的文件:
然后,如果必要可以过滤 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 Man Page Reference。
然后,您可以使用 fildif 生成的 filtered.ldif 文件初始化此复制协议中的消费者副本。按照下节中的说明将此文件传送至消费者服务器,并将其导入。
将 LDIF 文件导入至消费者副本
您可以使用 Directory Server Console 中的导入功能,或者使用 directoryserver ldif2db 或 directoryserver 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 Man Page Reference。
使用二进制复制初始化副本
二进制复制功能可以复制整个服务器,方法是使用一台服务器中的二进制备份文件在另一台服务器中恢复为相同的目录内容。此高级功能与目录服务器的数据库文件进行交互,最好由有经验的管理员使用。
二进制复制限制
因为二进制复制功能会将数据库文件从一台计算机移动至另一台计算,所以此机制受到以下严格限制:
- 这两台计算机都必须使用相同的硬件和操作系统,包括所有的 Service Pack 或修补程序。
- 这两台计算机安装的 Directory Server 版本必须相同,包括二进制格式(32 位或 64 位)、Service Pack 和修补程序级别。
- 这两台服务器必须有包括相同后缀的相同目录树。所有后缀的数据库文件必须一起复制,不能复制单个后缀。
- 每个后缀在两台服务器中都必须有相同的已配置索引,包括 VLV(虚拟列表视图)索引。后缀的数据库必须有相同的名称。
- 要复制的 Directory Server 一定不能保留 o=NetscapeRoot 后缀,这表示它不能是 Administration Server 的配置目录。
- 每台服务器都必须有配置为副本的相同后缀,副本在这两台服务器中必须具有相同的角色(主副本、集线器副本或消费者副本)。如果配置的是部分复制,则必须在所有的服务器中对其进行相同的配置。
- 两台服务器中都不能使用属性加密。
- 如果启用,则属性值唯一性插件在两台服务器中必须具有相同的配置,并且必须在新副本中对其进行重新配置,如下面步骤中所述。
在上面的条件下,可以对另一个主副本服务器的二进制复制的主副本,或者另一个消费者服务器的二进制复制的消费者副本进行初始化或重新初始化。下面两个步骤介绍了执行二进制复制的可选方法,一个不需要停止服务器,另一个使用的磁盘空间最小。
不停止服务器的情况下进行二进制复制
建议使用下面的步骤执行二进制复制,因为它使用标准备份功能来创建服务器的数据库文件。执行标准备份可以确保所有的数据库文件在无需停止服务器的情况下处于相关状态。
不过,此步骤有一定的限制,您需要加以考虑。备份操作和恢复操作在同一台计算机中创建数据库文件的副本,因此每台计算机中这些文件所需磁盘空间将加倍。另外,如果目录包含千兆字节的数据,这些文件的实际复制操作将花费大量的时间。如果您的磁盘空间有限或者数据库文件特别大,请参见使用最小磁盘空间进行二进制复制。
- 在新副本的目标计算机中安装 Directory Server,必要时创建服务器的一个新实例,然后按照二进制复制限制中的说明对其进行配置。
- 在此副本涉及的复制拓扑中创建所有复制协议。包括从提供者与此副本之间的协议,如果不是专用消费者副本,还包括此副本与其消费者副本之间的协议。
- 选择一个与要初始化的副本类型相同的已完全配置和初始化的副本(可能为主副本、集线器副本或消费者副本),并根据使用控制台备份服务器中的步骤在此后缀中执行标准备份。
- 将备份目录中的所有文件复制或传送到目标计算机的目录中,例如使用 ftp 命令。
- 按照从备份恢复数据中的说明将文件加载至目标服务器。
- 如果在多主复制方案中已经初始化了一个新的主副本,请按照多主副本初始化后会聚中的步骤进行操作,以确保新副本可以开始接收客户机的更新操作。
使用最小磁盘空间进行二进制复制
下面的步骤使用的磁盘空间以及耗费的时间都较少,因为它不备份数据库文件。不过,它要求您停止被复制的服务器,以确保数据库文件处于相关状态。
警告
千万不要将此步骤用于重新初始化已参与多主复制方案的主副本。只能用于重新初始化消费者服务器或者初始化新的主副本服务器。要重新初始化现有主副本,请使用联机初始化、导入 LDIF 文件或者执行不停止服务器的情况下进行二进制复制中说明的步骤。
- 在新副本的目标计算机中安装 Directory Server,必要时创建服务器的一个新实例,然后按照二进制复制限制中的说明对其进行配置。
- 在此副本涉及的复制拓扑中创建所有复制协议。包括从提供者与此副本之间的协议,如果不是专用消费者副本,还包括此副本与其消费者副本之间的协议。
- 按照启动和停止 Directory Server 中的说明停止要被初始化或重新初始化的目标服务器。
- 选择一个与要初始化的副本类型相同的已完全配置和初始化副本(可能为主副本、集线器副本或消费者副本),并停止服务器。如果在多主配置中复制主副本,则您应该确保在停止服务器前,已使用来自其他主副本的最近更改对其进行了完全更新。
- 删除来自目标服务器的所有数据库文件,包括事务日志、更改日志和区域文件(__db.xxx 文件)。除非文件已被重新定位,否则数据库文件和事务日志将位于 ServerRoot/slapd-serverID/db 目录下。
- 复制或传送所有数据库文件(包括从源副本计算机至目标计算机的事务处理日志),如使用 ftp 命令。除非文件已被重新定位,否则数据库文件和事务日志将位于 ServerRoot/slapd-serverID/db 目录下。
如果初始化主副本或集线器副本,您还必须复制更改日志中的所有文件,默认情况下这些文件位于 ServerRoot/slapd-serverID/changelog 下。
- 重新启动源服务器和目标服务器。
启用引用完整性插件如果要使用引用完整性插件,必须在所有主副本服务器中启用该插件。不需要在集线器服务器或消费者服务器中启用。请参见使用带复制功能的引用完整性。
通过 SSL 复制可以对复制所涉及到的 Directory Server 进行配置,这样所有复制操作都可以通过 SSL 连接进行。要执行此操作,请完成以下步骤:
- 将提供者和消费者服务器配置为都可以使用 SSL。
有关详细信息,请参见第 11 章“管理验证和加密”。
- 如果没有为消费者服务器中的后缀配置复制,请按照启用消费者副本中的说明启用此复制。
- 以另一个复制管理员的身份按照高级消费者配置中说明的步骤定义消费者服务器中的证书条目 DN。
- 在提供者服务器,创建一个新复制协议,以将更新发送至位于安全 SSL 端口的消费者服务器。有关详细说明,请按照创建复制协议中的步骤执行操作。在消费者服务器上指定一个安全端口,选择一个SSL 选项(确定使用密码还是证书)。为所选的 SSL 选项输入 DN(复制管理员或证书)。
配置复制协议后,提供者将会通过 SSL 向消费者发送所有复制更新消息,如果您选择该项,则将使用证书。如果使用为 SSL 配置的协议通过控制台执行客户初始化,则客户初始化还会使用安全连接。
通过 WAN 复制Directory Server 5.2 具有可以执行任意形式复制的能力,包括在通过广域网 (WAN) 连接的计算机之间进行多主复制 (MMR)。复制机制的内部改善允许提供者服务器以较长等待时间和较低带宽通过网络对具有合理延迟的消费者服务器进行初始化和更新。
注
复制数据传输速率始终比可用的物理介质所能允许的带宽速率要低。如果副本之间的更新容量不能在物理上与可用带宽相适应,则即使进行调整也无法阻止各个副本在较重的更新负载下产生差异。复制延迟和更新性能与多种因素有关,包括但不仅限于下列内容:修改率、条目大小、服务器硬件、平均等待时间和平均带宽。如果您的系统环境中有复制方面的问题,请与 Sun 专业服务代表联系。
复制机制的内部参数默认情况下处于适用于 WAN 的最佳状态。不过,如果由于上面提及的因素而导致复制速度慢,您可能会根据经验调整窗口大小和组大小这两个参数。您还可以计划复制以避开峰值网络时间,从而改善整个网络的使用情况。最后,Directory Server 支持对复制数据的压缩,以优化带宽的使用情况。
配置网络参数
以下两个参数确定了复制机制如何对条目进行分组,以通过网络更有效地发送这些条目。它们影响提供者和消费者交换复制更新消息和确认的方式。
请监视您所作的任何修改所产生的影响,并相应地进行调整。有关说明,请参见监视复制状态。
这两种网络参数在每个复制协议中都是可配置的。这样,您可以根据每个消费者的特定网络状况调整复制性能。
不需要中断复制来修改窗口大小和组大小参数:
计划复制活动
如果副本之间紧密同步不是非常重要,则通过 WAN 复制数据的一种方法就是在低网络使用率期间计划更新。网络可用性越高,执行更新就越快,如果已经在高使用率下运行,则复制消息将不会进一步加大网络拥塞。
通过消费者复制协议,您可以每天或每周为每个消费者独立计划更新:
数据压缩
要减小复制使用的带宽,可以配置复制压缩更新消费者副本时发送的数据。复制机制使用 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。
修改复制拓扑本节介绍管理现有复制拓扑的步骤,如编辑或删除复制协议;升级、降级或禁用副本;强制对消费者更新,以及管理更改日志。
管理复制协议
在主副本后缀的复制面板中,可以管理复制协议,以更改协议中的验证信息、中断对特定消费者的复制或者从拓扑中删除消费者副本。
更改复制管理员
可以编辑复制协议来更改用于绑定至消费者服务器的复制管理员身份。为避免中断复制,应该在修改复制协议前定义新复制管理员条目或者消费者证书条目。不过,如果由于绑定失败造成复制的中断,在复制还原设置的限制范围内,复制机制会在您更正错误时自动发送所有必要的更新(请参见高级消费者配置)。
要更改用于验证消费者的复制管理员,请执行以下操作:
- 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
- 在右面板中,选择要修改的复制协议,然后单击“编辑”。
- 在“复制协议”对话框中,选择“连接”选项卡。
此状态行会指示消费者服务器的主机名和端口号。
- 修改 DN 和密码字段,以包含另一个复制管理员条目的 DN 和密码或者消费者服务器中证书条目的 DN。
- 如果此复制协议通过安全端口使用 SSL,您还可以单击“选项”按钮来选择安全验证的类型。如果使用密码连接,提供者将通过加密 SSL 连接使用给定 DN 进行简单验证。如果使用证书连接,DN 字段是证书条目的 DN,不需要密码。
不能将现有复制协议从非安全验证切换到安全验证,反之亦然。要启用具有不同安全设置的复制,必须创建另一个复制协议。
- 单击“确定”以保存更改。
对复制协议进行复制
对复制协议进行复制是一种在大型复制拓扑中配置提供者副本的多个消费者副本的简单方法:
- 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
- 在复制协议列表中,选择一个要复制的协议。如果要创建一个具有安全连接的新消费者协议,必须选择一个也使用安全端口的现有协议。如果要创建一个非安全协议,必须选择一个非安全协议。
单击“编辑”并浏览“复制协议”对话框的选项卡,验证此协议的配置。以下小节将说明这些选项卡的配置:
- 在仍选中同一复制协议的情况下,单击“复制”按钮。
- 从列表中选择新消费者的主机名或端口号,或者单击“添加主机”按钮使用其他的主机和端口。此列表和“添加主机”对话框将仅允许您选择与要复制的消费者协议具有相同安全类型的消费者。
- 确保选中列表中的一个主机名,单击“确定”为该消费者服务器创建一个新的复制协议。
- 新协议将复制现有协议的所有配置信息。这就是说您必须具有在两个服务器中定义的完全相同的、并且使用相同密码的复制管理员条目。如果要修改新协议的配置(如更改复制管理员 DN),请从列表中选择该协议,然后单击“编辑”。
禁用复制协议
禁用复制协议时,主副本将停止向指定消费者发送更新。将停止向该服务器进行复制,但协议中的所有设置都将保留。以后可以启用协议重新开始复制。有关在中断后恢复复制机制的信息,请参见下面的启用复制协议。
要禁用复制协议,请执行以下操作:
列表中此协议的图标会将显示状态更改为已禁用。
启用复制协议
启用复制协议将恢复向指定消费者进行复制。不过,如果复制的中断时间超过了复制还原设置允许的时间,并且消费者不能由另一提供者更新,则您必须重新初始化消费者。复制还原设置是提供者的更改日志和消费者清除延迟的最大大小和存留期(请参见高级消费者配置)。
中断时间较短,而且复制可以恢复时,重新启用协议后主副本将自动更新消费者。
要启用复制协议,请执行以下操作:
删除复制协议
删除复制协议将会停止向相应消费者进行复制,并删除此协议的所有配置信息。如果以后要恢复复制,而禁用协议,请按照禁用复制协议中的说明进行操作。
要删除复制协议,请执行以下操作:
升级或降级副本
升级或降级副本将会更改其在复制拓扑中的角色。专用消费者副本可以升级为集线器副本,集线器副本可以升级为主副本。主副本可以降级为集线器副本,集线器副本也可以降级为专用消费者副本。不过,主副本不能直接降级为消费者副本,同样消费者副本也不能直接升级为主副本。
多主复制机制中允许的升级和降级使得拓扑非常灵活。先前由某个消费者副本使用的站点负载可能会增大,并需要一个具有若干副本的集线器副本来处理加载。如果加载包括对副本内容的许多修改,则集线器副本可以成为一个主副本,以更快地进行本地更改,然后可以将这些本地更改复制到其他站点中的其他主副本。
要升级或降级一个副本,请执行以下操作:
- 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
- 在右面板中,选择“更改”>“升级-降级副本”菜单项。
- 复制向导仅允许您选择一个许可的新角色,然后按步骤完成配置过程以配置新的副本角色。您应该了解以下后果:
- 降级主副本或集线器副本时,副本将变为只读,并被配置为可以向其他主副本发送引用。新集线器副本将保留它的所有消费者副本,不论是集线器副本还是专用消费者副本。
- 将单个主副本降级为集线器副本将会创建一个没有主副本的拓扑。假设您要定义的是新主副本,此向导会允许您完成此操作。不过,最好将新主副本添加为多主副本,并在降级其他副本之前允许对其进行初始化。
- 降级集线器副本或消费者副本时,将删除所有的复制协议。如果其他集线器副本或主副本没有对集线器的消费者副本进行更新,则不会再对其进行更新。您应该在其他集线器副本或主副本中创建新协议,以更新这些消费者副本。
- 将消费者副本升级为集线器副本时,就会启用其更改日志,您可以定义它与消费者副本之间的新协议。
- 将集线器副本升级为主副本时,此副本将接受修改请求,您可以定义此副本与其他主副本、集线器副本或专用消费者副本之间的新协议。
禁用副本
禁用副本将会从复制拓扑中删除此副本。它将不再被更新或发送更新,这取决于它的角色是主副本、集线器副本还是消费者副本。禁用提供者将会删除所有复制协议,如果要再次启用此副本,则必须重新创建这些协议。
要禁用副本,请执行以下操作:
- 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
- 在右面板中,选择“更改”>“禁用复制”菜单项。
- 在验证对话框中单击“是”。
- 重置此后缀的写入权限和引用(可选)。这些设置将与禁用副本时的设置一样,例如,已禁用的消费者副本仍会向它的前一个主副本发送修改请求。
要修改写入权限和引用,请在“配置”选项卡中选择此后缀的节点,并在右面板的“设置”选项中进行修改。有关详细信息,请参见设置访问权限和引用。
移动更改日志
更改日志是对给定提供者副本的全部修改的内部记录,服务器使用更改日志来对其他副本重复进行这些修改。更改日志的内容由服务器自动进行管理,即使重新启动服务器后也会通过多主更新对其进行更新。
在 Directory Server 的早期版本中,可以通过 LDAP 访问更改日志。不过,现在更倾向于服务器内部使用此日志。如果您有需要读取更改日志的应用程序,请使用回退更改日志插件获取向后兼容性。有关详细信息,请参见使用回退更改日志插件。
只有在需要将更改日志文件移动到另一个位置时,管理员才应该修改更改日志,例如存储此文件的磁盘已满。
禁用更改日志或将其移动至一个新位置时,更改日志将被重新初始化。如果对更改日志目录进行更改时,未将某些更改复制到拓扑中的其他服务器,则需要重新初始化拓扑中的所有消费者。如果在移动更改日志前已复制了所有更改(即,是否所有服务器保持同步),则不需要重新进行初始化。
您必须使用 Directory Server Console 移动更改日志,千万不要使用操作系统 rename 或 mv 命令移动:
- 在 Directory Server Console 的顶级“配置”选项卡上选择“数据”节点,然后在右面板中选择“复制”选项卡。
- 在文本字段中输入一个新位置。从现在起,这是要存储更改日志的新路径和目录名称。例如,将更改日志从默认位置 ServerRoot/slapd-serverID/changelogdb 移动至 ServerRoot/slapd-serverID/newchangelog。
现有更改日志将从原位置删除,新的更改日志将保留在新位置中。
- 在“复制”选项卡中单击“保存”。
- 重新启动 Directory Server。
- 按照初始化副本中的说明重新启动消费者副本。
保持副本同步
停止复制涉及的 Directory Server 以进行常规维护后,当目录服务器回到联机状态时,您需要确保该服务器已通过复制立即获得了更新。如果是多主副本环境中的主副本,则需要多主集合中的另一个主副本对目录信息进行更新。如果是其他情况,集线器副本或专用消费者副本脱机进行维护后,它们回到联机状态时,需要由主副本对这些副本进行更新。
本节介绍复制重试算法,以及如何在无需等待下次重试的情况下强制发生复制更新。
复制重试算法
提供者尝试向消费者副本中复制不成功时,它将以递增的时间间隔定期重试。重试模式如下所示:10、20、40、80、160 秒,然后 5 次 300 秒。提供者连续重复相同的重试模式。
请注意,即使您已将复制协议配置为始终保持提供者副本和消费者副本同步,但要使脱机超过五分钟的副本立即回到最新的状态,仅这样设置还不够。
要确保目录信息在服务器回到联机状态时立即处于同步状态,您可以使用 Directory Server Console 或可自定义的脚本。
通过控制台强制复制更新
要确保在消费者、多主复制配置中的主副本经过一定时间回到联机状态后立即向其发送复制更新,您可以在保留最近目录数据的提供者中执行这些步骤:
通过命令行强制复制更新
在需要更新的消费者副本中,下面的脚本将提示提供者立即发送复制更新。您可以复制此示例,并立即给定一个有意义的名称,如 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.2 和 Directory Server 5.1 之间进行复制
Directory Server 5.1 和 5.2 几乎在所有复制配置方面完全兼容,但以下情况例外:
- 不能在运行 Directory Server 5.2 的主副本以及运行 Directory Server 5.1 的消费者副本之间配置部分复制。
- 配置 5.2 提供者副本和 5.1 消费者副本之间的协议之前,必须在 cn=config 中将 nsslapd-schema-repl-useronly 设置为 on。否则,在复制到 5.1 时,5.2 中的模式将发生冲突。进行了此设置之后,将仅复制存储在 99user.ldif 文件中的用户定义的那些模式元素。请参见复制模式定义。
- 在 Directory Server 5.2 中,模式文件 11rfc2307.ldif 已更改为符合 RFC 2307 的要求。您必须更新 5.1 服务器上的相应文件,如更新 Directory Server 5.1 模式中所述。
- 5.2 已降级为集线器副本的主副本仍会显示在 5.1 消费者副本的引用列表中。不过,由于降级的内部机制,已降级副本的端口号将为零。此引用 URL 不可用,大多数客户机在不能遵循这些引用时会自动将其引用给其他主副本。不过,您可能需要增加访问这些 5.1 副本的客户机中的引用的跳跃限制。5.2 消费者副本不显示不可用的引用 URL,也不会将其返回至已降级的主副本。
在 Directory Server 5.2 和 Directory Server 4.x 之间进行复制
Directory Server 在下列情况下,5.2 可能会与 Directory Server 4.x 版本的复制方案有关:
能够将 Directory Server 5.2 作为旧版 Directory Server 的消费者的主要好处在于,可以简化已复制环境的迁移。有关迁移复制环境所需步骤的详细信息,请参见 Directory Server Installation and Migration Guide。
将 Directory Server 5.2 配置为 Directory Server 4.x 的消费者如果要将 Directory Server 5.2 作为 Directory Server 4.x 版本的消费者来使用,必须按照下面的步骤对其进行配置:
- 按照启用主副本中的说明将此副本启用为主副本。即使此副本是 4.x 提供者的消费者,也必须将其配置为主副本。
- 在 Directory Server Console 的顶级“配置”选项卡中,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
- 在右面板中,为此副本选择“更改”>“启用 4.x 兼容性”。此外,还可以从“对象”菜单中选择“启用 4.x 兼容性”。
- 在“启用 4.x 兼容性”窗口中,指定旧版提供者服务器将用来绑定的绑定 DN 和密码。此处指定的绑定 DN 和密码必须仅用于旧版复制。因此,不能使用现有的 DN 或者 5.x 复制中使用的默认复制管理员。
如果使用“复制向导”来配置旧版复制,则您指定的绑定 DN 和密码将正确地存储在旧版复制配置条目中。如果是从命令行手动地配置旧版复制,则必须使用 nsslapd-legacy-updatedn 和 nsslapd-legacy-updatepw 属性在旧版复制配置条目中指定绑定 DN 和密码。
旧版复制仅能使用简单验证,而不能使用需要有证书的安全验证。
- 单击“确定”。现在,此消费者副本已准备好接收旧版提供者的更新。
- 确保 5.2 副本服务器上的模式可以定义将从 4.x 主副本复制的内容所使用的所有属性和对象类。
- 通过导入在 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 已经更改为符合 RFC 2307 要求 (http://www.ietf.org/rfc/rfc2307.txt)。在 5.2 和 5.1 服务器之间配置或启用复制之前,必须更新 5.1 服务器上的模式。在服务器的这两个版本上,模式文件都位于 ServerRoot/slapd-serverID/config/schema/ 下。
更新 Directory Server 5.1 模式
- 将文件 11rfc2307.ldif 从 5.2 服务器复制到 5.1 服务器。
- 以下模式文件将受此更改的影响,还必须从 5.2 服务器对其进行复制以覆盖 5.1 服务器上的现有文件:
- 重新启动 5.1 服务器,然后继续配置复制和初始化副本。同步其他模式元素时,可能会复制服务器之间的某些模式属性,不过,对于复制机制而言,这属于正常行为。
- 您可能需要更新依赖旧版本模式的任意应用程序。新的 11rfc2307.ldif 文件包括以下修改:
- 删除了 automount 和 automountInformation 属性。
- 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。
使用回退更改日志插件回退更改日志插件说明
回退更改日志是 LDAP 客户机使用的一个插件,用于保持与 Directory Server 4.x 版本之间的应用程序兼容性。回退更改日志存储在后缀 cn=changelog 下的 Directory Server 更改日志的单独数据库中。
可以在单独服务器上启用回退更改日志,或者在复制拓扑中的每个服务器上启用。在服务器上启用回退更改日志时,默认情况下,对该服务器上所有后缀的更新都将被记录。可以将回退更改日志配置为只记录对指定后缀的更新。
关于回退更改日志的详细信息
有关在复制拓扑中使用回退更改日志的信息以及使用回退更改日志插件的限制信息,请参见 Directory Server Deployment Planning Guide 中的 "Replication and the Retro Change Log"。
有关回退更改日志中某个条目的属性信息,请参见 Directory Server Administration Reference 中 "Object Class Reference" 中的 changeLogEntry。
有关回退更改日志属性的信息,请参见 Directory Server Administration Reference 中的 "Attribute Reference"。
启用回退更改日志插件
回退更改日志插件配置信息位于 dse.ldif 的 cn=Retro Changelog Plugin, cn=plugins,cn=config 条目中。
使用 Directory Server Console 启用回退更改日志插件下图显示了回退更改日志插件配置屏幕。
使用命令行启用回退更改日志插件
- 使用以下命令修改回退更改日志插件的配置条目:
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- 重新启动服务器。有关信息,请参见启动和停止 Directory Server。
配置回退更改日志以记录指定后缀的更新
在服务器上启用回退更改日志时,默认情况下,回退更改日志记录该服务器上所有后缀的更新。本节介绍如何配置回退更改日志只记录指定后缀的更新。
使用 Directory Server Console 将回退更改日志配置为记录指定后缀的更新
- 如使用 Directory Server Console 启用回退更改日志插件所述,启用回退更改日志插件。
- 在屏幕的右侧,单击“添加”。
此时将出现一个名为“参数”的新字段。
- 使用以下语法,输入要记录的后缀的名称:
suffixes="suffix1","suffix2"
- 单击“保存”。
- 如启动和停止 Directory Server 中所述,重新启动服务器。
使用命令行将回退更改日志配置为记录指定后缀的更新
- 使用以下命令修改回退更改日志插件的配置条目:
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn:cn=Retro Changelog Plugin,cn=plugins,cn=config
changetype:modify
add:nsslapd-pluginarg2
nsslapd-pluginarg2:suffixes="suffix1","suffix2"
^D- 重新启动服务器。有关信息,请参见启动和停止 Directory Server。
配置回退更改日志以记录已删除条目的属性
本节介绍如何将回退更改日志配置为记录已删除条目的指定属性。
使用 Directory Server Console 将回退更改日志配置为记录已删除条目的属性
- 如使用 Directory Server Console 启用回退更改日志插件所述,启用回退更改日志插件。
- 在屏幕的右侧,单击“添加”。
此时将出现一个名为“参数”的新字段。
- 使用以下语法,输入要记录的属性的名称:
deletedentryattributes=description,givenname
- 单击“保存”。
- 如启动和停止 Directory Server 中所述,重新启动服务器。
使用命令行将回退更改日志配置为记录已删除条目的属性
- 使用以下命令修改回退更改日志插件的配置条目:
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn:cn=Retro Changelog Plugin,cn=plugins,cn=config
changetype:modify
add:nsslapd-pluginarg3
nsslapd-pluginarg3:deletedEntryAttributes=attribute1,attribute2
^D- 重新启动服务器。有关信息,请参见启动和停止 Directory Server。
修整回退更改日志
在指定的时间后,可以自动删除更改日志中的条目。要配置条目从更改日志中自动删除前所经历的时间,必须设置 cn=Retro Changelog Plugin、cn=plugins、cn=config 条目中的 nsslapd-changelogmaxage 配置属性。此属性仅可以从命令行设置,例如:
ldapmodify -h host -p port -D "cn=Directory Manager" -w 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 表示星期。变量 Integer 和 Timeunit 之间不应该有空格,例如:
nsslapd-changelogmaxage:2d
回退更改日志的下次操作将修整更改日志。
访问回退更改日志
更改日志支持搜索操作。包括下列形式的过滤器时,搜索处于最佳状态:
(&(changeNumber>=X)(changeNumber<=Y))
作为一般规则,不应该在回退更改日志条目上执行添加或修改操作,但可以删除条目减少更改日志的大小。仅在要修改默认访问控制策略时,才需要在回退更改日志中执行修改操作。
创建回退更改日志时,默认情况下将默认应用下列访问控制规则:
不应向匿名用户授予读取权限,因为更改日志条目中可能包含对敏感信息(如密码)的修改如果不允许经过验证的用户查看回退更改日志条目的内容,您可能希望进一步限制对回退更改日志内容的访问。
要修改适用于回退更改日志的默认访问控制策略,您应该修改 cn=changelog 条目的 aci 属性。有关设置 aci 属性的详细信息,请参见第 6 章“管理访问控制”。
监视复制状态可以使用新命令行工具以及 Directory Server Console 来监视复制状态。
命令行工具
有三种新命令行工具用于监视复制部署:
这些工具位于以下目录中:
ServerRoot/shared/bin
Directory Server Man Page Reference 给出了这些工具的完整命令行语法以及使用示例。
复制状态选项卡
要查看 Directory Server Console 中的复制状态摘要,请执行以下操作:
- 在 Directory Server Console 的顶级“状态”选项卡中选择“复制”节点。
右面板将显示一个表,包含为此服务器配置的每个复制协议的有关信息。
- 如果要监控复制状态,请选中“继续刷新”复选框。例如,您将会看到副本初始化何时结束。
- 如果要确定尚未复制到消费者副本的上次主副本更新,请单击“挂起的更改数目”按钮。将警告您,该操作可能需要很长时间并且需要确认。确定挂起更改号需要下载用户的更新记录并和主机的更改日志比较。如果这些日志很大,该操作可能需要很长的时间和大量服务器资源。
- 单击列标题并调整其大小,就可以修改表的布局。单击“查看选项”按钮还可以修改表的内容,并且只选择那些希望看到的列。表8-1 说明了要在表中显示的为服务器的每个协议所选择的复制参数。
解决常见复制冲突多主复制使用松散一致性复制模式。这就意味着可在不同服务器上同时修改同一条目。当在两个服务器之间发送更新时,需要解决有冲突的更改内容。大多数情况下,根据与每台服务器上的更改相关联的时间标记,系统可以自动解决有冲突的更改。最近发生的更改具有优先权。
但有些情况下则需要人为干预来解决更改冲突问题,以解决问题。具有无法由复制过程自动解决的更改冲突的条目中包含冲突标记属性 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 的方法对第二个条目进行重命名。可以删除冲突的条目并再次向它添加一个不冲突的名称。不过,最可靠的方法是创建条目时对其重命名。根据命名属性是单值还是多值,重命名过程会有所不同。下面分别说明每个过程。
重命名具有多值命名属性的条目
要重命名具有多值命名属性的冲突条目,请执行以下操作:
- 在保留旧 RDN 值的前提下对条目进行重命名。例如:
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 操作属性。
- 删除命名属性的旧 RDN 值和冲突标记属性。例如:
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,域组件)时,不能只将条目重命名为同一属性的另一个值。必须为其给定一个临时名称。
- 使用一个不同的命名属性重命名该条目,并保留旧 RDN。例如:
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 操作属性。
- 将需要的命名属性更改为唯一的值,然后删除冲突标记属性。例如:
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- 将条目重命名回需要的命名属性。例如:
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。
解决孤条目冲突
复制删除操作时,如果消费者服务器发现要删除的条目有子条目,冲突解决过程就会创建一个紧附条目,以避免目录中出现孤条目。
同样,复制添加操作时,如果消费者服务器找不到父条目,冲突解决过程就会创建一个代表父条目的紧附条目,以便使新条目不是孤条目。
紧附条目是包含对象类 glue 和 extensibleObject 的临时条目。创建紧附条目的方式有以下几种:
解决潜在的互操作问题
对于依赖属性唯一性的应用程序(例如邮件服务器)而言,为实现互操作性,可能需要对包含 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 属性的条目返回到搜索结果中。