优化大型网络的AD复制---重要(from MS KB)

概要

本文描述如何优化大型网络配置中的 Active Directory 复制。

回到顶端

更多信息

警告:注册表编辑器使用不当可导致严重问题,可能需要重新安装操作系统。Microsoft 不能保证您可以解决因注册表编辑器使用不当而导致的问题。使用注册表编辑器需要您自担风险。
当在网络中添加或移除域控制器时、当域控制器不可用时或者当数据复制计划改变时,知识一致性检查器 (KCC) 会动态地调整网络的数据复制拓扑。

KCC 的任务包括:
根据 Active Directory 对象描述的网络拓扑,KCC 创建用于定义域控制器的入站复制和出站复制的连接对象:

当复制源在同一站点中时,进入运行 KCC 的域控制器。
当复制源在不同的站点中时,如果运行 KCC 的域控制器是为其站点选择的站点间拓扑生成器,则进入运行 KCC 的站点。
将 KCC 定义的和管理员定义的 Microsoft Windows NT 目录服务连接 (ntdsConnection) 对象转换为目录服务 (DS) 复制引擎理解的配置。
默认情况下,每 15 分钟执行一次上述各项任务。有关 KCC 的更多信息,请参阅 Windows 2000 Resource Kit 中的“Active Directory 复制”一章。

回到顶端

示例


如果 D 是网络中域的数目,S 是网络中站点的数目,并且
(1 + D) * S^2 <= 100,000
那么,您就可以放心地忽略本文的其余部分。

下表列出了在没有进行性能优化的情况下,一个站点间 KCC 在各种集散式配置下运行时的执行时间和内存占用的数据。每个站点都包含一个域控制器(对应于单个域)和一个全局编录。各个域在这些站点间均匀分布。自动站点链接桥接已启用。测量是在 Intel Pentium III Xeon 处理器为 500MHz 和随机存取内存 (RAM) 为 1 GB 的条件下进行的。内存使用包含数据库缓存。当计算机的物理内存小时,内存占用也小。

位置站点数目域数目运行时间 (h:m:s)内存使用量(单位为 K)
分散站点12510:00:1211748
中心站点12510:00:2112256
分散站点25010:00:4145660
中心站点25010:01:0544820
分散站点50010:02:56173216
中心站点50010:04:34174752
分散站点100010:15:23685596
中心站点100010:17:34688568
分散站点100010:15:54685604
中心站点100010:17:51689668
分散站点125100:00:5958520
中心站点125100:01:1958536
分散站点250100:04:00228304
中心站点250100:04:47227508
分散站点500100:21:32815916
分散站点500100:19:41823808
中心站点500100:21:18828484
分散站点125500:04:49266088
中心站点125500:05:54264024
分散站点250500:20:19831924
中心站点250500:22:49841536
执行时间的公式为:
(1 + num domains) * num sites ^ 2 * 0.0000075 minutes
通过使用 Active Directory 站点和服务管理单元,可以确定 KCC 在现有配置下运行的时间长度:
1.通过查看 NTDS 站点设置对象的属性,确定站点中的哪个域控制器是当前的站点间拓扑生成器。
2.确定在该域控制器上 KCC 执行的时间长度:

a.右键单击 NTDS 设置
b.单击检查复制拓扑
此外,还可通过使用注册表编辑器查看以下注册表项,监控正在运行的 KCC 的执行时间:
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/NTDS/Diagnostics
将“1 知识一致性检查器”的值更改为 3 或更大。

当此值设置为 3 或更大时,KCC 将记录事件 1009 和 1013 以表示检查的开始和结束。

回到顶端

建议

减少站点配置中站点链接桥的使用


自动站点链接桥接表示整个网络是完全通过 Internet 协议 (IP) 路由的。在这种情况下,给定站点上的任何计算机都可以通过 IP 与任何其他站点上的任何计算机通信。默认情况下,对于 IP 和简单邮件传输协议 (SMTP) 站点间传输,自动站点链接桥接是启用的。要禁用此功能,应当在需要的位置添加显式站点链接桥对象。只有当特定站点包含域的域控制器,而该域控制器在任何相邻的站点中不存在,但该域的另一个域控制器却存在于林中的其他站点中时,才需要站点链接桥。相邻站点指包含所述站点的任何站点链接中包含的任何站点。大多数配置不需要使用站点链接桥,因为任何具有给定域(该域存在于多个站点中)的域控制器的站点几乎始终与至少一个包含相同域的域控制器的其他站点相邻。

