8.3. 规划 Windows 同步
在设置同步前评估信息、Windows 服务器和其他注意事项的信息、Windows 服务器和其他注意事项可能很有用,类似于组织数据或规划复制的站点调查。
8.3.1. 资源要求
同步使用服务器资源。在定义复制策略时请考虑以下资源要求:
- 磁盘用量 - 更改日志在每个更新操作后写入。接收许多更新操作的服务器可能会看到更多磁盘用量。另外,为所有复制数据库和同步数据库维护单一的 changelog。如果供应商包含多个复制和同步的数据库,则更改日志会更频繁使用,磁盘使用量越高。
- 服务器线程 - 同步协议使用一个服务器线程。
- 文件描述符 - 服务器可用的文件描述符数量会减少更改日志(一个文件描述符)和每个复制与同步协议(每个协议一个文件描述符)。
- LAN 和 WAN 质量可以连接不同的构建或远程站点,以及可用带宽的数量。
- 目录中存储条目的数量和大小。
与站点相比,管理人员资源数据库或财务信息的网站可能包含使用目录进行简单的电话书的工程人员,该站点可能会对目录进行负担。
8.3.2. 为 Changelog 管理磁盘空间
与多器复制一样,同步需要更改日志来跟踪更新条目的状态信息的目录编辑和日志条目,以及删除条目的 tombstone 条目。此信息是同步所必需的。由于这些日志文件会变得非常大,因此需要定期清理这些文件,以便防止浪费磁盘空间。
维护 changelog 的四个属性:两个位于 cn=changelog5 下,直接与修剪更改日志相关:
nsslapd-changelogmaxage
设置更改日志中条目可以达到的最长期限;一旦一个条目比这个限制旧,它会被删除。这样会使更改日志无限期地增大。nsslapd-changelogmaxentries
设置 changelog 中允许的最大条目数。与nsslapd-changelogmaxage
一样,这也会修剪更改日志,但要小心设置。这必须足够大,以便完整的目录信息或同步可能无法正常工作。
其他两个属性位于 cn=sync_agreement,cn=WindowsReplica,cn=suffixDN,cn=mapping tree,cn=config 中的同步协议条目下。这两个属性与在 changelog 中保留的维护信息相关,即 tombstone 和 state 信息,而不是目录编辑信息。
nsDS5ReplicaPurgeDelay
设置 tombstone (删除)条目和状态信息的最大期限。一旦 tombstone 或 state information 条目早于这个年龄,就可以删除它。这与nsslapd-changelogmaxage
属性不同,其中nsDS5ReplicaPurgeDelay
值仅适用于 tombstone 和状态信息条目;nsslapd-changelogmaxage
适用于 changelog 中的每个条目,包括目录修改。nsDS5ReplicaTombstonePurgeInterval
设置服务器运行清除操作的频率。在这个间隔里,Directory 服务器会运行内部操作来清理 changelog 中的 tombstone 和 state 条目。确保最长期限超过复制更新调度的最长期限,或者多层次复制可能无法正确更新副本。
管理复制和更改日志的参数在第 2 章"核心配置属性"中所述,如 配置、命令和文件参考 中所述。
8.3.3. 定义连接类型
可使用标准端口、使用 TLS/TLS 或启动 TLS(标准端口上的安全连接)进行同步。
虽然不需要,但强烈建议使用 TLS 或其他安全连接进行同步。如果要从 Windows 服务器同步密码,那么必须在两个服务器上启用 TLS,以便同步在安全端口上继续进行。
8.3.4. 考虑数据供应商
数据供应商 是供应商数据源的服务器;这是数据的主要或权威来源。
Windows 和 Directory Server 服务是通过同步协议持续同步的,这样可最小化这两个服务间的潜在的冲突。但是,如果 Directory 服务器是复制部署的一部分,则目录服务器复制场景中的更改和 Windows 域之间可能会发生冲突,具体取决于复制计划。
当数据位于两个不同的目录服务中时,请考虑哪个服务器将成为数据供应商,并确定信息要共享多少。最好的课程是选择一个目录服务来管理数据,并允许同步进程在其他服务上添加、更新或删除条目。
选择一个区域(Windows 域或目录服务器)来管理数据。或者,选择单个目录服务器作为数据供应商并将其与每个 Windows 域同步。如果目录服务器涉及复制,设计复制结构以避免冲突、丢失数据或覆盖数据。
数据的主副本是如何被维护的,这取决于部署的特定需求。无论数据供应商如何维护,都保持简单且一致。例如,不要尝试管理多个站点中的数据,然后在竞争应用程序之间自动交换数据。这样做会导致"上次更改优先"情况,并增加了管理开销。
8.3.5. 确定要同步的子树
只有一个目录服务器子树可以同步到单个 Windows 子树中,建议在目录服务之间仅有一个同步协议。选择或设计用于同步的目录树的部分;考虑设计特别用于同步条目的特殊后缀。
子树计划也应考虑 Active Directory 和 Directory Server 目录之间可能对应的条目,但不属于同步子树的范围。同步进程实际上从根 DN 开始,开始评估条目以进行同步。条目会根据 Active Directory 中的
samAccount
和 Directory Server 中的 uid
属性关联。如果一个条目(基于 samAccount/uid
关系)已从同步子树中删除,同步插件请注意,因为它已被删除或移动。这是对条目不再同步的同步插件的信号。该问题是同步过程需要一些配置来确定如何处理该移动条目。同步协议中可以设置三个选项:删除对应的 Directory Server 条目,忽略更改(默认),或者取消同步条目,但保留其他内容。
8.3.6. 与复制环境交互
同步将目录服务器后缀和子树(例如
ou=People,dc=example,dc=com
)链接到对应的 Windows 域和子树(cn=Users,dc=test,dc=com
)。每个子树都只能同步到其他子树,以避免命名冲突和更改冲突。
要利用 Windows 同步,请将它与多层次复制中的目录服务器供应商一起使用,并同步到 Windows 域的成员。这会通过两个目录系统传播更改,同时保持信息集中化且易于维护。它还有助于更轻松地管理数据。
图 8.2. 多Supplier 目录服务器 - Windows 域同步
![多Supplier 目录服务器 - Windows 域同步](https://access.redhat.com/webassets/avalon/d/Red_Hat_Directory_Server-11-Deployment_Guide-zh-CN/images/8747d563547f734c7a10ca030ae6f4ff/sync-3.png)
仅创建任何给定 Windows 域的同步协议。要传播在 Directory Server 中与 Windows 服务器同步的更改和信息,与多供应商一起创建同步协议,最好是复制部署的数据供应商。
8.3.7. 控制同步方向
如 图 8.1 “同步过程” 所示,默认同步 是双向 的。这意味着 Active Directory 中的更改将发送到 Directory Server,并在 Directory 服务器上的更改发送到 Active Directory。
通过在同步协议中添加
oneWaySync
参数,可以创建 uni-directional 同步。此属性定义要发送更改的方向。
要从 Active Directory 服务器发送更改到 Directory 服务器,值为
from Windows
。在这种情况下,在常规同步更新间隔中,Directory 服务器联系 Active Directory 服务器,并发送 DirSync 控制来请求更新。但是,目录服务器不会向其发送任何更改或条目。因此,同步更新包含要发送到和更新目录服务器条目的 Active Directory 更改。
要将更改 从 Directory 服务器 同步到 Active Directory 服务器,值为
toWindows
。Directory 服务器在正常更新中向 Active Directory 服务器发送条目修改,但它不包括 DirSync 控制,以便它不会从 Active Directory 端请求任何更新。
启用双向同步不会自动防止非同步服务器上的更改,这会导致同步更新之间的同步间不一致。例如,单向同步配置为从 Active Directory 转到 Directory 服务器,因此 Active Directory 为(本质上)数据供应商。如果在 Directory 服务器上修改甚至删除了条目,则目录服务器信息会有所不同,且这些更改永远不会被发送到 Active Directory。在下一次同步更新过程中,Directory 服务器上会覆盖编辑,删除的条目会被重新添加。
要防止数据不一致,请使用访问控制规则来防止在未同步的服务器中编辑或删除同步子树中的条目。目录服务器的访问控制包括在 第 9.7 节 “设计访问控制” 中。对于 Active Directory,请查看适当的 Windows 文档。
8.3.8. 控制要同步的尝试
Windows Sync 提供一些控制,可以控制要同步哪些条目,以获得足够的灵活性来支持不同的部署场景。此控制是通过目录服务器中设置的不同配置属性的设置:
- 在 Windows 子树中,只能将用户和组群条目同步到 Directory Server。在创建同步协议时,可以选择在创建新 Windows 用户和组条目时同步它们。如果在 上 将这些属性设置为,则现有 Windows 条目将同步到目录服务器,并在 Windows 服务器中创建的条目与 Directory Server 同步。
- 与 Active Directory 条目一样,只能同步目录服务器中的用户和组群条目。同步的条目必须具有 ntUser 或 ntGroup 对象类和所需属性;忽略所有其他条目。
目录服务器密码与其他条目属性同步,因为纯文本密码保留在 Directory Server changelog 中。需要密码同步服务才能捕获 Windows 服务器上所做的更改。如果没有密码同步服务,就无法同步 Windows 密码,因为密码在 Windows 服务器中被哈希化,而且 Windows 哈希功能与 Directory Server 使用的结果不兼容。
8.3.9. 确定要同步的目录数据
Windows Sync 在目录服务之间同步用户和组条目。在决定要同步的子树后,规划要在这些子树中存储的信息,如下所示:
- 目录用户和员工的联系信息,如电话号码、家和办公室地址以及电子邮件地址。
- 交易合作伙伴、客户以及客户的联系信息。
- 用户软件首选项或软件配置信息。
- 群组信息和组成员资格。只有组成员处于同步后缀中时,才会同步。不在协议范围内的组成员在两端都保持不变;也就是说,它们被列为适当目录服务上的组的成员,而是组条目中的
member
属性与同步对等点同步。
同步条目在同步协议中设置。用户条目与组条目分开同步。另外,删除条目会被单独配置,需要特别地同步删除。
在 Directory Server 中,只有包含 ntGroup 或 ntUser 对象类和所需属性的条目才会同步;确定应该与 Windows 服务器同步的现有和将来的条目。
确定 目录中应该存在哪些条目后,确定目录中需要维护这些对象的属性。只有 Directory Server 或 Active Directory 的可能属性子集才会被同步。此外,通过同步协议(协调同步)排除某些属性,可以限制这部分属性子集。
根据可用的同步属性,规划这些条目中包含的条目和数据。同步的属性以及 Directory 服务器和 Active Directory 模式之间的区别,请参考 第 8.4 节 “Active Directory 和 Directory Server 间同步的元素”。
8.3.10. 为用户和组群同步 POSIX 属性
在 Active Directory 和 Red Hat Directory Server 之间,所有可能的用户和属性子集都同步。一些属性会被映射,在 Active Directory 和 Directory Server 模式之间有区别,一些属性会被直接匹配。默认情况下,只有这些属性会被同步。
该同步列表中缺少的一个属性是任何与 POSIX 相关的属性。在 Linux 系统上,系统用户和组标识为 POSIX 条目,LDAP POSIX 属性则包含该所需信息。但是,当 Windows 用户同步时,它们具有
ntUser
和 ntGroup
属性,它们会自动添加将其识别为 Windows 帐户,但没有通过同步 POSIX 属性(即使它们存在于 Active Directory 条目中),并且不会在 Directory Server 端添加 POSIX 属性。
Posix Winsync API 插件在 Active Directory 和 Directory Server 条目之间同步 POSIX 属性。此插件默认为禁用,但启用后,它可允许识别数据供应商中设置的 POSIX 属性,然后通过与对等服务器同步。如果 Active Directory 用作用户帐户存储,这很有用,因为 POSIX 属性可以直接在 Active Directory 条目中设置,然后在 Directory Server 目录中同步和保留。
注意
如果启用了插件,则所有 POSIX 属性(如
uidNumber
、gidNumber
和 homeDirectory
)在 Active Directory 和 Directory Server 条目之间同步。但是,如果新 POSIX 条目或 POSIX 属性添加到 Directory 服务器中的现有条目中,只有 POSIX 属性才会同步到 Active Directory 对应的条目 中。POSIX 对象类(posixAccount 用于用户,posixGroup 用于组)不会添加到 Active Directory 条目。
8.3.11. 同步密码和安装密码服务
虽然 DirSync 插件默认安装在 Directory Server 并默认启用时,必须在 Windows 机器上安装额外的 Windows 服务 Password Sync 来同步密码。需要该服务将 Windows 服务器上的任何密码更改传送到 Directory Server。
除非安装了 Password Sync 服务,否则不会启用密码同步(同步
userPassword
属性)。这意味着,即使 Directory Server 用户条目与 Windows 服务器同步,用户条目在 Windows 域(在其它方面)不会激活,这些同步用户也无法登录到域,因为它们没有密码。
注意
有一个名为
passwordTrackUpdateTime
的密码策略属性,它为用户密码最后一次更新记录一个单独的时间戳。这样可以更轻松地同步 Active Directory 和 Directory Server 或其他客户端之间的密码更改。
8.3.12. 定义更新策略
在下一次更新前,不会同步现有目录服务器条目,以包含必要的同步属性。对已同步的 Windows 条目和 Directory Server 条目的修改会在下一次增量更新中执行。作为此策略的一部分,尝试在单个位置管理数据,限制可以更改数据的应用程序,以及调度所需的总体更新(更新不会覆盖或删除现有信息;它们添加新的条目和发送修改)。
默认情况下,Windows 和 Directory 服务器实例将持续同步,并且每五分钟发布一次更改。可以通过手动设置同步协议属性来更改更新间隔(
winSyncInterval
)或设置不同的更新调度(nsDS5ReplicaUpdateSchedule
)来更改此调度。
8.3.13. 编辑同步协议
通过 Web 控制台配置的基本同步协议设置有关同步的简单信息,如主机和端口信息、同步子树和连接类型。
但是,许多配置可用于多supplier 复制,如部分复制和同步计划,供 Windows-Directory 服务器同步使用。这些设置必须直接添加到同步协议中。
《管理指南》 中介绍了更改默认同步协议,可用的同步协议属性则列在 配置、命令和文件参考 中。