【转载】Active Directory的复制拓扑,Active Directory系列之八

Active Directory 的复制拓扑
在前面的博文中我们在域中部署了额外域控制器,而且我们已经知道每个域控制器都有一个内容相同的 Active Directory 数据库,今天我们要讨论一下额外域控制器在进行 Active Directory 复制时所使用复制拓扑。
NT4 的时代,域控制器被分为两类, PDC BDC PDC 是主域控制器的缩写, BDC 是备份域控制器的缩写。每个域中只能有一个 PDC BDC 可以有多个, BDC 的目录数据是从 PDC 复制而来。只有 PDC 才可以更改域中的用户账号,计算机账号等目录数据, BDC 的内容是只读的!这种复制模型我们称为单主复制,这种模型我们并不陌生,类似于 DNS 服务器的辅助服务器和主服务器的关系。单主复制模型比较简单,管理难度不大,但较容易构成单点故障。
Win2000 开始, Active Directory 开始使用多主复制的模型,也就是说每个域控制器都可以自主地修改 Active Directory 的内容,域中不再有 PDC BDC 的区别了。 Win2003 使用了和 Win2000 同样的多主复制模型,而 Win2008 则在多主复制的基础上又增加了一个 RODC ,也就是只读域控制器,可以看出 Win2008 试图在多主复制模型中增加一些单主复制的元素,因为 RODC 的设计理念显然和 BDC 是有些关联的。
现在我们知道了 Win2003 Active Directory 中使用了多主复制的模型,也就是任何一个域控制器都可以修改 Active Directory 。为了维护 Active Directory 的权威性,显然所有域控制器上的 Active Directory 内容应该都相同。那么,如果一个域控制器修改了自己的 Active Directory ,修改的的内容是如何复制到其他域控制器上的呢?这就是我们今天要讨论的内容, Active Directory 的复制拓扑!
Active Directory 的复制拓扑是一个比较复杂的问题,今天我们只讨论在同一域中域控制器之间的复制拓扑。当域中的域控制器数量发生变化,例如增加或减少了域控制器,域控制器上的进程 KCC 就会进行 Active Directory 复制拓扑的计算。 KCC 被翻译为知识一致性验证器,我们在任务管理器的进程列表中看不到 KCC ,因为它属于 LSACC 进程的一部分。 KCC 可以自动计算出域控制器进行复制时所使用的拓扑,当域控制器数量较少时, KCC 倾向于在域中使用环形拓扑进行 Active Directory 复制,也就是说当一个域控制器的 Active Directory 内容发生变化时,这个更改不会同时传递给其他所有的域控制器,而是要沿着 KCC 设计的环形拓扑一一传递下去。而且为了实现冗余以及提高效率, KCC 设计的拓扑还是双环拓扑,下图就是一个域控制器的复制拓扑示意图,从图中可以看到,每个域控制器都有两个复制伙伴, Active Directory 的复制沿着顺时针和逆时针两个方向进行。
域控制器复制 Active Directory 时,一般会使用“带通知的拉复制”,也就是说,当 DC1 修改了 Active Directory 后, DC1 会在 5 分钟内通知自己的复制伙伴 DC2 ,“快来,我的 AD 中有些新内容”。 DC2 收到通知后,会启动一个 Active Directory 的复制请求,以增量复制的方式从 DC1 Active Directory 复制到 DC2 。如果 Active Directory 中发生了一些紧急事件,例如用户口令被修改,那么此时域控制器将不受 5 分钟的时间限制,而是在最短时间内把 Active Directory 复制给 PDC 操作主机。如果一个域控制器在一个小时之内都没有收到复制伙伴发来的通知,它就会向复制伙伴发出一个查询,询问复制伙伴是否在线。
我们通过一个实例来观察一下域控制器的复制拓扑, Adtest.com 域中有 Florence Firenze Berlin 三个额外域控制器,我们在 Florence 打开 Active Directory 站点和服务,可以看到每个域控制器的复制伙伴。如下图所示, Florence 的复制伙伴是 Berlin Firenze
 
Firenze 的复制伙伴是 Florence Berlin
 
Berlin 的复制伙伴是 Florence Firenze
 
看完三个域控制器的复制伙伴,我们很容易勾勒出 Active Directory 的复制拓扑,这是一个标准的双环拓扑,拓扑如下图所示。
 
双环拓扑非常优美,但并非适合所有场合!在域控制器较多的网络中,标准的环形拓扑就不太合适,因为域控制器复制 Active Directory 时有个严格的限制,那就是从源域控制器到目标域控制器不能超过三个域控制器的间隔。具体来说就是如果 DC1 Active Directory 发生了变化,那么 DC1 可以复制给 DC2 DC2 可以接着复制给 DC3 DC3 还可以复制给 DC4 ,但 DC4 就不能再复制给 DC5 了!因为这时从 DC1 DC5 中间间隔的域控制器已经超过了三个。微软进行这个限制,估计是为了避免在大型网络中进行 Active Directory 复制时环形拓扑导致的延迟问题,试想一下,如果一个大型网络中有 100 个域控制器,域控制器复制的平均间隔为 5 分钟,那么从第一个域控制器复制到最后一个域控制器可能需要大约 500 分钟!这种延迟是不可接受的,因此在大型网络中 KCC 会使用网状拓扑,网状拓扑就不像环形拓扑那样有规律了,每个域控制器可能会有多个复制伙伴,看起来并不像环形拓扑那样有规律。域控制器的复制拓扑最好由 KCC 来规划,当然,也可以自己指定域控制器的复制伙伴,例如我们想指定 Florence 的复制伙伴,我们可以如下图所示,在 Florence 上选择“新建 Active Directory 连接”。
 
如下图所示, Florence 可以从域控制器列表中选择自己的复制伙伴。这样一来,我们就完成了对 Florence 复制伙伴的手工指定。
 
域控制器的复制拓扑最好由 KCC 来自动计算,域控制器一旦复制拓扑出现问题,处理时需要相当的耐心,而且要结合 DNS SRV 记录来进行排错,可能还需要对 Active Directory 数据进行手工处理。以后有机会我们会介绍一些 Active Directory 排错的高级工具以及实际案例供大家参考,希望大家都能够处理好这个问题。

你可能感兴趣的:(2003,ad)