|
|
| Sun ONE Directory Server 管理指南 |
复制是一种机制,通过这种机制可以将目录内容自动从一个 Directory Server 复制到另一个或多个服务器。任何类型的写操作-条目添加、修改乃至删除-都可以自动镜像到其他 Directory Server。有关复制概念、复制方案以及如何在目录部署中计划复制的完整说明,请参阅 Sun ONE Directory Server 部署指南 中的第 6 章“设计复制过程”。
Sun ONE Directory Server 5.2 介绍了许多新的复制功能:
- 通过广域网 (WAN) 进行的多主复制 (MMR) 允许您在两个地理位置相距较远的主副本之间创建复制协议,以便更有效地分配数据。
- 目前 MMR 支持四个同时全部互连的、可以提供额外故障保护的主副本。
- 二进制复制可以使大量复制的初始化更加迅速。
- 分式复制允许您指定要复制的属性集,以便更快地分配数据。
- 新命令行工具可以帮助您监控复制部署。
本章介绍可以在主副本、集线器副本和使用者服务器中执行的用以设置所有复制方案类型的任务。本章包括以下主题:
- 简介
- 配置复制的步骤摘要
- 选择复制管理员
- 配置专门的客户
- 配置集线器
- 配置主副本
- 创建复制协议
- 配置分式复制
- 初始化副本
- 启用引荐完整性插件
- 通过 SSL 复制
- 通过 WAN 复制
- 修改复制拓扑
- 使用早期版本进行复制
- 使用 Retro Change Log 插件
- 监控复制状态
- 解决常见复制冲突
简介
配置复制是比较复杂的任务。开始之前,您应该清楚地了解组织中复制的部署方式,如使用的是单主复制、多主复制还是利用集线器的级联复制。复制单位为后缀或子后缀:将同时复制该后缀的所有条目。在要进行的部署中,必须标识它所包含数据的每个后缀(主机、集线器或专门的客户)。
服务器中的已复制后缀称为副本。主副本是既能接受客户机读取操作也能接受其写入操作的副本。集线器副本和专门的客户副本是只能通过复制机制接收更新的只读副本。集线器副本可以从主副本或另一集线器副本接收更新,并将其转发给其他集线器或专门的客户。专门的客户只能从主副本或集线器副本接收更新。
下图显示了通用复制方案中副本之间的关系。
图8-1    通用复制方案
![]()
本文档还使用术语供应商和使用者,指的是参与复制协议的两种服务器角色。供应商是发送复制更新的服务器,使用者是接收这些更新的服务器。上图说明了以下关系:
- 单主副本是供应商,不是使用者。
- 多主复制中的主机既是其他主机的供应商也是使用者。
- 集线器始终是供应商和使用者。
- 专门的客户只能是使用者。
许多复制设置都适用于协议的供应商角色或使用者角色中的副本,与复制类型无关。
配置复制的步骤摘要
以下步骤假设您正在复制单个后缀。如果要复制多个后缀,您可以在各个服务器中对其进行并行配置。也就是说,可以重复每一步以配置多个后缀的复制。
要配置任意复制拓扑,应该按以下顺序操作:
- 在所有服务器中定义复制管理员条目(单主副本除外)。或者确定在所有服务器中使用默认复制管理员即可。
- 在包含专门的客户的所有服务器上:
- 为使用者副本创建一个空后缀。
- 通过复制向导启用此后缀的使用者副本。
- 配置高级副本设置(可选)。
- 在包含集线器副本的所有服务器上(如果适用):
- 为集线器副本创建一个空后缀。
- 通过复制向导启用此后缀的集线器副本。
- 配置高级副本设置(可选)。
- 在包含主副本的所有服务器上:
- 为要成为主副本的副本选择或创建一个后缀。
- 通过复制向导启用此后缀的主副本。
- 配置高级副本设置(可选)。
- 按照以下顺序配置所有供应商副本上的复制协议:
- 多主集合中的主副本之间的协议。
- 主副本及其专门的客户之间的协议。
- 主副本和集线器副本之间的协议。
在该阶段,可以配置分式复制以及初始化使用者副本和集线器副本(可选)。如果是多主复制,从包含数据原副本的同一主副本中初始化所有的主副本。
- 配置所有由主副本直接供给的集线器副本复制协议。这些协议是集线器副本及其使用者副本之间的协议。在该阶段,可以初始化使用者副本(可选)。在级联复制中为每个级别的集线器副本重复这一步骤。
注意 在尝试创建复制协议前创建和配置所有副本,这一点非常重要。这样,您还可以在创建复制协议后立即初始化使用者副本。使用者初始化始终是设置复制过程中的最后一个阶段。
选择复制管理员
设置复制的一个关键部分是选择条目,也称为复制管理员,发送复制更新时供应商将使用复制管理员以绑定到使用者服务器。所有包含接收更新后缀(包括专门的客户、集线器和参与多主复制的主机)的服务器都必须至少有一个复制管理员条目。
Directory Server 有一个可能会在每台服务器中使用的默认复制管理员条目。其 DN 是 cn=Replication Manager,cn=replication,cn=config。
注意 建议您在所有简单复制方案中使用默认复制管理员。复制向导自动使用此条目配置使用者副本,从而简化副本部署。
如果未定义默认复制管理员口令,此复制向导将提示您设置此口令。如果以后要更改默认复制管理员口令,请执行以下操作:
- 在 Directory Server 控制台的顶级“配置”标签中选择“数据”节点,然后在右侧面板中选择“复制”标签。
- 在“复制管理员”标题下的两个文本字段中均输入新的口令。
- 确认口令后,单击“保存”。如果口令与确认口令不一致,则“保存”按钮不活动。
如果已经保存,您就可以创建任意的复制管理员新条目。例如,您可能想让每个已复制后缀都有一个不同的口令,从而有多个复制管理员条目。创建个人复制管理员的另一个原因是为了支持复制的不同验证模式,例如通过 SSL 使用证书。
复制管理员条目必须包含定义复制协议时选择的验证方法所要求的属性。例如,默认复制管理员是 person 对象类,它允许使用 userPassword 属性进行简单验证。有关使用证书以绑定复制管理员的详细信息,请参阅“通过 SSL 复制”。
此复制管理员的条目不应该位于使用者服务器的已复制后缀中。定义复制管理员的合适位置是 cn=replication,cn=config。
警告
您一定不要使用复制管理员条目的 DN 和口令在服务器上绑定或执行操作。复制管理员仅供复制机制使用,任何其他使用可能都需要重新初始化副本。
为每个使用者选择了复制管理员后,请执行以下操作:
- 写下或牢记您所选择或创建的复制管理员 DN。以后如果在供应商中创建与其使用者之间的复制协议时,需要此 DN 和口令。
- 如果要定义口令过期策略,请注意不要包括复制管理员,否则将导致口令到期后复制失败。要在复制管理员条目上禁用口令到期,请创建一个其口令不会到期的口令策略,然后将此策略分配给复制管理员条目。详细信息,请参阅“管理单个口令策略”。
配置专门的客户
专门的客户是已复制后缀的只读副本。它可以接收来自以特殊“复制管理员”身份绑定的主服务器的更新,以进行更改。配置使用者服务器由两个步骤组成,首先准备用来存放副本的空后缀,然后使用复制向导在该后缀上启用复制。可选的高级配置包括选择其他复制管理员、设置引荐或者设置清理延迟。
以下小节给出了在专门的客户服务器中配置专门的客户的步骤。请在包含给定后缀的专门的客户的每台服务器中重复所有步骤。
创建使用者副本的后缀
如果不存在此后缀,请采用与要使用的主副本相同的 DN 在使用者副本上创建一个空后缀。有关说明,请参阅“创建后缀”。
如果存在不为空的后缀,则从主副本中初始化副本时后缀内容将丢失。
启用使用者副本
复制向导可以简化启用专门的客户的过程:
- 在 Directory Server 控制台的顶级“配置”标签中,展开“数据”节点和要作为使用者副本后缀的节点,然后在此后缀下选择“复制”节点。
副本状态信息将显示在右侧面板中。
- 单击“启用复制”按钮启动复制向导。
- 默认情况下,“使用者副本”单选按钮处于选中状态。单击“下一步”以继续。
- 如果未执行上述步骤,系统将提示您输入并确认默认复制管理员口令。在每个字段中键入同一口令,然后单击“下一步”以继续。
如果默认复制管理员已经有一个已定义口令,则向导将跳过这一步。
- 更新复制配置时,复制向导将显示状态消息。完成后单击“关闭”。
现在,复制状态会显示副本已准备好接收更新,左侧窗格中的图标会发生变化来反映这种情况。
高级使用者配置
默认情况下,向导将副本配置为使用默认复制管理员。如果已经创建另一个希望使用的复制管理员条目,则需要设置高级配置。还可以使用此对话框设置修改和清理延迟的引荐。
- 在 Directory Server 控制台的顶级“配置”标签中,展开“数据”节点和要配置后缀的节点,然后在此后缀下选择“复制”节点。
- 在右侧面板中,单击“高级”按钮以显示“高级副本设置”对话框。
- 在“绑定 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 天的默认值已经足够。
- 单击“确定”保存此副本的高级复制配置。
配置集线器
集线器副本既可作为使用者副本也可作为主副本,以进一步将已复制数据分配至更多的使用者副本。它们必须既能从供应商接收更新,又能将复制更新发送给其使用者副本。集线器副本不接受修改,但可以将引荐返回到主副本。
配置集线器服务器由两个步骤组成,首先准备用来存放副本的空后缀,然后使用复制向导在该后缀中启用复制。可选的高级配置包括选择其他复制管理员、设置引荐、设置清理延迟以及设置更改日志参数。
以下小节给出了配置集线器服务器的步骤。请在包含给定后缀的集线器副本的每台服务器上重复所有步骤。
创建集线器副本的后缀
如果不存在此后缀,请采用与要使用的主副本相同的 DN 在集线器服务器中创建一个空后缀。有关说明,请参阅“创建后缀”。
如果存在不为空的后缀,则从主副本中初始化副本时后缀内容将丢失。
启用集线器副本
复制向导可以简化启用集线器副本的过程:
- 在 Directory Server 控制台的顶级“配置”标签中,展开“数据”节点和要作为集线器副本的后缀的节点,然后在此后缀下选择“复制”节点。
副本状态信息将显示在右侧面板中。
- 单击“启用复制”按钮启动复制向导。
- 选择“集线器副本”单选按钮,然后单击“下一步”以继续。
- 如果未执行上述步骤,系统将提示您选择更改日志文件。默认更改日志文件显示在文本字段中。如果不希望使用默认值,请输入更改日志的文件名,或者单击“浏览”显示一个文件选择器。
如果已经启用更改日志,则向导将跳过此步骤。
- 单击“下一步”。如果未执行上述步骤,系统将提示您输入并确认默认复制管理员口令。在每个字段中键入同一口令,然后单击“下一步”以继续。
如果默认复制管理员已经有一个已定义口令,则向导将跳过这一步。
- 更新复制配置时,复制向导将显示状态消息。完成后单击“关闭”。
现在,复制状态会显示副本已准备好接收更新,左侧窗格中的图标会发生变化来反映这种情况。
高级集线器配置
作为供应商,集线器服务器需要一个更改日志,向导会将集线器副本配置为使用默认更改日志设置。要修改这些设置,请执行以下操作:
- 在 Directory Server 控制台的顶级“配置”标签中选择“数据”节点,然后在右侧面板中选择“复制”标签。
- 您可能需要刷新此标签的内容,方法为选中“启用更改日志”复选框并单击“复位”按钮。然后在复制向导中,您将会看到选择的更改日志文件。
- 可以更改此更改日志文件的名称,以及更新更改日志参数:
- 最大的更改日志记录 - 决定了可以存储的总修改量,以向使用者发送更新。默认情况下此值是无限制的。如果对副本进行了大量的改动,则您可能希望限制记录的数目以节省磁盘空间。
- 最大的更改日志存留期 - 决定了发送至使用者的更新在集线器中存储的时间。默认情况下此值是无限制的。推荐使用此参数来限制更改日志的大小。
同样,复制向导使用的也是默认复制管理员。如果已经创建另一个希望使用的复制管理员条目,则需要设置高级配置。还可以使用此对话框设置修改和清理延迟的引荐。
- 在 Directory Server 控制台的顶级“配置”标签中,展开“数据”节点和要配置后缀的节点,然后在此后缀下选择“复制”节点。
- 在右侧面板中,单击“高级”按钮以显示“高级副本设置”对话框。
- 在“绑定 DN”标签中,使用“添加”和“删除”按钮来创建一个有效复制管理员的 DN 列表。这样,供应商就可以在与副本间的协议中使用上述任意 DN。可以通过输入 DN 名称或浏览目录来添加新的 DN。
要配置通过 SSL 使用证书进行的复制,请以上述其中一个复制管理员身份输入证书条目的 DN。
- 完成后单击“确定”,或者选择“可选”标签进行高级配置。
- 在“高级副本设置”对话框的“可选”标签中,LDAP URL 列表指定了发送至此集线器的修改请求的其他引荐。使用“添加”或“删除”按钮创建 LDAP URL 列表。
此复制机制自动配置集线器,以在复制拓扑中为所有已知主副本返回引荐。这些默认引荐假设客户机通过常规连接使用简单验证。如果要使客户机可以选择使用 SSL 绑定至主副本来实现安全连接,请以 ldaps://servername:port 的形式添加引荐(其中端口号使用的是安全端口号)。
如果已将一个或多个 LDAP URL 添加为引荐,选中表下面的复选框将会强制服务器仅发送引荐至这些 LDAP URL,而不会发送至主副本。例如,如果希望客户机始终被引荐至主服务器中的安全端口,而不是默认端口,请为这些安全端口创建一个 LDAP URL 列表并选中此复选框。如果希望指定用来处理所有更新的特定主副本或 Directory Server 代理,您也可以使用独占引荐。
- 还可以在“可选”标签中更改清理延迟。
集线器服务器必须存储副本内容更新的内部信息,清理延迟参数指定了这些服务器必须保存这些信息多久。这与提供更新的服务器中更改日志的 MaxAge 参数有关(不是其本身更改日志的 MaxAge 参数)。这两个参数的较短者决定了这两台服务器间的复制被禁用或关闭多久后,仍可正常恢复复制的时间。大多数情况下,7 天的默认值已经足够。
- 单击“确定”保存此副本的高级复制配置。
配置主副本
主副本包含数据的主副本,并在向其他所有副本发送更新前集中所有的修改。主副本记录所有的更改、检查其使用者的状态并在必要时向使用者发送更新。在多主复制中,一个主副本还会接收到来自其他主副本的更新。
配置主服务器包括以下步骤:定义包含主副本的后缀、使用复制向导启用主副本以及在必要时配置高级复制。
以下小节给出了配置主服务器的步骤。请在包含给定后缀的主副本的每台服务器中重复所有步骤。
定义主副本的后缀
在包含要复制条目的主副本服务器中选择或创建一个后缀。有关说明,请参阅“创建后缀”。
创建复制协议前,此后缀应该包含所有初始数据。这样,您可以立即初始化此数据的使用者副本。要确保正确的主副本配置操作和初始化,只能有一个主副本包含所有的初始数据,其他主副本中的后缀应该为空。
启用主副本
复制向导可以简化启用主副本的过程:
- 在 Directory Server 控制台的顶级“配置”标签中,展开“数据”节点和要作为主副本后缀的节点,然后在此后缀下选择“复制”节点。
副本状态信息将显示在右侧面板中。
- 单击“启用复制”按钮启动复制向导。
- 选中“主副本”单选按钮,然后单击“下一步”以继续。
- 输入一个“副本 ID”:选择 1 到 65534 之间的一个整数(包括 1 和 65534)。
对于给定后缀,所有主副本的“副本 ID”都必须是唯一的。同一服务器中不同后缀的主副本可以使用相同的“副本 ID”,只要它在每个副本的其他主副本中是唯一的。
- 单击“下一步”。如果未执行上述步骤,系统将提示您选择更改日志文件。默认更改日志文件显示在文本字段中。如果不希望使用默认值,请输入更改日志的文件名,或者单击“浏览”显示一个文件选择器。
如果已经启用更改日志,则向导将跳过此步骤。
- 单击“下一步”。如果未执行上述步骤,系统将提示您输入并确认默认复制管理员口令。如果是单主复制,则无需使用复制管理员,但仍然需要输入一个口令以继续操作。在每个字段中键入同一口令,然后单击“下一步”以继续。
如果默认复制管理员已经有一个已定义口令,则向导将跳过这一步。
- 更新复制配置时,复制向导将显示状态消息。完成后单击“关闭”。
现在复制状态将显示此主副本的“副本 ID”,左侧窗格中的图标将发生变化,以此反映此后缀的复制是活动的。
高级多主复制配置
默认情况下,向导将主副本配置为使用默认更改日志设置。要修改更改日志设置,请执行以下操作:
- 在 Directory Server 控制台的顶级“配置”标签中选择“数据”节点,然后在右侧面板中选择“复制”标签。
- 您可能需要刷新此标签的内容,方法为选中“启用更改日志”复选框并单击“复位”按钮。然后在复制向导中,您将会看到选择的更改日志文件。
- 可以更改此更改日志文件的名称,以及更新更改日志参数:
- 最大的更改日志记录 - 决定了可以存储的总修改量,以向使用者发送更新。默认情况下此值是无限制的。如果对副本进行了大量的改动,则您可能希望限制记录的数目以节省磁盘空间。
- 最大的更改日志存留期 - 决定了发送至使用者的更新在集线器中存储的时间。默认情况下此值是无限制的。推荐使用此参数来限制更改日志大小。
同样,复制向导使用的也是默认复制管理员。如果已经创建另一个希望使用的复制管理员条目,则需要设置高级配置。还可以使用此对话框设置修改和清理延迟的引荐。如果配置的是单主副本,您可以跳过此过程。
- 在 Directory Server 控制台的顶级“配置”标签中,展开“数据”节点和要配置后缀的节点,然后在此后缀下选择“复制”节点。
- 在右侧面板中,单击“高级”按钮以显示“高级副本设置”对话框。
- 在“绑定 DN”标签中,使用“添加”和“删除”按钮来创建一个有效复制管理员的 DN 列表。这样,供应商就可以在与副本间的协议中使用上述任意 DN。可以通过输入 DN 名称或浏览目录来添加新的 DN。
要配置通过 SSL 使用证书进行的复制,请以上述其中一个复制管理员身份输入证书条目的 DN。
- 完成后单击“确定”,或者选择“可选”标签进行高级配置。
- 在“高级副本设置”对话框的“可选”标签中,LDAP URL 列表指定了发送至此主副本的修改请求的其他引荐。初始化后,主副本将立即自动返回引荐,如“多主副本初始化后会聚”中所述。使用“添加”或“删除”按钮创建 LDAP URL 列表。
此复制机制自动配置集线器,以为复制拓扑中所有已知主副本返回引荐。这些默认引荐假设客户机通过常规连接使用简单验证。如果要使客户机可以选择使用 SSL 绑定至主副本来实现安全连接,请以 ldaps://servername:port 的形式添加引荐(其中端口号使用的是安全端口号)。
如果已将一个或多个 LDAP URL 添加为引荐,选中表下面的复选框将会强制服务器仅发送引荐至这些 LDAP URL,而不会发送至主副本。例如,如果希望客户机始终被引荐至主服务器中的安全端口,而不是默认端口,请为这些安全端口创建一个 LDAP URL 列表并选中此复选框。
- 还可以在“可选”标签中更改清理延迟。
主副本服务器必须存储副本内容更新的内部信息,清理延迟参数指定了这些服务器必须保存这些信息多长时间。这与提供更新的主副本服务器中更改日志的 MaxAge 参数有关(不是其本身更改日志的 MaxAge 参数)。这两个参数的较短者决定了这两台服务器间的复制被禁用或关闭多久后,仍可正常恢复复制的时间。大多数情况下,7 天的默认值已经足够。
- 单击“确定”保存此副本的高级复制配置。
创建复制协议
复制协议是与供应商有关的一组参数,它配置和控制发送更新至给定使用者的方式。必须在发送更新至其使用者的供应商副本中创建复制协议。必须为要更新的每个使用者创建复制协议。
按以下顺序创建复制协议:
- 多主副本集的主副本之间的协议,从包含要复制后缀原副本的主副本开始复制。
- 主副本和不是通过集线器副本复制的专门的客户之间的协议。
- 主副本和集线器副本之间的协议。
- 集线器副本及其客户之间的协议。
例如,图8-1 所示的具有 2 个主副本和 3 个专门的客户副本的多主复制拓扑中,应该按以下顺序创建八个复制协议:
- 一个主副本和其他主副本之间的协议。
- 其他主副本和第一个主副本之间的协议。
- 一个主副本和 3 个专门的客户副本中每个副本之间的协议。
- 另一个主副本和 3 个专门的客户副本中每个副本之间的协议。
要创建复制协议,请执行以下操作:
- 在 Directory Server 控制台的顶级“配置”标签中,展开“数据”节点和供应商后缀的节点,然后在此后缀下选择“复制”节点。
副本状态信息将显示在右侧面板中。
- 单击已定义复制协议的列表旁的“新建”按钮。
- 在“复制协议”对话框中,从菜单中选择一个包含使用者副本的现有服务器,或者单击“其他”按钮定义一个。
单击“其他”按钮后,输入完全符合要求的使用者服务器名及其 LDAP 端口号。如果此端口使用 SSL,请选中安全端口复选框,以启用复制更新的连接安全。
- 输入使用者服务器中复制管理员条目的 DN 和口令。默认情况下,此 DN 即为默认复制管理员的 DN。
如果选择的是有安全端口的使用者,您可以单击“选项”按钮以确定 DN 字段的含义。如果使用口令连接,供应商将通过加密 SSL 连接使用简单验证和通讯。如果使用证书连接,DN 字段是包含证书的条目 DN,不需要口令。
- 键入此协议的说明字符串(可选)。使用者服务器名和端口号以及说明字符串将显示在此主副本的复制协议列表中。
- 完成后单击“确定”。屏幕上将显示一个验证对话框,询问是否要测试刚才输入的连接参数。
- 如果要使用给定复制管理员和口令测试至给定服务器及端口号的连接,请单击“是”。如果连接失败,您仍然有可能使用此协议,可能情况为参数正确但服务器脱机。
测试完成后,协议将显示在此主副本的复制协议列表中。
以后可以编辑复制协议,以更改使用者服务器上的复制管理员 DN 和口令:
- 从列表中选择复制协议,然后单击“编辑”按钮。
- 在“复制协议”对话框中,选择“连接”标签。
- 编辑使用者服务器的复制管理员 DN 或口令。
- 编辑此协议的说明字符串(可选)。
- 单击“确定”保存新设置,向此使用者发送更新时可以立即开始使用这些新设置。
其他标签中的配置参数在“启用分式复制”和“通过 WAN 复制”中进行了说明。
- 创建了每个复制协议后,可以选择为此后缀配置分式复制,然后立即初始化该副本,如“初始化副本”中所述。
配置分式复制
默认情况下,复制会将已复制后缀中的全部条目复制到使用者副本。使用 Sun ONE Directory Server 5.2 中的新分式复制功能,可以指定复制期间要进行复制的属性子集或不对其进行复制的属性子集。分式复制是在复制协议中配置的,允许您为主副本的每个使用者副本定义属性集。这样,您可以更有效地控制要分布的数据,以及使用复制带宽和使用者资源。
例如,如果希望减小复制带宽,可以选择对通常具有较大值的属性不进行复制,如 photo、jpegPhoto 和 audio。这样,在使用者副本中这些属性不可用。再举一例,您可以选择向专门执行验证的使用者服务器仅复制 uid 和 userpassword 属性。
分式复制注意事项
启用或修改分式属性集要求您重新初始化使用者副本。因此,应该在部署前确定分式复制的需要,并在第一次初始化副本时定义属性集。
鉴于某些属性的复杂功能(如 ACI、角色和 CoS)存在相关性,复制小型的属性集时应加备小心。此外,不复制 ACI、角色或 CoS 机制的说明符或过滤器中提及的其他属性将会牺牲数据的安全性,或导致搜索返回的属性处于不同的集合中。管理“不包括的属性”列表相对于管理“要包括的属性”列表更安全,产生人为错误的可能性也比较小。
如果要复制的属性集合不允许所有要复制条目遵循此模式,则您应该在使用者服务器中关闭模式检查。复制“不遵循”条目不会导致错误,因为复制机制会避开使用者中的模式检查。不过,这样使用者将包含“不遵循”条目,应该关闭模式检查以向其客户机公开相关状态。
分式复制是在主副本与集线器副本及专门的客户副本之间的复制协议中配置的。不支持多主复制环境中两个主副本之间的分式复制配置。同时,如果若干主副本与同一副本之间有复制协议,则所有这些协议都必须复制同一属性集。
Sun ONE Directory Server 5.2 中提供的分式复制功能不具有与 Directory Server 以前版本的向后兼容性。配置分式复制协议时,主副本和使用者副本都必须在 Directory Server 5.2 实例中。
定义属性集
属性集是副本中启用分式复制时要复制的属性(不包括其他所有属性)的列表。可以在主服务器中定义任意数量的属性集,然后将这些属性集之一与复制协议关联。
- 在 Directory Server 控制台的顶级“配置”标签中选择“数据”节点,然后在右侧面板中选择“复制”标签。
- 单击“复制”标签底部的“管理已复制的属性集”按钮。可能需要向下滑动才能看到此按钮。
- 单击“添加”定义新的属性集或者从列表中选择一个现有的属性集,然后单击“编辑”修改此属性集。在显示的“属性集”对话框中,选择或取消选择“复制”列中的复选框以使该集包括或不包括相应的属性。属性名旁边的复选框表明该属性将被复制。
默认情况下,选择所有属性,建议仅取消选择特别不希望复制的那些属性。如果希望重新选择,“全部选中”按钮将重新选择所有属性。取消选择大量的属性时,目录服务器将复制除取消选择的属性以外的所有属性。如果后来模式中定义了新的属性并将这些新的属性用在了已复制的条目中,则这些新的属性将被复制,除非编辑该属性集以对其进行取消选择。
单击“全部不选”按钮将取消选择所有属性,然后可以选择要在集中包括的属性。单击“全部不选”后,定义精确的属性集时,将仅复制选定的属性。如果后来模式中定义了新的属性并将这些新的属性用在了已复制的条目中,则这些新的属性将不会被复制,除非编辑该属性集以对其进行选择。
- 为此属性集输入或修改说明字符串(可选)。这是在已定义的集列表中显示的文本和编辑将使用该集的复制协议时显示的文本。如果没有提供任何说明,则服务器将根据不包括或包括的属性来生成说明。
- 完成后单击“保存”。
启用分式复制
只能在现有复制协议中启用分式复制:
- 按照“创建复制协议”中的说明创建复制协议,或者选择以前定义的协议对其进行修改。
- 按照“禁用复制协议”中的说明禁用复制协议。必须禁用协议才能修改分式复制配置。
- 选择已禁用协议,然后单击“编辑”。在显示的“复制协议”对话框中选择“复制的属性”标签。
- 选中“仅复制一组属性”复选框。
- 从下拉列表中选择现有属性集,或者单击“新建”,按照“定义属性集”中的说明定义新的属性集。还可以单击“管理已复制属性集”查看和修改现有属性集定义。
分式复制仅允许属性集与复制协议关联。该属性集应该包含要复制属性的确切列表。
- 选择属性集后,单击“确定”。提示性消息发出警告,说明您已经配置分式复制,需要重新初始化使用者副本。单击“确定”关掉该消息。
- 单击“启用”重新激活复制协议。
- 根据要复制的属性,您应该考虑在使用者服务器中禁用模式检查。
- 如果其他主副本与此副本之间也有复制协议,必须在所有这些主副本中重复此步骤,以启用具有相同属性集的分式复制。
- 现在必须初始化使用者副本,或者如果已复制此副本则对其进行重新初始化。请参阅下面的“初始化副本”。
初始化副本
创建复制协议后,必须在复制实际开始前初始化使用者副本。初始化期间,将数据从供应商副本物理复制到使用者副本。
某些错误条件或配置更改要求您重新初始化副本。重新初始化时,使用者副本中已复制后缀的内容将被删除,并被主副本中后缀的内容替换。这样可以确保副本保持同步,复制更新可以重新开始。这里说明的所有初始化方法还将自动生成使用者副本的索引,这样使用者就准备好以最佳状态响应客户机的读请求。
何时进行初始化
必须在配置这两个副本后且在可以进行复制前进行副本初始化。后缀中的数据已完全复制到使用者后,供应商可以开始重新对使用者执行更新操作。
在正常操作情况下,绝对不能对使用者副本再次进行初始化。不过,不论何种原因从备份中恢复单主副本中的数据时,您都应该重新初始化所有更新的副本。使用多主复制的情况下,如果使用者已由其他主副本更新,则可能不需要对其进行重新初始化。
可以使用控制台联机初始化副本,也可以使用命令行手动初始化副本。初始化数量较少的使用者,使用控制台进行联机初始化会比较方便。可以从复制协议直接联机初始化副本。不过,由于是按顺序对每个副本进行初始化,所以此方法不适用于初始化大量副本。从一个 LDIF 文件中同时初始化大量使用者副本时,使用命令行手动初始化是更有效的方法。
最后,有经验的管理员还可以使用 Directory Server 5.2 的新二进制复制功能复制主副本或使用者副本。对此功能的某些限制仅能使具有大量数据库文件的副本(例如包含上百万个条目的副本)具有可操作性并能节省时间。
在多主复制中初始化副本
如果进行多主复制,应该按以下顺序初始化副本:
- 确保一个主副本中包含要复制数据的完整集合。使用此主副本在其他每个主副本中初始化副本。
- 从主副本中或者从任一主副本的 LDIF 文件中初始化使用者副本。
在级联复制中初始化副本
如果进行级联复制,请注意应该始终按以下顺序初始化副本:
- 如果还进行多主复制,请确保一个主副本中包含有要复制数据的完整集合。使用此主副本在其他每个主副本中初始化副本。
- 在第一级集线器副本的主副本中初始化第一级集线器副本。
- 如果有几个集线器副本级别,对于每一级要初始化的副本,在它的已初始化的前一级副本中对其进行初始化。
- 在集线器副本的最后一个级别,初始化专门的客户副本。
多主副本初始化后会聚
如果进行的是多主复制,给定主副本进行初始化时,其他主副本可能会处理更改操作。因此,初始化完成后,新的主副本必须还接收初始化数据中不包括的新更新。由于初始化可能需要很长时间,所以挂起的更新数量可能也会很庞大。
为了允许会聚这些挂起的更新,初始化后,新初始化的主副本会被设置为只能读取客户机操作。这一点对任何类型的初始化都适用,不论是通过命令行 LDIF 文件联机使用控制台进行初始化,或者是使用备份执行二进制复制进行初始化。它是 Sun ONE Directory Server 5.2 中新增的行为。
因此,初始化后,多主配置中的主副本将处理复制更新并允许读操作,但它将从客户机返回所有写操作引荐。可以按“高级多主复制配置”中的说明定义这些引荐。下列条件下主副本会回复到读-写模式:
- 将 ds5BeginReplicaAcceptUpdates 配置属性设置为 start 以明确允许更新操作。启用更新前,您应该验证此新主副本是否已与其他主副本会聚。可以使用 Directory Server 控制台中的复制配置面板或者通过命令行完成此过程(见下面的过程)。
手动干涉是在已初始化副本中启用更新的建议方法,因为这样您可以在允许更新前验证此新主副本是否与其他主副本完全同步。
- 如果先前已经设置了 ds5referralDelayAfterInit 属性,则主副本在指定的延迟时间后将自动切换到正常的读-写模式。可以为服务器中的每个主副本单独设置此属性。
如果选择设置此属性,则您应该确定一个时间始终充裕的延迟,以允许主副本在初始化后与其他主副本会聚。此延迟取决于预期初始化的大小和长度,以及在其他主副本中同时发生更改的几率。初始化后,还在复制更改时就接收更新操作的主副本可能会导致异常错误。如果遇到复制错误,请参阅 Sun ONE Directory Server 参考手册 中的附录 A“错误代码”。
注意 由于增加了此新行为,使用主副本发送引荐时,希望执行写操作的客户机可能会达到已配置的跳跃限制。可能需要增加客户机的跳跃限制配置,这样它们就可以到达可用的主副本。如果已初始化或重新初始化了所有的主副本,所有的写操作都会失败,这是因为将没有副本接收客户机更新。
任何情况下,您都应该密切监控初始化的主副本,并相应地设置引荐属性以使服务器响应最大化。
通过控制台开始接收更新
执行下列步骤,以明确允许多主副本初始化后可以进行更新操作:
- 在 Directory Server 控制台的顶级“配置”标签中,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
在右侧面板中,控制台将显示一个消息,指示副本已经初始化,目前正返回更新操作的引荐。如果此消息指示已启用自动引荐延迟,您仍然可以按照此步骤覆盖延迟。
- 使用 insync 工具确保副本已与其他所有主副本会聚。如果所有服务器中修改之间的延迟为零或者副本从未有任何要复制的更改,则副本处于同步状态(-1 延迟)。详细信息,请参阅 Sun ONE Directory Server 参考手册 的第 1 章中的“insync”。
- 单击消息右侧的按钮立即开始接收更新操作。
通过命令行开始接收更新
通过检查会聚并明确允许更新操作从而自动处理初始化多主副本的脚本中可能会使用到下列命令:
- 使用 insync 工具确保副本已与其他所有主副本会聚。如果所有服务器中修改之间的延迟为零或者副本从未有任何要复制的更改,则副本处于同步状态(-1 延迟)。详细信息,请参阅 Sun ONE Directory Server 参考手册 的第 1 章中的“insync”。
- 使用下列命令来修改 the ds5BeginReplicaAcceptUpdates 配置属性:
% ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
dn:cn=replica, cn=suffixName, cn=mapping tree, cn=config
changetype:modify
add:ds5BeginReplicaAcceptUpdates
ds5BeginReplicaAcceptUpdates:start
^D初始化副本时,将自动删除 ds5BeginReplicaAcceptUpdates,这样初始化后更新操作会被再次拒绝。
设置自动引荐延迟
ds5referralDelayAfterInit 配置属性决定了初始化后多长时间(以秒计)副本将返回引荐。经历此延迟时间后,副本将自动开始处理客户机的更新操作。此属性对于每个副本都是特定的,应该根据“多主副本初始化后会聚”中说明的标准对此值进行设置。
如果刚刚对某副本进行了初始化,并且尚不能接收更新,则更改此属性的值将会动态地影响相应的副本。您可以在延迟过程中修改此值以增加或减小延迟。如果此延迟已经到期并且副本正在接收更新,设置此值将没有任何效果。
此属性的默认值是 -1,表示副本将会无限期地拒绝更新操作。在这种情况下,可以定义延迟以在延迟到期时自动允许更新,从初始化后计算此时间。设置已经到期的延迟将会导致副本立即开始接收更新。
- 使用以下命令设置 ds5referralDelayAfterInit 属性:
% ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
dn:cn=replica, cn=suffixName, cn=mapping tree, cn=config
changetype:modify
replace:ds5referralDelayAfterInit
ds5referralDelayAfterInit:seconds
^D使用控制台初始化副本
使用控制台进行联机副本初始化是初始化或重新初始化使用者副本的最简单的方法。不过,如果正在初始化大量条目(超过 1-2 百万),则此过程可能非常耗时,这种情况下您可能会发现使用命令行手动进行使用者副本初始化是更有效的方法(详细信息,请参阅“从命令行初始化副本”)。
注意 使用控制台初始化使用者副本时,在初始化过程完成前,此后缀上的所有操作(包括搜索)都将被引荐回主副本服务器。
使用 Directory Server 控制台时,初始化配置有分式复制的副本将简单明了。初始化期间,仅将选定的属性发送至使用者。
执行联机副本初始化
要使用控制台进行初始化或重新初始化副本,请执行以下操作:
- 在 Directory Server 控制台的顶级“配置”标签中,展开“数据”节点和主副本后缀的节点,然后在此后缀下选择“复制”节点。
副本状态信息将显示在右侧面板中。
- 在已定义协议的列表中,选择要进行初始化的使用者副本的相应复制协议,然后单击“操作”>“初始化远程副本”。
将出现一个确认信息,提示使用者副本中存储的所有信息都将被删除。
- 在验证框中单击“是”。
联机使用者副本初始化将立即开始。复制协议的图标将显示一个红色的标记,指示初始化过程的状态。
- 单击“刷新”>“立即刷新”或“刷新”>“连续刷新”跟踪使用者副本初始化的状态。
突出显示的协议的所有消息都将显示在此列表下的文本框中。
有关监控复制状态和初始化状态的详细信息,请参阅“监控复制状态”。
从命令行初始化副本
对于需复制大量条目的部署,使用命令行手动进行副本初始化是使用者副本初始化的最快方法。出于性能方面的考虑,如果不适合进行联机处理时,我们建议您使用手动处理。不过,手动初始化使用者副本的过程比联机初始化过程要复杂得多。
要手动初始化或重新初始化副本,您首先需要将后缀数据的原副本导出至 LDIF 文件。如果正在初始化分式副本,则您应该过滤此文件以仅保留已复制属性。然后将该文件传送到所有使用者服务器,并导入它。在多主复制部署中,可以使用从原主副本中导出的 LDIF 文件对其他主副本和任意使用者副本进行初始化。在级联复制环境中,可以使用同一个文件来初始化集线器副本及其使用者副本。
不论何种情况,都必须从已配置主副本中导出的 LDIF 文件开始初始化。不能使用任意的 LDIF 来初始化所有副本,因为它不包含复制数据。必须首先将 LDIF 文件导入至主副本,然后按照下列步骤将其导出。
导出副本至 LDIF
可以使用 db2ldif -r 或 db2ldif.pl -r 命令将副本内容存储在 LDIF 文件中。详细信息,请参阅“从命令行导出到 LDIF”。必须使用 -r 选项利用这些命令导出副本。
下面的示例会将整个 dc=example,dc=com 副本导出至名为 example_master.ldif 的文件:
然后,如果必要可以过滤 LDIF 文件,并将其传送到使用者主机,从而对使用者副本进行初始化。
过滤用于分式复制的 LDIF 文件
如果已经配置分式复制,在将导出的 LDIF 文件复制至使用者服务器前,应该过滤出所有不使用的属性。Directory Server 提供 fildif 工具用于完成此过程。此工具过滤指定的 LDIF 文件,以仅保留复制协议中定义的属性集所允许的属性。
此工具将读取服务器配置以确定属性集定义。要读取配置文件,fildif 工具必须作为 root 运行。例如,以下命令将过滤在上个示例中从 dc=example,dc=com 后缀中导出的文件:
# CAMUS=/var/Sun/mps/slapd-camus
# /var/Sun/mps/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\鈊c=com, cn=mapping tree, cn=config"-i 和 -o 分别为输入和输出文件。-c 选项是包含复制协议和属性集定义的配置文件。dse.ldif 文件是服务器存储 cn=config 条目内容(包括复制协议和属性集)的位置。
-b 选项是定义分式复制的复制协议的 DN。通过以目录管理员身份在 Directory Server 控制台中浏览 cn=config 后缀,可以找到此条目。在后缀的 cn=replica 条目下选择条目,并使用“编辑”>“复制 DN”菜单项将此 DN 复制到剪贴板,以备输入命令时使用。
Sun ONE Directory Server 参考手册 的第 1 章“LDIF 命令行公用程序”中提供了 fildif 工具的完整命令行语法。
然后,您可以使用 fildif 生成的 filtered.ldif 文件初始化此复制协议中的使用者副本。按照下节中的说明将此文件传送至使用者服务器,并将其导入。
将 LDIF 文件导入至使用者副本
使用 Directory Server 控制台中的导入功能,可以将包含主副本内容的 LDIF 文件导入至使用者副本,或者也可以使用 ldif2db 命令或 ldif2db.pl 脚本(在 Solaris 软件包平台中为 directoryserver ldif2db 或 directoryserver ldif2db-task)导入。进行所有的导入操作时,这些脚本需要目录管理员的绑定 DN 和口令,以执行导入。“从命令行导入 LDIF”对这两种导入方法进行了说明。
下面的示例显示了如何导入 LDIF 文件来初始化 dc=example,dc=com 使用者副本:
使用 ldif2db.pl 脚本不需要预先停止服务器。详细信息,请参阅 Sun ONE Directory Server 参考手册 的第 2 章中的“ldif2db.pl”。
使用二进制复制初始化副本
Directory Server 5.2 的新二进制复制功能可以复制整个服务器,方法是使用一台服务器中的二进制备份文件在另一台服务器中恢复为相同的目录内容。此高级功能与目录服务器的数据库文件进行交互,且只应该由具有经验的管理员使用。
二进制复制限制
因为二进制复制功能会将数据库文件从一台计算机移动至另一台计算,所以此机制受到以下严格限制:
- 这两台计算机都必须使用相同的硬件和操作系统,包括所有的 Service Pack 或增补程序。
- 这两台计算机安装的 Directory Server 版本必须相同,包括二进制格式(32 位或 64 位)、Service Pack 和增补程序级别。
- 这两台服务器必须有包括相同后缀的相同目录树。所有后缀的数据库文件必须一起复制,不能复制单个后缀。
- 每个后缀在两台服务器中都必须有相同的已配置索引,包括 VLV(虚拟列表视图)索引。后缀的数据库必须有相同的名称。
- 要复制的 Directory Server 一定不能保留 o=NetscapeRoot 后缀,这表示它不能是 Sun ONE Administration Server 的配置目录。
- 每台服务器都必须有配置为副本的相同后缀,副本在这两台服务器中必须具有相同的角色(主副本、集线器副本或使用者副本)。如果配置的是分式复制,则必须在所有的主副本服务器中对其进行相同地配置。
- 两台服务器中都不能使用属性加密。
- 如果启用属性值唯一性插件,则它们在两台服务器中必须具有相同的配置,并且必须在新副本中对其进行重新配置,如下面步骤中所述。
如果符合上述条件,则可以从另一个主服务器的二进制复制初始化或重新初始化主副本,或者从另一个使用者服务器的二进制复制初始化或重新初始化使用者副本。下面两个过程介绍了执行二进制复制的可选方法,一个不需要停止服务器,另一个使用的磁盘空间最小。
在不停止服务器的情况下进行二进制复制
建议使用下面的过程执行二进制复制,因为它使用标准备份功能来创建服务器的数据库文件副本。执行标准备份可以确保所有的数据库文件在无需停止服务器的情况下处于相关状态。
不过,此过程有一定的限制,您需要加以考虑。备份操作和恢复操作在同一台计算机中创建数据库文件的副本,因此每台计算机中这些文件所需磁盘空间将加倍。另外,如果目录包含多至 GB 字节的数据,这些文件的实际复制操作将花费大量的时间。如果您的磁盘空间有限或者数据库文件特别大,请参阅“使用最小磁盘空间进行二进制复制”。
- 在新副本的目标计算机中安装 Directory Server,如果必要请创建服务器的新实例,然后按照“二进制复制限制”中的说明对其进行配置。
- 在涉及此副本的复制拓扑中创建所有复制协议。这包括供应商与此副本之间的协议,如果不是专门的客户副本,还包括此副本与其使用者副本之间的协议。
- 选择一个与要初始化的副本类型相同并且已完全配置和初始化的后缀(可能为主副本、集线器副本或使用者副本),并根据“使用控制台备份服务器”中的步骤对此后缀执行标准备份。
- 例如,可以使用 ftp 命令,将备份目录中的所有文件复制或传送到目标计算机的目录中。
- 按照“从备份还原数据”中的说明将文件加载至目标服务器。
- 如果在多主复制方案中已经初始化了一个新的主副本,请按照“多主副本初始化后会聚”中的步骤进行操作,以确保新副本可以开始接收客户机的更新操作。
使用最小磁盘空间进行二进制复制
下面的过程使用的磁盘空间以及耗费的时间都较少,因为它不备份数据库文件。不过,它要求您停止被复制的服务器,以确保数据库文件处于相关状态。
警告
千万不要将此过程用于重新初始化已参与多主复制方案的主副本。只能用于重新初始化使用者服务器或者初始化新的主副本服务器。要重新初始化现有主副本,请使用联机初始化、导入 LDIF 文件或者执行“在不停止服务器的情况下进行二进制复制”中说明的步骤。
- 在新副本的目标计算机中安装 Directory Server,必要时创建服务器的新实例,然后按照“二进制复制限制”中的说明对其进行配置。
- 在涉及此副本的复制拓扑中创建所有复制协议。包括供应商与此副本之间的协议,如果不是专门的客户副本,还包括此副本与其使用者副本之间的协议。
- 按照“启动和停止 Directory Server”中的说明停止要被初始化或重新初始化的目标服务器。
- 选择一个与要初始化的副本类型相同并且已完全配置和初始化的副本(可能为主副本、集线器副本或使用者副本),并停止服务器。如果在多主配置中复制主副本,则您应该确保在停止服务器前,已使用来自其他主副本的最近更改对其进行了完全更新。
- 从原副本计算机复制或传送所有数据库文件(包括事务日志)至目标计算机,如使用 ftp 命令。除非文件已被重新定位,否则数据库文件和事务日志将位于 ServerRoot/slapd-serverID/db 目录下。
如果初始化主副本或集线器副本,您还必须复制更改日志中的所有文件,默认情况下这些文件位于 ServerRoot/slapd-serverID/changelog 下。
- 重新启动源服务器和目标服务器。
启用引荐完整性插件
如果要使用引荐完整性插件,必须在所有主副本服务器中启用该插件。不需要在集线器服务器或使用者服务器中启用。请参阅“将引荐完整性与复制一起使用”。
通过 SSL 复制
可以对复制所涉及到的 Directory Server 进行配置,这样所有复制操作都可以通过 SSL 连接进行。要执行此操作,请完成以下步骤:
- 将供应商和使用者服务器配置为都可以使用 SSL。
详细信息,请参阅第 11 章“实现安全性”。
注意 如果供应商服务器证书为以下的情况,通过 SSL 复制将会失败:
- 如果没有为使用者服务器中的后缀配置复制,请按照“启用使用者副本”中的说明启用此复制。
- 按照“高级使用者配置”中说明的步骤,以另一个复制管理员的身份定义使用者服务器中的证书条目 DN。
- 如果没有为供应商服务器中的后缀配置复制,请按照“启用集线器副本”或“启用主副本”中的说明启用此复制。
- 在供应商服务器,创建一个新复制协议,以将更新发送至位于安全 SSL 端口的使用者服务器。详细说明,请按照“创建复制协议”"中的步骤执行操作。在使用者服务器上指定一个安全端口,选择一个 SSL 选项(确定使用口令还是证书)。为所选的 SSL 选项输入 DN(复制管理员或证书)。
配置复制协议后,供应商将会通过 SSL 向使用者副本发送所有复制更新消息,如果您选择该项,则将使用证书。如果使用为 SSL 配置的协议通过控制台执行客户初始化,则客户初始化还会使用安全连接。
通过 WAN 复制
Sun ONE Directory Server 5.2 提供执行任意形式复制的能力,包括在通过广域网 (WAN) 连接的计算机之间进行多主复制 (MMR)。复制机制的内部改善允许供应商服务器以较长等待时间和较低带宽通过网络对具有合理延迟的使用者服务器进行初始化和更新。
注意 实际复制延迟和更新性能与多种因素有关,包括但不仅限于下列内容:修改率、条目大小、服务器硬件、平均等待时间和平均带宽。如果您的系统环境中有与复制相关的问题,请与 Sun 专业服务代表联系。
复制机制的内部参数默认情况下处于适用于 WAN 的最佳状态。不过,如果由于上面提及的因素而导致复制速度慢,您可能会根据经验调整窗口大小和组大小这两个参数。您还可以计划复制以避开峰值网络时间,从而改善整个网络的使用情况。最后,Solaris 和 Linux 平台上的 Directory Server 支持复制数据的压缩以优化带宽使用。
配置网络参数
以下两个参数确定了复制机制如何对条目进行分组,以通过网络更有效地发送这些条目。它们影响供应商和使用者交换复制更新消息和确认的方式。
- 窗口大小(默认值为 10) - 表示不必通过使用者及时确认即可发送的最大更新消息数。在 WAN 环境中,与发送了每条消息后等待确认相比较,一次发送许多消息的方式效率较高。
- 组大小(默认值为 1) - 表示可捆绑成单个更新消息的最大数据修改数。根据数据的大小和网络的属性,效率可能随发送消息的增多而提高,因此具有更大的组大小。
大多数情况下,默认值可以处于工作最佳状态。不过,如果目录条目过大或过小,或者如果要复制的修改率很大,您可能希望通过 WAN 修改这些参数,以检测其对复制性能的影响。
这两个网络参数在每个复制协议中都是可配置的。这样,您可以根据每个使用者的特定网络状况调整复制性能。
不需要中断复制来修改窗口大小和组大小参数:
- 在 Directory Server 控制台中选择“配置”标签,然后展开“数据”节点和已复制后缀的节点。
- 在此后缀下选择“复制”节点,在右侧窗格中选择要配置的复制协议,然后单击“编辑”。
- 在“复制协议”对话框中选择“网络”标签,输入窗口大小的新值(范围为 1 到 1000)和组大小的新值(范围为 1 到 100)。组大小必须小于或等于窗口大小。
- 单击“确定”保存新值,然后关闭“复制协议”对话框。
新参数值将立即生效,下一个复制更新发送至相应的使用者。
计划复制活动
如果副本之间紧密同步不是非常重要,则通过 WAN 复制数据的一种方法就是在低网络使用率期间计划更新。网络可用性越高,执行更新就越快,如果已经在高使用率下运行,则复制消息将不会进一步加大网络拥塞。
通过使用者复制协议,您可以计划以天或周为周期为每个使用者独立地进行更新:
- 在 Directory Server 控制台的顶级“配置”标签中,展开“数据”节点和已复制后缀的节点。
- 在此后缀下选择“复制”节点,在右侧窗格中选择要配置的复制协议,然后单击“编辑”。
- 选择“复制协议”对话框的“计划”标签,然后选择周调度旁的单选按钮。
- 定义计划:
- 对于每周更新,选中要发生复制日期(一天或多天)旁的复选框。如果希望在这些天数内进一步限制复制,还可以选择输入时间范围(使用 24 小时制)。
- 对于每日更新,单击“全部”以每天都进行复制,并输入应该发生复制的时间范围(使用 24 小时制)。
请注意时间范围不能跨越午夜。
- 单击“确定”保存新值,然后关闭“复制协议”对话框。
新计划将立即生效,将导致相应使用者的下一次复制更新被延迟到计划第一次允许其进行更新时。
数据压缩
要减小复制使用的带宽,可以配置复制压缩更新使用者副本时发送的数据。复制机制使用 Zlib 压缩库,该库只可在受支持的 Solaris 和 Linux 平台上使用。供应商和使用者必须运行在 Solaris 或 Linux 平台上才能启用压缩。
只有通过设置主服务器中的复制协议条目上的 ds5ReplicaTransportCompressionLevel 属性,复制压缩的配置才可用。该属性的值可能是下列之一:
0 - 不执行压缩。默认情况下,未指定
ds5ReplicaTransportCompressionLevel 属性时会发生该行为。1 - 使用 Zlib 库的默认压缩级别。
2 - 使用 Zlib 库的最佳大小压缩级别。
3 - 使用 Zlib 库的最佳速度压缩级别。
您应当根据经验测试和选择压缩级别,以便在 WAN 环境中获得最佳效果,从而实现所期望的复制使用。不应在网络延迟无意义的 LAN(局域网)中设置此参数,因为压缩和解压缩计算将减慢复制速度。
例如,将复制更新发送到 east.example.com 上的使用者时要使用最快的压缩速度,请使用下面的 ldapmodify 命令:
ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
dn:cn=east.example.com:389,cn=replica,cn="suffixDN",
cn=mapping tree,cn=config
changetype:modify
add:ds5ReplicaTransportCompressionLevel
ds5ReplicaTransportCompressionLevel: 3
^D修改复制拓扑
本节包含管理现有复制拓扑的步骤,如编辑或删除复制协议,升级、降级或禁用副本,强制对使用者更新,以及管理更改日志。
管理复制协议
在主副本后缀的复制面板中,可以管理复制协议,以更改协议中的验证信息、中断对特定使用者的复制或者从拓扑中删除使用者副本。
更改复制管理员
可以编辑复制协议来更改用于绑定至使用者服务器的复制管理员身份。为避免中断复制,应该在修改复制协议前定义新复制管理员条目或者使用者证书条目。不过,如果由于绑定失败造成复制的中断,在复制还原设置的限制范围内,复制机制会在您更正错误时自动发送所有必要的更新(请参阅“高级使用者配置”)。
要更改用于验证使用者的复制管理员,请执行以下操作:
- 在 Directory Server 控制台的顶级“配置”标签上,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
- 在右侧面板中,选择要修改的复制协议,然后单击“编辑”。
- 在“复制协议”对话框中,选择“连接”标签。
此状态行会指示使用者服务器的主机名和端口号。
- 修改 DN 和口令字段,以包含另一个复制管理员条目的 DN 和口令或者使用者服务器中证书条目的 DN。
- 如果此复制协议通过安全端口使用 SSL,您还可以单击“选项”按钮来选择安全验证的类型。如果使用口令连接,供应商将通过加密 SSL 连接使用给定 DN 进行简单验证。如果使用证书连接,DN 字段是证书条目的 DN,不需要口令。
不能将现有复制协议从非安全验证切换到安全验证,反之亦然。要启用具有不同安全设置的复制,必须创建另一个复制协议。
- 单击“确定”以保存更改。
对复制协议进行复制
对复制协议进行复制是一种简单方法,用于在大型复制拓扑中配置供应商副本的多个使用者副本:
- 在 Directory Server 控制台的顶级“配置”标签上,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
- 在复制协议列表中,选择一个要复制的协议。如果要创建一个具有到使用者的安全连接的新协议,则必须选择一个也使用安全端口的现有协议。如果要创建一个新的非安全协议,则必须选择一个现有的非安全协议。
单击“编辑”并浏览“复制协议”对话框的标签,验证此协议的配置。以下小节将说明这些标签的配置:
- “更改复制管理员”对“连接”标签进行了说明。
- “通过 WAN 复制”对“计划”和“网络”标签进行了说明。
- “配置分式复制”对“复制属性”标签进行了说明。
- 保持选中此复制协议,然后单击“复制”按钮。
- 从列表中选择新使用者的主机名或端口号,或者单击“添加主机”按钮使用其他的主机和端口。此列表和“添加主机”对话框将仅允许您选择与要复制的使用者协议具有相同安全类型的使用者。
- 确保选中列表中的一个主机名,单击“确定”为该使用者服务器创建一个新的复制协议。
- 新协议将复制现有协议的所有配置信息。这就是说您必须具有在两个服务器中定义的完全相同的、并且使用相同口令的复制管理员条目。如果要修改新协议的配置(如更改复制管理员 DN),请从列表中选择该协议,然后单击“编辑”。
禁用复制协议
禁用复制协议时,主副本将停止向指定使用者副本发送更新。到该服务器的复制也将停止,但协议中的所有设置都将保留。以后可以通过重新启用协议来恢复复制。有关在中断后恢复复制机制的信息,请参阅下面的“启用复制协议”。
要禁用复制协议,请执行以下操作:
- 在 Directory Server 控制台的顶级“配置”标签上,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
- 在右侧面板中,选择要禁用的复制协议。
- 在协议列表下的框中选择“操作”>“禁用协议”。
- 单击“是”确认要禁用复制协议。
列表中此协议的图标会将显示状态更改为已禁用。
启用复制协议
启用复制协议将恢复与指定使用者之间的复制。不过,如果复制的中断时间超过了复制还原设置允许的时间,并且使用者不能由另一供应商更新,则您必须重新初始化使用者。复制还原设置是供应商的更改日志和使用者清理延迟的最大大小和存留期(请参阅“高级使用者配置”)。
如果中断时间较短,并且复制可以恢复,则重新启用协议后主副本将自动更新使用者。
要启用复制协议,请执行以下操作:
- 在 Directory Server 控制台的顶级“配置”标签上,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
- 在右侧面板中,选择要启用的复制协议。
- 在协议列表下的框中选择“启用”按钮。
- 必要时重新初始化使用者副本。
删除复制协议
删除复制协议将会停止向相应使用者进行复制,并删除此协议的所有配置信息。如果以后要恢复复制,请禁用协议,如“禁用复制协议”中所述。
要删除复制协议,请执行以下操作:
- 在 Directory Server 控制台的顶级“配置”标签上,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
- 在右侧面板中,选择要删除的复制协议。
- 在协议列表的右侧单击“删除”按钮。
- 单击“是”确认要删除此复制协议。
升级或降级副本
升级或降级副本将会更改其在复制拓扑中的角色。专门的客户副本可以升级为集线器副本,集线器副本可以升级为主副本。主副本可以降级为集线器副本,集线器副本也可以降级为专门的客户副本。不过,主副本不能直接降级为使用者副本,同样使用者副本也不能直接升级为主副本。
多主复制机制中允许的升级和降级使得拓扑非常灵活。先前由某个使用者副本使用的站点可能会增大,并需要一个具有若干副本的集线器副本来处理负载。如果负载包括对副本内容的许多修改,则集线器副本可以成为一个主副本,以更快地进行本地更改,然后可以将这些本地更改复制到其他站点中的其他主副本。
要升级或降级一个副本,请执行以下操作:
- 在 Directory Server 控制台的顶级“配置”标签上,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
- 在右侧面板中,选择“更改”>“对副本进行升级-降级”菜单项。
- 复制向导仅允许您选择一个许可的新角色,然后按步骤完成配置过程以配置新的副本角色。您应该知道可能会产生以下后果:
- 当将主副本降级为集线器副本时,副本将变为只读,并被配置为可以向其他主副本发送引荐。新集线器副本将保留它的所有使用者副本,不论是集线器副本还是专门的客户副本。
- 将单个主副本降级为集线器副本将会创建一个没有主副本的拓扑。如果您要定义新主副本,此向导会允许您完成此操作。不过,最好将新主副本添加为多主副本,并在降级其他副本之前允许对其进行初始化。
- 当将集线器副本降级为使用者副本时,将删除所有的复制协议。如果其他集线器副本或主副本尚未对集线器的使用者副本进行更新,则它们将不再被更新。您应该在其他集线器副本或主副本中创建新协议,以更新这些使用者副本。
- 将使用者副本升级为集线器副本时,就会启用其更改日志,您可以定义它与使用者副本之间的新协议。
- 将集线器副本升级为主副本时,此副本将接受修改请求,您可以定义此副本与其他主副本、集线器副本或专门的客户副本之间的新协议。
禁用副本
禁用副本将会从复制拓扑中删除此副本。它将不再被更新或发送更新,这取决于它的角色是主副本、集线器副本还是使用者副本。禁用供应商将会删除所有复制协议,如果要再次启用此副本,则必须重新创建这些协议。
要禁用副本,请执行以下操作:
- 在 Directory Server 控制台的顶级“配置”标签上,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
- 在右侧面板中,选择“更改”>“禁用复制”菜单项。
- 在验证对话框中单击“是”。
- 复位此后缀的写入权限和引荐(可选)。这些设置将与禁用副本时的设置一样,例如,已禁用的使用者副本仍会向它的前一个主副本发送修改请求。
要修改写入权限和引荐,请在“配置”标签中选择此后缀的节点,并在右侧面板的“设置”选项中进行修改。详细信息,请参阅“设置访问权限和引荐”。
移动更改日志
更改日志是对指定供应商副本的全部修改的内部记录,服务器使用更改日志来对其他副本重复进行这些修改。更改日志的内容由服务器自动进行管理,即使重新启动服务器后也会通过多主更新对其进行更新。
在 Directory Server 的早期版本中,可以通过 LDAP 访问更改日志。不过,现在更倾向于在服务器内部使用此日志。如果您有需要读取更改日志的应用程序,请使用 retro change log 插件获取向后兼容性。详细信息,请参阅“使用 Retro Change Log 插件”。
只有在需要将更改日志文件移动到另一个位置时,管理员才应该修改更改日志,例如存储此文件的磁盘已满。
警告
禁用更改日志或将其移动至一个新位置时,更改日志将被重新初始化。在上述任一情况下,您都需要重新初始化此服务器中的所有使用者副本。
您必须使用 Directory Server 控制台移动更改日志,千万不要使用操作系统 rename 或 mv 命令移动:
- 在 Directory Server 控制台的顶级“配置”标签上选择“数据”节点,然后在右侧面板中选择“复制”标签。
- 在文本字段中输入一个新位置。从现在起,此内容将是要存储更改日志的新路径和目录名称。例如,将更改日志从默认位置 ServerRoot/slapd-serverID/changelogdb 移动至 ServerRoot/slapd-serverID/newchangelog。
现有更改日志将从原位置删除,新的更改日志将保留在新位置中。
- 在“复制”标签中单击“保存”。
- 重新启动 Directory Server。
- 按照“初始化副本”中的说明重新启动使用者副本。
保持副本同步
停止复制涉及的目录服务器以进行常规维护后,当目录服务器回到联机状态时,您需要确保该服务器已通过复制立即获得更新。如果是多主副本环境中的主副本,则需要多主集合中的另一个主副本对目录信息进行更新。如果是其他情况,集线器副本或专门的客户副本脱机进行维护后,它们回到联机状态时,需要由主副本对这些副本进行更新。
本节介绍复制重试算法,以及如何在无需等待下次重试的情况下强制发生复制更新。
注意 只有已经设置复制并且已经初始化使用者副本时,才能使用本节中说明的步骤。
复制重试算法
供应商尝试向使用者副本中复制不成功时,它将以递增的时间间隔定期重试。重试模式如下所示:20、40、80,然后 160 秒。然后供应商将每 160 秒重试一次。
请注意,即使您已将复制协议配置为始终保持供应商副本和使用者副本同步,但要使脱机超过五分钟的副本立即回到最新的状态,仅这样设置还不够。
要确保目录信息在服务器回到联机状态时立即处于同步状态,您可以使用 Directory Server 控制台或可定制的脚本。
通过控制台强制复制更新
要确保在使用者或多主复制配置中的主副本经过一定时间后回到联机状态时,立即发送复制更新,您可以对保留目录数据最新版本的供应商执行这些步骤:
- 在 Directory Server 控制台顶级“配置”标签中,展开“数据”节点和主副本的后缀节点,然后在此后缀下选择“复制”节点。
副本状态信息将显示在右侧面板中。
- 在与要更新的使用者副本相应的列表中选择复制协议,然后单击“操作”>“现在发送更新”。
这样,将开始向保留需要被更新信息的副本中进行复制。
通过命令行强制复制更新
在需要更新的使用者副本中,可以运行一个脚本以便提示供应商立即发送复制更新。代码示例8-1 中显示了此脚本。
您可以复制此示例,并立即指定一个有意义的名称,如 replicate_now.sh。必须为代码示例8-1 中列出的变量提供实际值。
注意 管理员必须运行此脚本,因为不能将其配置为在脱机服务器回到联机状态后可以自动运行。
#!/bin/sh
SUP_HOST=supplier_hostname
SUP_PORT=supplier_portnumber
SUP_MGRDN=supplier_directoryManager
SUP_MGRPW=supplier_directoryManager_passwd
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.$$
"> 代码示例8-1    Replicate_Now 脚本示例
#!/bin/sh
SUP_HOST=supplier_hostname
SUP_PORT=supplier_portnumber
SUP_MGRDN=supplier_directoryManager
SUP_MGRPW=supplier_directoryManager_passwd
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 客户机以使用安全性”。
使用早期版本进行复制
本节介绍如何使用 Sun ONE Directory Server 的早期版本配置复制。
Sun ONE Directory Server 5.1 和 5.2 版本几乎与所有复制配置完全兼容,但是以下情况例外:
- 与分式复制配置不兼容,一定不要在 Directory Server 5.2 主副本和 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,也不会将其返回至已降级的主副本。
Sun ONE Directory Server 5.2 在下列情况下可能会与 Directory Server 4.x 版本的复制方案有关:
- Directory Server 5.2 已配置为主副本,但仅作为使用者副本向 Directory Server 4.x 供应商复制。
- 使用者副本不能同时作为旧版 4.x 供应商和 5.2 供应商的使用者。不过,5.2 服务器可能有不同的副本,其中有的由旧版 Directory Server 提供,其他的由 5.2 Directory Server 提供。
- 已被配置为旧版 4.x 供应商的使用者的 Directory Server 5.2 副本,在此拓扑中不能作为此后缀的集线器副本。
能够将 Directory Server 5.2 作为旧版 Directory Server 的使用者的主要好处就是可以简化已复制环境的移植。有关移植已复制环境要执行的步骤的详细信息,请参阅 Sun ONE Directory Server 安装和调整指南 中的第 2 章“从以前版本升级”。
将 Directory Server 5.2 配置为 Directory Server 4.x 的使用者
如果要将 Directory Server 5.2 作为 Directory Server 4.x 版本的使用者来使用,必须按照下面的步骤对其进行配置:
- 按照“启用主副本”中的说明将此副本启用为主副本。即使此副本是 4.x 供应商的使用者,也必须将其配置为主副本。
- 在 Directory Server 控制台的顶级“配置”标签上,展开“数据”节点和已复制后缀的节点,然后在此后缀下选择“复制”节点。
- 在右侧面板中,为此副本选择“更改”>“启用 4.x 兼容性”。此外,还可以从“对象”菜单中选择“启用 4.x 兼容性”。
- 在“启用 4.x 兼容性”窗口中,指定旧版供应商服务器用来绑定的“绑定 DN”和口令。还可以使用绑定 DN 的任意管理的条目,包括默认的复制管理员。有关绑定 DN 的详细信息,请参阅“选择复制管理员”。
如果供应商要使用服务器的安全端口进行复制更新,则要输入服务器证书条目的 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/ 下。
- 将文件 11rfc2307.ldif 从 5.2 服务器复制到 5.1 服务器。
- 如果已经在 5.1 服务器上安装了 Solaris 软件包,则还必须删除过时的 10rfc2307.ldif 文件。
- 如果基于任何其他平台上在 5.1 服务器上安装了 zip 文件,则将覆盖现有的 11rfc2307.ldif 文件。
- 以下模式文件将受此更改的影响,还必须从 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
- 重新启动 5.1 服务器,然后继续配置复制和初始化副本。同步其他模式元素时,可能会复制服务器之间的某些模式属性,不过,对于复制机制而言,这属于正常行为。
- 您可能需要更新依赖旧版本模式的任意应用程序。新的 11rfc2307.ldif 文件包括以下修改:
- 删除了 automount 和 automountInformation 属性。
- ipHost 对象类允许的属性的列表不再包括 o $ ou $ owner $ seeAlso $ serialNumer。
- 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。
使用 Retro Change Log 插件
希望 Directory Server 5.2 主副本可以维护 4.x 型更改日志时,可以使用 retro change log 插件。有时,这对某些应用程序而言是必要的,如与 Directory Server 4.x 更改日志格式有相关性的 Sun ONE Meta Directory,因为它们从更改日志中读取信息。
Retro change log 插件不允许 Directory Server 5.2 成为旧版 4.x 使用者副本的供应商。仅支持 4.x 供应商的 Directory Server 5.2 使用者,如“使用早期版本进行复制”中所述。Retro change log 插件操作与复制协议无关,对复制拓扑也没有影响。可以在单主部署方案中的任一台服务器中启用 retro change log 插件。在多主环境中插件可能不会正常工作,不应该在这种条件下启用该插件。
除保留在服务器的 5.2 更改日志中外,retro change log 还存储在特殊后缀 cn=changelog 下的其他数据库中。Retro change log 由单级条目组成。更改日志中的每个条目都有对象类 changeLogEntry,并可以包括下表中列出的属性。
启用 Retro Change Log 插件
Retro change log 插件配置信息位于 dse.ldif 中的 cn=Retro Changelog Plugin,cn=plugins,cn=config 条目中。
要从 Directory Server 控制台中启用 retro change log 插件,请执行以下操作:
- 在 Directory Server 控制台的顶级“配置”标签上,展开“插件”节点,并向下滚动以选择“Retro Changelog Plugin”。
- 在右侧面板中,选中“启用插件”复选框,并单击“保存”。要禁用该插件,请清除此复选框。
- 启用或禁用插件后必须重新启动目录服务器。
要从命令行中启用 retro change log 插件,请执行以下操作:
- 使用以下命令修改 retro change log 插件的配置条目:
ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
dn:cn=Retro Changelog Plugin,cn=plugins,cn=config
changetype:modify
replace:nsslapd-pluginenabled
nsslapd-pluginenabled:on
- 重新启动服务器。有关重新启动服务器的信息,请参阅“启动和停止 Directory Server”。
修整 Retro Change Log
在指定的时间后,可以自动删除更改日志中的条目。要配置条目从更改日志中自动删除前所经历的时间,必须设置 cn=Retro Changelog Plugin, cn=plugins, cn=config 条目中的 nsslapd-changelogmaxage 配置属性。此属性仅可以从命令行设置,例如:
ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -p 口令
dn:cn=Retro Changelog Plugin,cn=plugins,cn=config
changetype:modify
replace:nsslapd-changelogmaxage
nsslapd-changelogmaxage:IntegerTimeunitnsslapd-changelogmaxage 是具有以下格式的单值属性:
nsslapd-changelogmaxage:IntegerTimeunit
其中 Integer 代表一个数字,TimeUnit 可以为下列之一:s 表示秒、m 表示分钟、h 表示小时、d 表示天,w 表示星期。变量 Integer 和 Timeunit 之间不应该有空格,例如:
nsslapd-changelogmaxage:2d
更改日志的下次操作将修整 retro change log 。
访问 Retro Change Log
更改日志支持搜索操作。包括下列形式的过滤器时,搜索处于最佳状态:
(&(changeNumber>=X)(changeNumber<=Y))
作为一般规则,不应该在 retro change log 条目上执行添加或修改操作,但可以删除条目来减少更改日志的大小。仅在要修改默认访问控制策略时,才需要在 retro change log 中执行修改操作。
创建 retro change log 时,默认情况下将默认应用下列访问控制规则:
- 授予所有经过验证的用户(userdn=anyone,不要与 userdn=all 匿名访问相混淆)对 retro change log 顶级条目 cn=changelog 的读取、搜索和比较权限。
- 不授予写入和删除权限,但隐式授予目录管理员的除外。
不应向匿名用户授予读取权限,因为更改日志条目中可能包含对敏感信息(如口令)的修改。如果不允许经过验证的用户查看 retro change log 条目的内容,则您可能希望进一步限制对 retro change log 内容的访问。
要修改适用于 retro change log 的默认访问控制策略,您应该修改 cn=changelog 条目的 aci 属性。有关设置 aci 属性的详细信息,请参阅第 6 章“管理访问控制”。
监控复制状态
可以使用新命令行工具以及 Directory Server 控制台来监控复制状态。
命令行工具
有三种新命令行工具用于监控复制部署:
- repldisc - “发现”并构造复制部署中所有已知服务器的一个列表。
- insync - 指示供应商与一个或多个使用者副本之间的同步状态。
- entrycmp - 比较两个或多个副本中的相同条目。
这些工具位于以下目录中:
ServerRoot/shared/bin
Sun ONE Directory Server 参考手册 第 1 章中的“复制监控工具”给出了完整的命令行语法以及这些工具的使用示例。
复制状态标签
要查看 Directory Server 控制台中的复制状态摘要,请执行以下操作:
- 在 Directory Server 控制台的顶级“状态”标签中选择“复制”节点。
右侧面板将显示一个表,包含为此服务器配置的每个复制协议的有关信息。
- 如果要监控复制状态,请选中“连续刷新”复选框。例如,您将会看到副本初始化何时结束。
- 如果要确定尚未复制到使用者副本的上次主副本更改,请单击“挂起的更改数目”按钮。您将获得一条警告信息,该操作可能需要很长时间并且需要确认。确定挂起更改号需要下载使用者副本的更新记录并和主副本的更改日志相比较。如果这些日志很大,该操作可能需要很长的时间和大量服务器资源。
- 单击列标题并调整其大小,就可以修改表的布局。单击“查看选项”按钮,并仅选择那些希望看到的列,还可以修改表的内容。下面的表8-3 说明了要在表中显示的为服务器的每个协议所选择的复制参数。
解决常见复制冲突
多主复制使用松散一致性复制模式。这就意味着可在不同服务器上同时修改同一条目。当在两个服务器之间发送更新时,需要解决有冲突的更改内容。大多数情况下,根据与每台服务器上的更改相关联的时间标记,系统可以自动解决有冲突的更改。最近发生的更改具有优先权。
但有些情况下则需要人为干预来解决更改冲突问题,以便于解决问题。具有无法由复制过程自动解决的更改冲突的条目中包含作为冲突标记的操作属性 nsds5ReplConflict。
定期搜索包含此属性的条目以查找有冲突的条目。例如,可以使用下面的 ldapsearch 命令:
% ldapsearch -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令 \
-b "dc=example,dc=com" "(nsds5ReplConflict=*)"注意默认情况下会对 nsds5ReplConflict 属性编制索引。
解决命名冲突
在不同的服务器中使用相同的 DN 创建两个条目时,复制冲突解决机制将自动重新命名第二个创建的条目。每个目录条目包括操作属性 nsuniqueid 指定的唯一标识符,当发生命名冲突时,此唯一性 ID 将附加到非唯一性 DN 的后面。
如果后一个条目的创建时间早于第一台服务器向第二台服务器复制更改的时间,则可能会在两台服务器中创建具有相同 DN 的两个条目。例如,如果在两个主副本中同时创建条目 uid=bjensen,ou=People,dc=example,dc=com,则复制后这两个主副本都具有以下两个条目:
- uid=bjensen,ou=People,dc=example,dc=com
- nsuniqueid=66446001-1dd211b2+uid=bjensen,dc=example,dc=com
应该使用一种使其具有唯一性 DN 的方法对第二个条目进行重命名。可以删除冲突的条目并再次向它添加一个不冲突的名称。不过,最可靠的方法是创建条目时对其重命名。根据命名属性是单值还是多值,重命名过程会有所不同。下面分别说明每个过程。
重命名具有多值命名属性的条目
要重命名具有多值命名属性的冲突条目,请执行以下操作:
- 使用该命名属性的新值重命名该条目,并保留原 RDN。例如:
ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
dn:nsuniqueid=66446001-1dd211b2+uid=bjensen,dc=example,dc=com
changetype:modrdn
newrdn:uid=NewValue
deleteoldrdn: 0
^D
- 删除命名属性和冲突标记属性的旧 RDN 值。例如:
重命名具有单值命名属性的条目
当命名属性是单值时,不能只将条目重命名为同一属性的另一个值。而必须临时执行以下操作:
- 使用一个不同的命名属性重命名该条目,并保留旧 RDN。例如:
ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
dn:nsuniqueid=66446001-1dd211b2+dc=HR,dc=example,dc=com
changetype:modrdn
newrdn:o=TempName
deleteoldrdn: 0
^D
- 删除命名属性和冲突标记属性的旧 RDN 值。例如:
ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
dn:o=TempName,dc=example,dc=com
changetype:modify
replace:dc
dc:uniqueValue
-
delete:nsds5ReplConflict
^D
注意 修改 RDN 分两步完成,因为您不能删除唯一标识符属性 nsuniqueid。
- 用要使用的命名属性的新的不冲突值对条目进行重命名。例如:
ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
dn:o=TempName,dc=example,dc=com
changetype:modrdn
newrdn:dc=uniqueValue
deleteoldrdn: 1
^D通过将 deleteoldrdn 属性的值设置为 1,可以删除临时属性值对 o=TempName。如果要保留此属性,可以将 deleteoldrdn 属性的值设置为 0。
解决孤条目冲突
复制删除操作时,如果使用者服务器发现要删除的条目有子条目,冲突解决过程就会创建一个紧附条目,以避免目录中出现孤条目。
同样,复制添加操作时,如果使用者服务器找不到父条目,冲突解决过程就会创建一个代表父条目的紧附条目,以便使新条目不是孤条目。
紧附条目是包含对象类 glue 和 extensibleObject 的临时条目。创建紧附条目的方式有以下几种:
- 如果冲突解决过程发现已删除条目具有匹配的唯一标识符,则紧附条目就是该条目的再生条目,并且还具有 glue 对象类和 nsds5ReplConflict 属性。
在这种情况下,可以修改紧附条目以删除 glue 对象类和 nsds5ReplConflict 属性,从而将条目保持为常规条目,或者可以删除紧附条目及其子条目。
- 服务器将创建具有 glue 和 extensibleObject 对象类的最小条目。
在这种情况下,必须修改条目以使其具有一定的意义,或者删除该条目及其所有子条目。
解决潜在的互操作问题
若要与依赖属性唯一性的应用程序(例如邮件服务器)实现互操作性,可能需要对包含 nsds5ReplConflict 属性的条目进行访问限制。如果不限制对这些条目的访问,则仅需要一个属性的应用程序将同时选择原始条目和包含 nsds5ReplConflict的冲突解决条目,并导致操作失败。
要限制访问,需要使用下列命令修改授予匿名读取访问权限的默认 ACI:
ldapmodify -h 主机名 -D "cn=Directory Manager" -w 口令
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 从搜索结果中过滤出所有包含 insds5ReplConflict 属性的条目。