如果在禁用自动站点链接桥接之后,KCC 不能直接或间接连接所有包含特定域的域控制器的站点,则 KCC 将记录事件 1311。
示例
a.没有使用 Active Directory 站点和服务管理器发布足够的物理连接来创建连接林中所有站点的跨越树。
b.不能在一个或多个关键服务器上执行复制来将更改传播到所有站点。这通常是无法连接到服务器导致的。
要解决问题 A,请使用 Active Directory 站点和服务管理器执行下列操作之一:
发布足够的站点连接信息,这样计算机可以推知此分区可以到达此站点的路由。这是首选方法。
从另一个站点中包含相同分区的控制器中,向此站点中包含分区域控制器=europe、域控制器=mycorp、域控制器=com 的域控制器添加 ntdsConnection 对象。
要解决问题 B,请查看当前的事件日志,以确定 KCC 不能与哪个或哪些服务器联系。

要禁用自动站点链接桥接,请执行下列操作:
1.双击 Active Directory 站点和服务管理单元。
2.右键单击 IP 传输对象,然后单击属性
3.在“站点间传输”容器中,单击适当的复选框以清除它,然后单击确定
对 KCC 可以自动计算站点间拓扑的配置依然有限制,即使不使用站点链接桥接也是如此。下表列出在各种集散式配置下运行的站点间 KCC 的执行时间和内存占用的数据。每个站点都包含一个域控制器(对应于单个域)和一个全局编录 (GC)。各个域在这些站点间均匀分布。自动站点链接桥接被禁用,而且尚未定义站点链接桥。测量是在 Intel Pentium III Xeon 处理器为 500MHz 且 RAM 为 1GB 的条件下进行的;在 200MHz 的 Intel Pentium II 处理器上的执行时间大约是这些列出时间的两倍。内存使用包含数据库缓存。当计算机的物理内存小时,内存占用也小。

位置站点数目域数目运行时间 (h:m:s)内存使用量(单位为 K)
分散站点100210:01:2731380
中心站点100210:04:4633352
分散站点50210:00:359980
中心站点50210:01:5811540
分散站点25210:00:234072
中心站点25210:00:544112
分散站点12710:00:101464
中心站点12710:00:262052
分散站点1002500:39:4292160
中心站点1002501:21:3085392
分散站点502500:11:3342456
中心站点502500:26:2637384
分散站点252500:03:3215292
中心站点252500:09:3618408
分散站点127500:01:157364
中心站点127500:04:059324
分散站点1002100:09:0050752
中心站点1002100:19:0460956
分散站点的执行时间的公式为:
(1 + number of domains) * number of sites * 0.0006 minutes
其中 number of domains 是域数目, number of sites 是站点数目。

中心站点的执行时间的公式为:
(1 + number of domains) * number of sites * 0.0015 minutes
仅在非峰值时段运行站点间 KCC


可以将给定站点中的 KCC 配置为只禁用站点间拓扑计算,而保留它们响应站点内更改复制要求的能力。然后可以在一天中的特定时间重新启用站点间拓扑计算,并持续一段时间,以使站点中的 KCC 有足够的时间运行站点间检查,然后再次禁用站点间拓扑计算。

当禁用特定站点的站点间拓扑检查时,该站点将不响应在站点间拓扑中的更改。如果复制给定域的所有站点间连接的一个或两个复制伙伴都不可用,KCC 将不能自动适应新的源或目标,直到域控制器重新联机或 KCC 的站点间部分再次运行。

注意:管理员可以在禁用站点间 KCC 时手动添加连接。

要评估此方法在您的配置中是否可行,首先应确定 KCC 在您的环境下运行所需的时间。然后确定在每个站点的一个域控制器中是否有一个时间段来满足该时间和内存要求。不必同时在所有站点运行 KCC 的站点间部分。

要计划站点间 KCC 的运行,请使用任务计划程序组件来计划“wscript /b runkcc.vbs”(下文提供了文本形式的脚本)的执行。有关任务计划程序的更多信息,请参阅 Windows 2000 帮助中的“任务计划程序”主题。Runkcc.vbs 需要在它运行的计算机上安装 Windows 2000 CD-ROM 中的 Support/Tools 文件夹中的支持工具。
彻底禁用站点间 KCC,手动配置连接


