Netwrix 1Secure 提供跨数据和身份的统一可见性——免费试用14天,享有完全访问权限。开始免费试用

资源中心博客

Active Directory 复制

Active Directory 复制

Mar 17, 2023

自从该技术在 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 复制依赖以下 技术 才能成功运行:

  1. DNS
  2. 远程过程调用(RPC)
  3. SMTP(可选)
  4. Kerberos
  5. 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 都会跟踪复制更新的状态,从而消除冲突和不必要的复制。

Image

复制管理

复制由 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 教程

分享到

了解更多

关于作者

Asset Not Found

Brian Svidergol

IT

精通以 Windows、Active Directory、Azure、Microsoft Exchange、System Center、虚拟化和 MDOP 为核心的 Microsoft 基础架构与基于云的解决方案。除了撰写书籍之外,Brian 还编写培训内容和白皮书,并担任大量图书与出版物的技术审阅者。