扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:51CTO 来源:51CTO 2008年7月1日
关键字: windows 2000 活动目录 活动目录教程
在Windows 2000 活动目录(AD)环境里,你可以使用站点(Site)把网络物理地划分开,从而优化AD复制。通过理解微软是如何在你的域里实现AD复制,你能够更有效地对把你的网络划分成AD站点,从而减少通过低速网络连接的网络流。这篇文章是关于活动目录站点的两篇系列文章的第一部分,在这篇文章里,我们要研究缺省的AD站点内(intra-site)复制的配置,以及信息如何被复制。
活动目录复制
在活动目录(AD) 域控制器(DC)安装到域里时,活动目录会建立缺省的复制模板,并且在活动目录之间自动建立起一个环形的复制拓扑,建立的依据是确保复制流量沿着最有效的路径进行。你可以沿着环的任意方向把变化复制到AD。
因为在AD里所有的DC的地位都相等,都包含可以写入的AD数据库备份,因此在实现多主机复制系统时,有一些潜在的挑战面对着微软。在你可能考虑到的问题里,有些是:
DC如何把复制流量控制在最小?
DC如何保持所有的数据库拷贝同步?
如果DC从两个复制伙伴得到相同的修改,会怎么样?
如果两个修改同时发生,会怎么样?
那么就让我们按顺序来看看这些问题。
DC如何把复制流量控制在最小?
为了把网络流保持在最小,AD的复制在每-属性(per-attribute )的基础上进行。简单地说,这就是指如果一个属性发生了变化(比如,用户的电话号码),那么只有这个小小的变化被复制到你的域里的其它DC上。你可以想象,AD的每属性复制,和把整个数据库拷贝都通过网络传递比起来,更加有效率,需要网络带宽也更少。
DC如何保持所有的数据库拷贝同步?
AD DC 使用一套更新顺序数字(USN)系统对彼此间流动的AD数据库的不同版本进行校验和同步。每当一个DC对它的数据库做了修改,它就用一个USN来标识这个修改。在它通知其它DC它有一个修改需要复制时,它还把与被修改的属性相关联的USN通知给其它DC。
每个DC都维护了一个表格,里面保存着它从环里它的每个复制伙伴那里收到的最高的USN数字。如果一个DC收到了一个修改的通知,而与修改相关联的USN值要比在它的表里的记载的USN值高,那么它就向复制伙伴请求所有插入的修改。你可以在图 A 和 图B 里看到这个过程。
图 A: 活动目录变化通知里包括更新顺序数字USN。
图 B: AD 数据库使用USN在多主机环境里控制同步。
更多问题
如果DC从两个复制伙伴得到相同的修改,会怎么样?
就象我们前面讲过的,在一个域里的AD 的DC使用环形拓扑进行复制。您能会想,有没有可能,一个DC从不止一个复制伙伴那里接收到相同的目录修改呢?为了能区别开这些重复,防止修改在复制环里传播得没完没了,AD不但使用USN对不同数据库版本进行同步,而且还用它来确定“源头写”。“源头写”是在一台DC本地进行的修改,通过复制得到的个性不是源头写。源头写的USN被写入属性,和属性一起被复制。
为了说明这个机制是如何作用的,让我们来看一个简单的例子:假如名为 Astro的DC对某个属性做了修改。它就把新的USN给了这个修改。在这个例子里,我们假设USN为516。然后它把新值写到属性里,同时给属性值把USN代码写到叫做最新状态矢量的一个东西里。Astro这个DC把修改复制给它的两个复制伙伴:名为George 和 Elroy的DC。
为了简化,我们假设在我们的域里只有Astro、 George、和 Elroy 这三个DC。因为它们使用环形的拓扑,Elroy并不知道 Astro 已经把相同的个性给了George,所以它还想把修改复制到George。但是,在复制发生之前,George 和 Elroy 要比较属性里的最新状态矢量,看到它们都被标记成来自Astro,所以就阻止George 从Elroy拉修改。虽然不拉修改, George 仍用Elroy当前的USN来修改自己当前的USN表,好让Elroy在下一个复制周期里,不再把变化传给George。
如果两个修改同时发生,会怎么样?
您可能已经想到,如果两个管理员,在不同的DC上,同时对同一个对象的同一个属性做了修改,这怎么办?微软也想到了这个问题。为了分开这些修改冲突,AD数据库使用了一套属性版本号系统。AD数据库里的每个属性都有一个版号,每次属性被修改时,版本号都更新。属性版本号在域里的所有DC上都应当相同。如果DC通过复制接收到属性的修改,它对打在修改上的属性版本号和它的数据库里的版本号进行比较。然后进行下面的处理:
如果属性版本号比DC数据库里的版本号低,DC就忽略修改。
如果版本号相同(称为修改冲突),但是两个版本的属性值不同,DC就会用具有最后时间标签的属性值来打破这个约束。这样的修改冲突如图图 C 所示,而它的解决办法如图 D所示。 但是不用担心,AD服务会给管理员用户发送一条通知,让他知道发生了冲突。
更极端的可能性是属性版本号和时间标签都相同。这种情况下,微软选择按DC的GUID级别高低选出获胜的修改。因为GUID是绝对唯一的,所以AD使用最高GUID,就打破了限制。
就象您会想到的,微软在AD时集成了时间同步服务,这样所有的DC在给它们的目录修改做标记时,就会使用相同的时间。
图 C: 在用户的电话号码属性上,发生了修改冲突。
图 D: 根据两个属性值的时间标签,冲突得到解决。
站点
下面,让我们就站点(Site)稍做讨论。如你所知,你利用活动目录域和组织单元(OU)来定义你公司的逻辑结构。站点被用来定义你的底层网络逻辑结构-而且,对于在公司里通过低速网络连接进行的域内DC之间的复制,站点可以让你对流量做一些控制。
活动目录站点被定义成一个或多个连接好的IP子网的集合。在站点里的全部子网都要有可靠的、高速的网络连接,而不能由远远分隔,通过低速、不可靠的WAN连接连接起来。你会发现,高速是个相对概念。如果你是一个小型网络的管理员,那么对于用128Kbps速率传输数据的两个子网,你可以认为它们之间的连接很好。另一方面,如果你是一个非常大的网络的管理员,那么你可能会把所有低于1.5Mbps的连当作是低速连接。
定义站点(Site)
你可能还不知道,在你的企业里,第一个站点是在你安装第一个AD DC时,自动建立的。这个站点被赋予缺省名称Default-First-Site-Name(缺省第一个站点名称)。对于你的网络,这可能不是一个非常有说明性的名称,所以只要你愿望,你可以随时可以给它改名。缺省情况下,你的全部IP子网都包含在这个站点里。站点的主要用途是对通过低速网络连接进行的复制流量进行优化,并且帮助客户查找离他们最近的DC来处理服务请求。
使用预定义的MMC控制台活动目录站点和服务管理器(Active Directory Sites and Services),你可以在你的企业里建立附加的站点。下个月,我们会具体研究建立站点和站点对象。站点在活动目录(AD)里进行维护,但并不是名称空间的部分。所以,用户不能按站点浏览活动目录(AD)。站点结构只能用于复制。
站点成员
在你把一个 Windows 2000 活动目录(AD)域控制器(DC)提升到域控制器状态时,AD DC就被分配了它的站点信息。缺省情况下,它成为你运行Dcpromo.exe时,AD DC连接的子网所对应的站点的成员。以后,你可以使用活动目录站点和服务管理器(Active Directory Sites And Services)控制台,修改AD DC的站点成员身份。AD DC的站点所在地决定了它在复制拓扑里的位置。
AD 客户计算机从DC取得站点信息。在计算机启动时,它查询DNS,获取它域里的DC的IP地址。然后它与某个DC联系。如果DC不在客户的本地站点里(根据子网地址),DC会把正确的站点信息传递给客户,这样客户就可以对它的站点里的DC做更有效的DNS查询。然后,客户能够完成与本地DC的认证过程,还可以向本地DC请求服务。因为客户把这个信息缓存在它的注册表的这个值下面:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControSet\ Services\Netlogon\Parameter\ DynamicSiteName
所以,只有当客户的子网发生变化时,才必须重复站点发现过程。
你可以想象得到,这个过程极大地改善了客户和DC之间的通信,还能减少通过站点间低速的WAN连接进行的与AD有关的流量。你对AD站点的正确规划,能够给客户提供来自离它最近的DC的最新AD资源,而且可以保证站点间复制避开高峰时段,从而保证你的网络连接不会因为复制流量而饱和。
理解站点间复制
你可以把域的DC放在不同的站点里,以便对通过低速网络连接进行的AD复制进行控制。当你在一个新的站点里安装第一个DC时,它会自动建立复制连接。叫做站点间连接(intersite link),连接指向域里已有站点中的现存DC。在图 E里,你可以看到一个例子。你在第二个站点里安装的其它DC,会在第二个站点里构成环形拓扑。在一个站点里做的所有修改都会通过站点间连接复制到其它站点。
因为每个DC都有一份可以写入的AD数据库拷贝,所以如果站点间连接中断,它是无法防止你对你站点里的DC的AD做修改。只要计算机通信重新建立,在不同站点里的DC就会通过正常的复制过程进行同步。
图 E: 在新站里的第一个DC自动建立复制连接,连接指向域里其它站点的现存DC。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者