AD 实战之八:复制拓扑

本文出自 “岳雷的微软网络课堂” 博客,请务必保留此出处http://yuelei.blog.51cto.com/202879/126641

 

在前面的博文中我们在域中部署了额外域控制器,而且我们已经知道每个域控制器都有一个内容相同的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的复制沿着顺时针和逆时针两个方向进行。

AD 实战之八:复制拓扑_第1张图片

域控制器复制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。

AD 实战之八:复制拓扑_第2张图片

而Firenze的复制伙伴是Florence和Berlin。

AD 实战之八:复制拓扑_第3张图片

Berlin的复制伙伴是Florence和Firenze。

看完三个域控制器的复制伙伴,我们很容易勾勒出Active Directory的复制拓扑,这是一个标准的双环拓扑,拓扑如下图所示。

AD 实战之八:复制拓扑_第4张图片

双环拓扑非常优美,但并非适合所有场合!在域控制器较多的网络中,标准的环形拓扑就不太合适,因为域控制器复制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连接”。

AD 实战之八:复制拓扑_第5张图片

如下图所示,Florence可以从域控制器列表中选择自己的复制伙伴。这样一来,我们就完成了对Florence复制伙伴的手工指定。

AD 实战之八:复制拓扑_第6张图片

域控制器的复制拓扑最好由KCC来自动计算,域控制器一旦复制拓扑出现问题,处理时需要相当的耐心,而且要结合DNS的SRV记录来进行排错,可能还需要对Active Directory数据进行手工处理。以后有机会我们会介绍一些Active Directory排错的高级工具以及实际案例供大家参考,希望大家都能够处理好这个问题。

本文出自 “岳雷的微软网络课堂” 博客,请务必保留此出处http://yuelei.blog.51cto.com/202879/126641

你可能感兴趣的:(AD 实战之八:复制拓扑)