如果彻底禁用了自动站点间拓扑,则必须由管理员亲自创建必需的站点间复制连接对象以确保复制数据在林中继续流动。一般说来,如果用户的站点数超过了 KCC 限制,则可以使用集散式网络拓扑来连接公司总部与大量同类分公司站点。这种对称极大地简化了该过程。

如果没有 KCC 的帮助,在创建您自己的连接对象之前,应当考虑以下几点:
服务器故障。考虑分公司站点的域控制器 BR1 连接到公司中心站点的域控制器 HQ1,而 HQ1 发生硬件错误、电源故障或某种其他灾难性事件的情况。当启用自动站点间拓扑时,KCC 负责添加其他连接以便从公司中心站点的另一个域控制器临时复制,直到 HQ1 重新联机。如果没有自动站点间拓扑生成,要确保发生服务器故障时复制继续进行,必须定义冗余连接。定义两个 BR1 入站连接,一个从 HQ1,另一个从 HQ2。如果分公司有两个域控制器,即 BR1 和 BR2,那么第二个连接应当从 HQ2 到 BR2。这样,在分公司的两个域控制器之一发生故障时,可以从公司中心站点复制更新。

以这种方式定义的冗余连接可能会强制多次复制同一个 Active Directory 更新,除非正在使用 IP 传输,并且站点的所有入站连接都有站点内的相同目标域控制器。当使用 SMTP 传输或多个目标域控制器时,应当使复制计划在时间上错开,以便在目标站点中接收、应用和复制来自第一个复制源的更新后,再请求第二个复制源。将以上示例推而广之,第一个连接可在奇数钟点复制,而第二个连接可在偶数钟点复制。
全局编录放置。如果一个站点包含几个 GC,则其中一个或多个 GC 必须用于复制到该站点和从该站点进行复制。否则,GC 将不会保持同步。
域放置。如果某特定域的各个域控制器分布在多个站点上,则该域的一个或多个域控制器必须用于与同一域的其他域控制器进行复制。这可保证域数据在该域的所有域控制器上复制。如果站点 2 包含域 A 的一个域控制器,那么站点 1 中域 A 的域控制器仅仅与站点 2 中一个域 B 的 GC 进行复制是不够的。因为域 B 的 GC 只有域 A 的对象属性的子集,它不能充当在域 A 的各个域控制器之间复制此集内没有的属性的渠道。
平衡负载。分配入站和出站复制负载。例如,如果公司中心站点有 100 个域控制器,1000 个分公司各有 1 个域控制器,而您不希望将所有 1000 个分公司域控制器配置为从中心站点的同一域控制器中进行复制。而使用负载平衡,可使公司中心站点的每个域控制器与 10 个分公司站点通信。由于每次只能发生一个入站复制,而且与分公司站点的通信一般通过慢速广域网 (WAN) 链接进行,所以,如果不能平衡负载,则不仅会增加中心站点域控制器的 CPU 和内存的负荷,还可能导致大量的等待复制的数据积压。
也可通过 KCC 的一次运行初步创建连接,然后由管理员对这些连接进行调整。如果不准备以后定期运行站点间 KCC,那么管理员必须定义其他复制连接,以便在第一个连接所识别的源域控制器发生故障时复制可以继续进行。如果所有现有的连接都失败,而且站点间 KCC 没有重新运行,则管理员必须直接连接到目标域控制器,并建立与可访问的域控制器的连接。在稳定性差的配置(由于网络故障而使最佳源域控制器偶尔长时间不可用的情况)中,最好拥有一个以上的额外连接。
Runkcc.vbs(触发 KCC 一次性运行的 VBScript)

'*/
'*/ Parameters:<none>
'*/ Purpose:When run on a domain controller, this script makes the local domain controller the Inter-Site
'*/ Topology Generator for its site, enables inter-Site topology generation temporarily if it is disabled,
'*/ runs the KCC topology generation process, and disables inter-site topology generation if it was
'*/ configured so to begin with.
'*/
'*/

On Error Resume Next

Call ExecuteKCC()

Public Sub ReportError ()

'tell the user the error
wscript.Echo "The following error occurred:(" + cstr(hex(err.number)) +") " + cstr(err.description)

End Sub

