利用微软的活动目录(ad)复制,你能够更好地控制网络流量,减轻站点的负担。请认真阅读这套由两部分组成的教程,它们介绍了如何为你自己的域配置ad目录复制系统。
在windows 2000 活动目录(ad)环境里,你可以使用站点(site)把网络物理地划分开,从而优化ad复制。通过理解微软是如何在你的域里实现ad复制,你能够更有效地对把你的网络划分成ad站点,从而减少通过低速网络连接的网络流。
这篇文章是关于活动目录站点的两篇系列文章的第一部分,在这篇文章里,我们要研究缺省的ad站点内(intra-site)复制的配置,以及信息如何被复制。在系列的第二部分,我们要研究如何对自己的站点进行安装设置,对通过网络进行的ad复制流进行优化。
活动目录复制
在活动目录(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。
总结
在这篇文章里,你已经看到,通过使用ad逻辑结构的不同实体,对你的网络物理结构进行定义,你可以对ad复制进行估化,从而减少通过低速网络连接的流量。通过把客户认证和请求服务都送给离客户最近的ad dc,站点让你能够给用户提供服务请求的最快响应时间。你要知道,对于在芝加哥的用户,让他等待经过缓慢的国际wan连接,由位于巴黎的dc进行认证,他是不会高兴的。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器