自从该技术在 Windows 2000 Server 中推出以来,IT 管理员一直在使用 Active Directory 并围绕它开展工作。Windows 2000 Server 于 2000 年 2 月 17 日发布,但许多管理员是在 Active Directory 于 1999 年 12 月 15 日发布给制造(RTM)之后的 1999 年下半年就开始了相关工作。
在本 tutorial 中,我们将讨论 AD 复制。
Active Directory 复制
Active Directory 复制是将 Active Directory 对象从一个 DC 传输并更新到另一个 DC 的方法。
DC 之间的连接是根据它们在 林 和站点中的位置建立的。Active Directory 中的每个站点都包含一个或多个子网,用于标识与该站点关联的 IP 地址范围。通过将 DC 的 IP 地址映射到子网,Active Directory 就能知道哪些 DC 属于哪些站点。为了确保 Active Directory 对象在站点之间进行复制,会在站点之间配置连接。
技术
Active Directory 复制依赖以下 技术 才能成功运行:
- DNS
- 远程过程调用(RPC)
- SMTP(可选)
- Kerberos
- LDAP
主要组件
在 Active Directory 中有四个 复制的主要组件:
- 多主复制
与 Windows NT 4.0 中使用的单主复制相比,多主复制可确保每个域控制器都能接收其拥有权威(负责)的对象的更新。这在 Active Directory 环境中提供容错能力。
- 拉取复制
拉取式复制(Pull replication)确保域控制器(DC)请求对象的变更,而不是将变更推送出去(尤其是没有必要的推送)。拉取方式可以在一定程度上减少 DC 之间的复制流量。
- 存储并转发复制(Store-and-forward replication)
存储并转发复制(Store-and-forward replication)确保每个 DC 都只与一部分 DC 通信,以传输已发生的对象变更。若采用存储并转发,每个 DC 将与所有其他 DC 都进行通信,这样效率较低。存储并转发复制可以在 Active Directory 环境中的各个 DC 之间平衡复制负载。
- 基于状态的复制(State-based replication)
基于状态的复制(State-based replication)确保每个 DC 都会跟踪复制更新的状态,从而消除冲突和不必要的复制。
复制管理
复制由 Knowledge Consistency Checker (KCC) 管理。
KCC 通过使用 自动创建的连接 来管理单个站点内各 DC 之间的复制。KCC 会读取配置信息,并读取和写入用于 DC 的连接对象。KCC 仅使用 RPC 与目录服务通信。
站点内复制 不使用压缩,并且更改会立即发送到 DC。 然而,站点间复制依赖于必须创建的用户定义链接。KCC 使用这些链接来创建拓扑,从而在站点到站点的链接之间对复制进行管理。
可以按计划控制站点连接,并对复制数据进行压缩以尽量减少带宽使用。站点到站点连接的默认 复制计划 是 180 分钟 ,这通常对于绝大多数组织来说都太长了。可以在 GUI 中将其配置得低至 15 分钟 ,并通过修改注册表还能更快。
复制数据包大小会根据 DC 中的 RAM 数量进行计算。默认情况下,数据包大小的限制为 RAM 大小的 1/100th,最小为 1 MB,最大为 10 MB。此外,数据包中对象的最大数量为 1/1,000,000th 系统 RAM 大小,最少为 100 个对象,最多为 1,000 个对象。因此,在具有超过 1 GB RAM 的现代服务器上,复制数据包大小将包含最多 10 MB 数据或最多 1,000 个对象。可以通过修改以下位置的注册表来配置最大数据包大小和对象限制:HKEY_LOCAL_MACHINESystemCurrentControlSetServicesNTDSParameters。
主要复制组件
以下是 primary replication components:
- Knowledge Consistency Checker (KCC)
KCC 是在每个 DC 上运行的一个进程,它与 Ntdsa.dll 直接通信,用于读取和写入复制对象。
- 目录系统代理(DSA)
DSA 是一个目录服务组件,在每台 DC 上以 Ntdsa.dll 的形式运行。它为服务和进程提供接口,用于读取目录数据库。
- 可扩展存储引擎(ESE)
ESE 管理目录数据库记录,这些记录可能包含一个或多个列。
- 远程过程调用(RPC)
目录复制通过使用 RPC 协议进行通信。RPC 是一种通信协议,允许开发人员在不必为远程执行开发特定代码的情况下,在本地或远程系统上执行代码。KCC 在构建复制拓扑时也会使用 RPC 与域控制器(DC)通信,以请求相关信息。
- Intersite Topology Generator (ISTG)
ISTG 用于管理特定站点的站点间(intersite)入站复制连接对象。每个站点中都有一个 ISTG 服务器。默认情况下,每个站点中的第一台 DC 就是 ISTG。要在域名为 tailspintoys.com 的域中、名为 HQ 的站点里查找 ISTG,可以运行 Get- ADObject -Identity “cn=NTDS Site Settings,cn=HQ,cn=sites,cn=configuration,dc=tailspintoys,dc=com” -Properties interSiteTopologyGenerator |Select interSiteTopologyGenerator Windows PowerShell 命令。
KCC 及其组件使用的 Active Directory objects 包括:
- 站点
站点(Sites)是 site class 中的 Active Directory 对象,它对应于给定站点中的子网(subnets)。
- 子网
子网对象位于 subnet class 中,并定义与站点对应的网络 IP 子网。
- 服务器
服务器对象位于 server class 中,用于表示服务器计算机(包括 DC)。服务器对象会被当作安全主体处理:它们存储在单独的目录分区中,并且具有各自独立的全局唯一标识符(GUID)。
- NTDS 设置
NTDS 设置对象位于 nTDSDSA 类中,表示特定 DC 上的 Active Directory 实例。
- 连接
连接对象位于 nTDSConnection 类中,并定义从源 DC 到存储该连接对象的 DC 的单向入站路由。
- 站点链接
Site Link 对象位于 siteLink 类中,用于标识在两个或多个站点之间复制数据所使用的协议和计划。
- NTDS 站点设置
NTDS Site Setting 对象位于 nTDSSiteSettings 类中,用于标识 Active Directory 的全站点设置。Sites 容器中每个站点只有一个 NTDS Site Settings 对象。
- 交叉引用
交叉引用对象位于 crossRef 类中,并在 Partitions 容器中存储 Active Directory 分区的位置。
下图展示了一个典型的 双站点 Active Directory 环境,以及其中的一些复制组件。
复制命令和工具
从 Windows Server 2012 中的 Windows PowerShell 开始,有 25 个 cmdlet 可专门用于管理 Active Directory 复制。这些 cmdlet 提供诸如查看复制信息、配置站点、管理站点链接以及强制触发复制发生等功能。
RepAdmin.exe 命令行工具也可用于提供信息并配置 Active Directory 复制。
另一个复制工具是 Active Directory Replication Status Tool 。它可以在 http://www.microsoft.com/en-us/download/details.aspx?id=30005. 获取。你可以用它来分析并 排查 Active Directory 复制问题。
关于 Active Directory basisc 的更多信息,请查看我们的 面向初学者的 AD 教程。
分享到
了解更多
关于作者
Brian Svidergol
IT
精通以 Windows、Active Directory、Azure、Microsoft Exchange、System Center、虚拟化和 MDOP 为核心的 Microsoft 基础架构与基于云的解决方案。除了撰写书籍之外,Brian 还编写培训内容和白皮书,并担任大量图书与出版物的技术审阅者。