Public Sub ExecuteKCC ()

On Error Resume Next

wscript.echo "Loading functions for use by this script..."
set dll=createobject("iadstools.DCFunctions")
if err.number <> 0 then ReportError:WScript.Quit
dll.enabledebuglogging 1

'get the local box name
wscript.echo "1> Connecting to local machine..."
set localMachine=GetObject("LDAP://localhost/rootdse")
if err.number <> 0 then ReportError:Wscript.Quit
ServerName=localmachine.get("dnsHostName")
if err.number <> 0 then ReportError:WScript.Quit
wscript.echo "2> Found local machine " + ucase(ServerName)

'get the config NC
configNC=localMachine.get("configurationNamingContext")
if err.number <> 0 then ReportError:Wscript.Quit
wscript.echo "3> Configuration Naming Context is:" + configNC

'get the SiteName of this box
domain controllerSiteName=dll.dsgetsitename
if err.number <> 0 then ReportError:Wscript.Quit
wscript.echo "4> The site for this server is:" + domain controllersitename

'get the DSA DN for this box
DSAObj = localMachine.get("dsServiceName")
if err.number <> 0 then ReportError:Wscript.Quit
wscript.echo "5> The DN for this machine's DSA is:" + DSAObj

'bind to the Site Settings object in the Directory
SiteSettingsPath="LDAP://localhost/CN=NTDS Site Settings,CN="+domain controllerSiteName+",CN=Sites,"+configNC
set SiteSettings=GetObject(SiteSettingsPath)
if err.number <> 0 then ReportError:WScript.Quit

'make the current box the ISTG
wscript.echo "6> Making " + ucase(ServerName) + " the Inter Site Topology Generator for the " + ucase(domain controllerSiteName) + " site."
SiteSettings.Put "interSiteTopologyGenerator",DSAObj
SiteSettings.SetInfo
if err.number <> 0 then ReportError:Wscript.Quit

'get the current options
origOptions=SiteSettings.Get("options")
if hex(err.number) = "8000500D" then
origOptions=0
elseif err.number=0 then
'do nothing
else
ReportError:Wscript.Quit
end if
modOptions=origOptions
wscript.echo "7> Currently, the options specified for KCC operations for the ISTG in this site is set to:" + cstr(origOptions)

'enable the KCC if currently disabled, otherwise, leave it alone
if modOPtions And 16 then
mod2Options=modOptions XOr 16
wscript.echo "8> The KCC is currently disabled for inter-site topology generation.Temporarily re-enabling it.Setting options to:"+ cstr(mod2Options)
SiteSettings.Put "options", mod2Options
SiteSettings.SetInfo
if err.number <> 0 then
ReportError
wscript.echo "An error occurred during the process of modifying the options attribute.Check to make sure that it has the correct original value.This script is terminating."
Wscript.Quit
end if
else
wscript.echo "8> The KCC is currently enabled to handle inter-site topology generation.No change is necessary before triggering the KCC."
end if

'run the KCC
Result=dll.TriggerKCC(cstr(ServerName))
if err.number > 0 then ReportError
If result=0 then
wscript.echo "9> The KCC was successfully triggered on " + ucase(ServerName)
else
wscript.echo "9> The following error occurred trigerring the KCC on " + ucase(ServerName) + ":" + dll.lasterrortext
end if

'disable the KCC
wscript.echo "10> Re-writing the original options (" + cstr(origOptions) + ") to the ISTG."
SiteSettings.Put "options", origOptions
SiteSettings.SetInfo
if err.number <> 0 then ReportError:WScript.Quit

End Sub

'end script

有关 Windows 2000 KCC 的其他信息,请单击下面的文章编号,以查看相应的 Microsoft 知识库文章:
242780 (http://support.microsoft.com/kb/242780/) 如何禁止知识一致性检查器自动创建复制拓扑
224815 (http://support.microsoft.com/kb/224815/) Active Directory 复制中站点间拓扑生成器的角色
214745 (http://support.microsoft.com/kb/214745/) 事件 ID 1311 疑难解答:知识一致性检查器

回到顶端


这篇文章中的信息适用于:
Microsoft Windows 2000 Server
Microsoft Windows 2000 Advanced Server
Microsoft Windows 2000 Datacenter Server

回到顶端

关键字: 
kbinfo kbnetwork KB244368
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值