X6000 Win2003 cluster service自动启动失败案例

发布时间:  2012-12-28 浏览次数:  417 下载次数:  0
问题描述
服务器重启后,cluster service无法自己启动,依赖cluster service的数据库集群也就无法实现发生故障时的自动切换。查看日志,发现cluster service连接china域失败,如图1-1、图1-2所示。
图1-1 cluster service启动失败的报错日志

图1-2 cluster service连接china域失败的报错日志


告警信息
处理过程
排查步骤如下:
1. 采取重搭数据库集群,检查配置参数等方法无法排除问题。
2. 分析windows日志,发现NetLogon服务找不到CHINA域控,并记录一条5719错误日志,如图1-3所示。
图1-3 NetLogon服务找不到CHINA域控的报错日志

3. 手动启动cluster service成功。
4. 修改cluster service属性的Recovery策略为服务启动失败后Restart the Service,如图1-4所示。然后将服务器重启,cluster service能自动启动成功。
图1-4 配置cluster service属性

5. 综上我们可以基本确认,由于网络组件初始化的时间较长导致依赖于域帐号的服务在刚开机时无法正常启动。网络初始化部分,既包括服务器本身的网卡硬件/网络参数,也包括交换机等外部网络设置,与实际硬件与网络环境息息相关。
6. 从网络环境着手,更换网卡驱动,问题不能解决。
7. 将X6000所连接的S5328交换机carrier down-hold-time 时间改为2000ms(缺省情况下,端口up延时时间为2000ms,端口down延时时间为0ms),端口down延时2s,不要快速的响应网卡up、down,故障依旧。改为3000ms,如图1-5所示,问题解决,cluster service可以正常自动启动。分析原因: Down-Hold-Time 是交换机收到DOWN信号后,到通知软件层忽略数据包的延时,抑制端口的频繁up、down振荡。服务器在启动过程中,网卡会有短时up、down振荡,在参数为2秒时,会触发交换机认为端口Down并造成网络断连。将参数改为3秒之后,将网络触发DOWN的阀值调高。也就是如果网卡在3秒之内恢复UP,交换机的软件层将不会做出反应。
图1-5 配置carrier down-hold-time 时间为3000ms

8. 咨询微软,Windows 2008及之后的产品都可以配置某服务为延迟启动,这样cluster service可以配置在所有服务都准备完毕后再启动,启动失败的问题也将完美解决。如图1-6所示。
图1-6 配置cluster service服务为延迟启动

----结束
根本原因分析:服务器启动时网卡出现短时up、down振荡,即端口状态down----up---down----up,服务器启动比网卡启动稍快。当网卡up、down振荡时,若交换机端口down事件触发并在Down Hold Time中未恢复,导致网络状态未准备好,使OS服务启过程中无法从网络连接到AD进行认证,从而导致Netlogon service启动失败,cluster service也就无法自动启动。
根因
在OS启动过程中,网卡物理信号不稳定,且缺省情况下,交换机上报down事件的延时时间为0ms,对网卡down事件敏感,将不稳定的网卡端口立即down,导致端口的up、down振荡,使OS服务启过程中无法从网络连接到AD进行认证,从而导致cluster service启动失败。
建议与总结
方法一、见关键过程的排查步骤4。建议优先选择该方法。
方法二、使用开机脚本,使群集服务可以在所依赖的服务准备完毕后再启动。这种方法可以避免群集服务在启动失败后报出的事件错误日志。
方法三、OS使用Window2008及之后的版本,配置cluster service为延迟启动。
方法四、将问题服务器业务平面所连交换机的端口的参数carrier down-hold-time改为3000ms。
1.5 经验总结、预防措施和规范建议
无论在Windows 2003或者Windows 2008上,已经有了不止一种解决方法。所以建议在Windows 2003服务器上选择方法一或方法二规避问题,在Windows 2008服务器上选择方法三可完美解决问题。

END