APP下载

安装群集遇麻烦

2016-03-15

网络安全和信息化 2016年7期
关键词:群集管理器线程

引言:单位安装Windows 2008群集,在安装过程中出现一个问题,建AD时报错提示无法配置DNS,RPC服务器不可用。安装完成后,DNS服务器可以创建,但是DNS服务会自动关闭,查看事件日志显示DNS无法创建线程。本文介绍故障的处理方法。

故障现象

最近,单位安装Windows 2008群 集,安装环境为:两台NF8560M2+存储+2台光纤交换机。

结合项目,安装步骤大体为:a.安装操作系统,b.安装系统驱动,c.安装系统补丁,d.存储挂载和存储区域划分(仲裁+共享),e.安装存储自带的客户端程+Windows自带的多路径(I/O)功能(服务器管理→功能→新增功能),f.联机存储硬盘,添加盘符(仲裁和共享盘符通常为X和Y,可以自定义),g.群集配置(具体配置文档根据要安装的数据库可以从网上找下,重点是心跳网卡设置)。

但是,在本次安装的过程中出现了这样一个问题:建AD到最后的时候报错提示无法配置DNS,RPC服务器不可用,点“确定”和“完成”,DNS服务器可以创建,但是DNS服务会自动关闭。查看事件日志显示,DNS无法创建线程。

故障排查

经探讨验证,发现引起故障的主要原因为:在当前Windows 2003 R2 x64以及Windows Server 2008或Windows Server 2008 R2 DNS服务的代码中硬性规定了DNS线程的最大数量为120个(这个是写死在代码中的)。但是,DNS对CPU的核心数并没有作任何的限制,因此会创建超过120个线程。

具体来说,DNS服务有2个功能的线程创建是根据CPU数量来决定的,一个是DNS Dynamic update功能以及 UDP I/O and dispatch程序。在64核的机器上,它们会创建64个Dynamic update的线程和64个UDP处理线程。因此,在64核CPU的平台上,线程数量就会大大地超过限制的数量。64×2+ (64/2 or NumberOfZones ) +6 =Max 166 > 120, 因此就会报ERROR_SERVICE_NO_THREAD的错误。在32核的平台上,DNS服务就工作正常,因为它最多创建86左右的线程。32×2 +16+6=86 threads。

本项目服务器配置4路8核CPU,默认开启了超线程技术,实际32核可以模拟到64核(任务管理器→性能一栏可以查看)。

故障解决

针对故障,我们最终是这样解决的:已经确认这个是Windows DNS服务的一个Bug,我们惟一的选择是使用少于48核CPU的平台来提供DNS服务。48×2+18+6=120(我们可以通过减少AD集成的DNS区域到18个来符合线程的限制)。当然,如果我们仅用32核CPU,那就更没有问题了。

具体方法有两个:

1.点击“开始→运行”,键入msconfig,调出“系统配置”窗口,在“启动”选项里找到“高级选项卡”,更改CPU个数,改为32。

2.开机后进BIOS→A dvanced→Process&Clock→in tel HT technology,把 这个地方默认的Enable改成Disabled。

修改完成后,在“任务管理器→性能”一栏,可以看到CPU数量已经调整为32个。

猜你喜欢

群集管理器线程
基于C#线程实验探究
Cecilia Chiang, pioneer of Chinese cuisine
启动Windows11任务管理器的几种方法
应急状态启动磁盘管理器
基于国产化环境的线程池模型研究与实现
Windows文件缓冲处理技术概述
配置vCenter Server
在vSphere群集中配置EVC
浅谈linux多线程协作
基于自组织结对行为的群集机器人分群控制方法