本文有两个目的。首先,它包含有关如何配置Cisco Network Registrar(CNR)以实现最佳性能和稳定性以及如何监控CNR安装的建议。其次,它包含关于在出现问题时应如何反应的建议。在理想情况下,您将阅读本文,并在出现任何问题之前对配置和监控建议采取行动。这样,您将避免问题。如果您第一次阅读本文是因为CNR出现问题,请立即转到“遇到问题时立即采取行动”部分。有关建议的进一步说明,请参阅《CNR用户指南》和命令参考资料。
本文档没有任何特定的要求。
本文档不限于特定的软件和硬件版本。
有关文件规则的更多信息请参见“ Cisco技术提示规则”。
此处提供的配置建议代表一个起点。如果系统的配置与此不同,请查看设置。您的配置可能是从CNR的早期版本开发的。CNR 5.0及更高版本与早期版本相比提供了大大改善的性能,但应更改参数以实现最大收益。本文档的重点是大型服务提供商环境,但许多建议也适用于其他CNR环境。本文档假设:
您是运营拥有10,000个或更多用户的宽带网络的服务提供商。
您正在使用CNR 5.0.3或更高版本。
您正在使用轻量级目录访问协议(LDAP)。CNR在没有LDAP的情况下运行,但许多服务提供商使用LDAP。
您的网络的IP地址饱和度为中。
您在UNIX服务器上运行CNR。大多数建议同样适用于Windows NT,但大多数服务提供商在UNIX服务器上运行CNR,因此在UNIX和NT不同的地方,使用UNIX示例。
您有上游连接到其他服务器上运行的其他系统(如计费、客户服务或调配)。
动态域名系统(DDNS)在您的站点处处于非活动状态(大多数服务提供商不使用DDNS)。
规划并记录IP地址分配。
独立的磁盘密集型操作:将主DHCP服务器与LDAP服务器和主DNS服务器放在不同的计算机上。
记录您的电缆调制解调器端接系统(CMTS)配置;确保CMTS和CNR配置匹配。
准备灾难恢复计划。
记录网络拓扑。
注意CMTS的Cisco IOS®软件版本。
实现网络长期健康的最有效步骤是:a)规划配置,b)记录这些计划,c)在计划和做出更改时记录更改。记录选择的原因有助于在未来的规划会议中。
使用安全故障切换。强烈建议使用简单故障切换,因为它大大简化了管理任务。
打开简单网络管理协议(SNMP)陷阱。以下示例用于说明:
nrcmd> trap enable address-conflict nrcmd> trap enable dhcp-failover-config-mismatch nrcmd> trap enable other-server-not-responding nrcmd> trap set free-address-low-threshold=15% nrcmd> trap set free-address-high-threshold=30% nrcmd> trap enable free-address-low
确保您有足够的RAM(512 MB或更大)。
确保数据分区足够大(2.5 GB或更大)。
对日志和数据使用单独的分区。
确保服务器之间的高速、低延迟连接;检验接口设置。
SNMP陷阱使您能够从网络监控器监控DHCP服务器。请务必在DHCP服务器上配置陷阱,将监控器配置为接收和显示陷阱,并且显然要注意监控器。
配置生产系统需要权衡成本与系统有效性。我们建议这些值,假设运行故障切换的E250类系统上有大约100,000个用户。使用许多策略、客户端类、范围、请求和响应缓冲区、DHCP扩展和其他复杂性会影响内存需求和性能。
如果日志的数量和大小增加,应增加日志分区(/var/nwreg2)。
设置请求和响应缓冲区以实现最佳吞吐量。请注意,CNR 5.0的这些建议已更改。
nrcmd> DHCP set max-dhcp-requests=500 nrcmd> DHCP set max-dhcp-responses=2000
电缆调制解调器租用时间= 604800(7天)或更长。
客户端设备(CPE)租用时间:尽可能长时间(请参阅取舍说明)。
增加DHCP和TFTP日志大小:
nrcmd> server DHCP serverLogs nlogs=15 logsize=10M nrcmd> server DNS serverLogs nlogs=15 logsize=10M nrcmd> server TFTP serverLogs nlogs=10 logsize=10M
配置日志设置,这些设置提供足够的详细信息以识别问题,但不会生成过多的详细信息(这使得很难区分问题并给服务器带来不必要的负载)。 这些是通常适用的推荐设置。根据需要调整设置以处理网络中的问题:
活动摘要
默认
无故障切换活动
启用defer-lease-extensions
设置last-transaction-time-grenality = 1/2租用间隔
对于提供生产租赁的策略,禁用allow-client-lease-override。
启用回退到本地;当LDAP不可用时,CNR使用本地数据:
nrcmd> session set visibility=3 nrcmd> dhcp enable fallback-to-local-client-data nrcmd> session set visibility=5
如果使用CNR 5.5或更高版本,请配置客户端缓存功能,将LDAP查询减少一半。
nrcmd> dhcp set client-cache-count=2000 nrcmd> dhcp set client-cache-ttl=5
要最有效地利用CNR的吞吐量功能,应该有3到4倍的响应缓冲区,即请求缓冲区。系统只使用所需数量的缓冲区。随着租用时间的缩短,需要更多响应缓冲区。
注意:租期应在实际情况下确定。电缆调制解调器租用来自私有地址空间(通常为net-10),调制解调器很少移动到网络上的不同位置。这些租约应作出一周或更长的租期。另一方面,CPE租用来自公有地址空间,CPE(特别是笔记本电脑)确实会四处移动。此处必须设置租用持续时间以匹配用户群的习惯。租用时间越长,DHCP服务器的负载越低。使用短租期(少于8小时)时,将响应缓冲区增加到2500。
禁用allow-client-lease-override以确保客户端遵守在CNR配置中指定的租用时间 — 某些客户端尝试覆盖指定的设置。
启用“回退到本地”,以在LDAP服务器发生故障时保持网络运行。使用此设置时,DHCP服务器会继续满足租用请求,即使LDAP服务器没有响应。服务器将无权访问存储在LDAP服务器中的特定客户端信息,因此它将使用默认设置满足每个请求。您必须配置适合您网络的默认值。
最后,客户端缓存功能将从LDAP检索的客户端数据保存在内存中,因此DHCP服务器在discovery-offer-request-ack周期期间只需查询一次LDAP,从而加快DHCP服务器性能。
启用增量传输功能:
nrcmd> dns enable ixfr-enable
启用通知。有关启用通知所需的参数,请参阅CNR CLI命令参考。
将主DNS服务器和辅助DNS服务器放在单独的网段上。
配置客户端以查询辅助DNS服务器。
辅助DNS服务器通过以下两种方式之一从主服务器接收其数据:a)“完全区域传输”或b)“通知/ixfr”(增量传输)。 使用notify/ixfr可减少必须从主服务器传输到辅助服务器的记录数。当名称空间相对动态时,这一点至关重要。
将initial-packet-timeout设置为2:
nrcmd> tftp set initial-packet-timeout = 2
如果使用CNR 5.5或更高版本,请启用TFTP文件缓存以提高性能:
nrcmd> tftp set home-directory=/var/nwreg2/data/tftp nrcmd> tftp set file-cache-directory=CacheDir nrcmd> tftp set file-cache-max-memory-size=32000 nrcmd> tftp enable file-cache nrcmd> tftp reload
TFTP文件缓存将电缆调制解调器配置文件存储在内存中,避免每次电缆调制解调器请求配置文件时对磁盘进行读取。需要在硬盘中创建文件缓存目录(上例中为CacheDir),并分配最大大小。根据系统中的RAM总量和所需的不同配置文件数量选择大小。
TFTP协议不要求客户端在收到文件时发送最终确认(ACK)数据包。如果未收到ACK,则服务器必须在超时期内保持客户端连接,这会限制其为新请求提供服务的能力。如果TFTP服务器具有资源容量,您还可以增加max-tftp-packets值以支持更多的客户端连接。此参数的默认值为512。最大值为1000。
这些设置显示CNR将租用更新写入LDAP的配置。如果可能,请设计您的网络,以便不必这样做。如果必须写入租用更新,此处显示该命令以提供建议。通过使用单独可调的读/写LDAP对象来优化LDAP连接。(每个对象都获得其自己的线程组)。
# Create and Configure a New LDAP Create/Update object ldap LDAP-Write create csrc-ldap ldap LDAP-Write set password=changeme ldap LDAP-Write set port=389 ldap LDAP-Write set preference=1 ldap LDAP-Write setEntry query-dictionary csrcclientclass=client-class-name ldap LDAP-Write set reactivate-interval=60s ldap LDAP-Write set search-filter= (&(macaddress=%s)(|(csrcclassname=Computer)(csrcclassname=Modem))) ldap LDAP-Write set search-path=csrcprogramname=csrc,o=NetscapeRoot ldap LDAP-Write set username= "uid=admin,ou=Administrators,ou=TopologyManagement,o=NetscapeRoot" ldap LDAP-Write set can-query=disabled ldap LDAP-Write set can-create=enabled ldap LDAP-Write set can-update=enabled ldap LDAP-Write set connections=2 ldap LDAP-Write set limit-requests=enabled ldap LDAP-Write set max-requests=8 ldap LDAP-Write set timeout=30s ### Create and Configure a New LDAP Read object ldap LDAP-Read create csrc-ldap ldap LDAP-Read set password=changeme ldap LDAP-Read set port=389 ldap LDAP-Read set preference=1 ldap LDAP-Read setEntry query-dictionary csrcclientclass=client-class-name ldap LDAP-Read set reactivate-interval=60s ldap LDAP-Read set search-filter= (&(macaddress=%s)(|(csrcclassname=Computer)(csrcclassname=Modem))) ldap LDAP-Read set search-path=csrcprogramname=csrc,o=NetscapeRoot ldap LDAP-Read set username= "uid=admin,ou=Administrators,ou=TopologyManagement,o=NetscapeRoot" ldap LDAP-Read set can-query=enabled ldap LDAP-Read set can-create=disabled ldap LDAP-Read set can-update=disabled ldap LDAP-Read set connections=3 ldap LDAP-Read set limit-requests=enabled ldap LDAP-Read set max-requests=12 ldap LDAP-Read set timeout=3s
所示配置包括对LDAP进行CNR写租用更新。您可能希望这样做,以使应用程序能够查询LDAP以获取当前租用信息,但应尽量避免构建应用程序,以便这是必要的。如果需要为IP地址提供有关租用状态的信息,可以使用NRCMD lease命令获取MAC地址、到期时间以及有关租用当前状态的其他信息。
LDAP目录旨在快速高效地读取,但写入LDAP目录效率低。如果将CNR配置为将租用信息写入LDAP,则LDAP会成为影响整体系统性能的瓶颈。如果必须配置LDAP租用写入,请使用建议的设置。请注意,CNR对LDAP的访问已通过使用单独的“读取”和“更新LDAP”对象进行优化。另请注意30秒的写入超时。当LDAP负载过重时,LDAP写入超时的风险会越短。然后,CNR重试写操作,这会增加LDAP的额外负载。
到LDAP服务器的连接总数不应超过可用线程的最大数量。如果LDAP服务器支持每个连接多个线程,则最佳连接数是线程总数除以每个连接的线程数。
为查找字段创建索引。
配置缓存大小以增加内存中缓存的条目数,尽管缓存不应超过可用内存的三分之一。
配置最大线程以增加可支持的并发连接数,尽管这不应超过可用资源的一半。
配置日志设置,提供足够的详细信息以识别问题,但不会生成过多的详细信息(这使得很难区分问题并给服务器带来不必要的负载)。
对日志和数据使用单独的分区。
具体LDAP服务器实施不同。请参阅您的服务器文档以实施这些建议。
定期备份CNR数据库。有关说明,请参阅用户指南。您应至少每天备份一次CNR数据库。将备份文件保留至少两周。
定期备份LDAP。
定期备份和存档日志。
对CNR进行更改后,确保故障切换场景中主服务器和备份服务器的配置保持一致。在CNR版本5.5及更低版本中使用cnrFailoverConfig -compare工具,或使用CNR 6.0及更高版本中的WebUI比较配置。
规划网络拓扑更改时,将DHCP续订和租用时间设置为小值。
监控IP地址使用情况(使用SNMP陷阱)。
监控系统使用情况(内存、磁盘、CPU和交换)。 实用程序顶部对此用途很有用。
定期查看日志以熟悉正常情况。了解正常日志可让您更快地处理问题。
定期查看日志以查找异常:grep用于“error”、“warn”或“connect”(例如,在UNIX中,使用grep -i warn name_dhcp_1_log)。
DHCP安全故障切换要求该作用域的配置设置在该作用域的主服务器和备份服务器上相同。当您更改设置时,请确保在两台服务器上都进行更改。在CNR 6.0及更高版本中定期使用cnrFailoverConfig -compare或WebUI进行检查,以确保没有差异。
网络拓扑更改或IP地址分配更改可能使客户端需要获取不同的地址。您必须计划一段时间,使子网中的某些客户端具有旧范围的地址,而有些客户端已续约并从新范围获取地址。您可以缩短更改前租用的时间,以缩短两组地址处于活动状态的时间,以便所有客户端都拥有短期租用。这可确保他们必须频繁续约租赁,因此在您做出更改后很快从新范围领取租赁。请务必不要将租用时间设置得如此短,以便在停止并启动服务器进行更改时租用已用尽。进行更改后,请务必恢复原始租用期,以免增加服务器上的负载。
解决问题的最有效方法是避免这些问题。遵循上述建议可让管理员与您的操作保持一致,并使您避免严重问题。当出现问题(例如I/O等待时间增加或内存使用率增加,原因不为人知)时,请跟进日志。查看物理环境或CNR配置的最近更改,以查看这是否是问题的根源。
CNR日志是您的朋友。当开始使用CNR、升级CNR或更改CNR配置时,请使用描述的grep命令检查日志中是否存在任何问题。然后在日志中向后查找,了解问题的出现时间和方式,并解决问题。
除非思科支持人员要求重新启动CMTS(仅适用于电缆环境)。
除非思科支持人员要求重新启动CNR,否则请勿重新启动。
除非思科支持人员要求禁用安全故障切换,否则请勿禁用。
在进行安全故障切换重新同步时,请勿以任何方式重新加载、重新启动或中断CNR。
请将日志文件复制到不会覆盖的目录。如果CNR崩溃,请将核心文件复制到不会覆盖其的目录。
请使用:
nrcmd> server dhcp getRelatedServers
以隔离安全故障切换错误配置。
请查看日志以查找异常。请特别检查启动顺序(这可能在旧日志中):grep用于“error”、“warn”或“connect”(例如grep -i error name_dhcp_1_log*)。
当您遇到问题时,在隔离和修复初始问题时不造成进一步损害至关重要。重新启动CMTS或重新启动CNR会在系统已经脆弱时立即产生负载峰值。目标是在最短的时间内使系统再次完全正常运行。上次操作计数之前经过的时间;第一次行动的时间不算。换句话说,不要为了快速行动而迅速行动。在你行动之前先想想。
开始记录系统中任何位置所执行的所有步骤和所做的所有更改:DHCP、DNS或TFTP服务器,以及对任何CMTS或电缆调制解调器所做的更改。详细描述问题并记录可观察行为。
收集日志(/var/nwreg2/logs)。 分析这些,查找错误或警告。使用文本编辑器进一步分析感兴趣的错误。从错误开始,在日志中搜索与MAC地址、IP地址或与错误关联的域名相关的所有条目。
您可能需要打开其他日志记录来诊断DHCP问题。DHCP服务器支持广泛的日志记录功能。有关日志记录选项的列表和每种选项的说明,请参阅CNR CLI命令参考。请小心,因为每条日志消息都会给服务器加载。您必须在要求CNR记录的信息量与服务器性能之间做出权衡。
问题可能与LDAP服务器有关。CNR建立到LDAP服务器的请求队列。如果LDAP服务器无法跟上负载,则队列会建立。查看/var/nwreg2/data/dhcpeventstore目录。事件存储文件的大小固定,因此,如果队列正在建立,CNR会创建更多文件。如果目录中有多个文件,则表明队列正在备份。同一队列用于将请求排入DNS服务器的队列,因此,如果队列正在备份,而您正在使用DDNS,则它可能会向DNS服务器发送请求。要确定问题是否与LDAP有关,请打开其他CNR LDAP接口日志记录。启用日志标志ldap-create-detail、ldap-query-detail和ldap-update-detail。日志消息包含时间戳,可帮助您确定LDAP是否是系统瓶颈。
如果您怀疑问题可能是一个或多个CNR内部数据库丢失了完整性,请参阅CNR用户指南了解如何运行数据库有效性检查实用程序。如果其中一个实用程序指示出问题,请继续按照用户指南中的说明进行解决。
实用程序nslookup既包含在UNIX系统中,也包含在Windows NT中。它可用于查询DNS服务器,因此在验证服务器存储的数据时非常有用。操作系统的文档提供有关其功能的详细信息。