怀疑私网网卡多播问题导致crs无法正常启动

一个 rac 只能启动一个节点 crs 的问题,目前怀疑是多播问题造成。

创新互联建站是一家专业提供普陀企业网站建设,专注与成都网站制作、网站设计、HTML5建站、小程序制作等业务。10年已为普陀众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。

前几日在历史库测试 PSU 升级,在完成一个节点软件升级后对第二节点 GI 进行升级时, CRS 可以正常成功关闭,之后报出了 Error : The opatch Applicable check failed ,于是尝试重新启动 CRS ,但很明显 CRS 无法正常启动。

  怀疑私网网卡多播问题导致crs无法正常启动

通过日志查看,发现 CRS-5818:Aborted command 'start' for resource 'ora.cssd'. 在启动 CSSD 资源无法成功,并且从当前的进程情况可以确认 CSS 存在问题。

怀疑私网网卡多播问题导致crs无法正常启动

于是从当时的 CSSD 日志可以看出, CSSD 在启动时,在准备与远程节点的过程中创建本地通信接口时失败了,具体的日志分析如下:

 

  1. 从 gpnp profile 中获取集群的私网信息。

怀疑私网网卡多播问题导致crs无法正常启动

2. 以下开始准备和远程节点通信,并 created local interface for node 'nghis-db2', 但在进行绑定 endpoint (localAddr 'mcast://224.0.0.251:42424/192.169.1.40') 失败了,该本地地址为一个 mcast 地址。

怀疑私网网卡多播问题导致crs无法正常启动

当时看到 No buffer space available (74) ,认为是怀疑是 udp_sendspace 和 udp_recvspace 不够大,查询发现分别为 65536 和 655360 ,这实际应用是足够了。不出意料,将该两个参数调大之后重启 CRS 依然无法解决,而在 MOS 上关于该错误的大部分都指向了 BUG,11gR2 Grid Infrastructure Node May not Join the Cluster After Evicted With Error sgipcnUdpSend "No buffer space available (74)" ( 文档 ID 1352887.1) 。

但当前的现象与该文档描述不符合,

当前的操作是 sgipcnMctBind

怀疑私网网卡多播问题导致crs无法正常启动

文档中的是 sgipcnUdpSend

  怀疑私网网卡多播问题导致crs无法正常启动

3. 更新接口状态,依然无法创建本地接口,即无法与远程节点通信,于是执行了 disable interface 并 clean disabled insterface

怀疑私网网卡多播问题导致crs无法正常启动

4. 重新开始 add interface ,但仍然失败。

  怀疑私网网卡多播问题导致crs无法正常启动

5. 之后连续每隔 1 分钟报出了 has a disk HB, but no network HB ,说明此时私网上应该出现了联通性的故障。

  怀疑私网网卡多播问题导致crs无法正常启动

于是我们测试了私网地址的联通是否有问题,使用 traceroute 检查,然而并没有联通性问题。

怀疑私网网卡多播问题导致crs无法正常启动

于是就很不理解了,在心跳网卡既然没有问题,为何无法检测到网络心跳。此时问题应该还是出现在以上出现 No buffer space available (74) 的 gipcmodNetworkProcessBind 的过程,对比了节点 1 正常启动 gipchaWorkerCreateInterface 的过程,一共添加了 4 个地址:

1. udp://192.169.1.39:13034    ------ 私网地址

2. mcast://224.0.0.251:42424/192.169.1.39 ----- 多播地址

3. mcast://230.0.1.0:42424/192.169.1.39  ----- 多播地址

4. udp://192.169.1.127:42424         ------- 广播地址

怀疑私网网卡多播问题导致crs无法正常启动

很明显节点 2 在以上的过程中应该是在添加第二个地址,多播地址 mcast://224.0.0.251:42424/192.169.1.40 时出现了问题。

通过多播检测工具检测私网网卡的多播地址联通性,发现都是检测失败,而测试节点 1 的是成功的,于是怀疑问题应该是出现在节点 2 的多播地址上。

  怀疑私网网卡多播问题导致crs无法正常启动


有怀疑是 HAIP 问题,于是尝试将 HAIP disable 掉,并将私网网卡上的 169 ip 依然无法解决。

禁止 haip 命令:

oracle/app/11.2.0.4/grid/bin/crsctl  modify res ora.cluster_interconnect.haip -attr "ENABLED=0" -init

最后同事提议使出杀手锏 --- 重启主机,由于这套库是历史库,没有实时的业务,确定无影响后就进行了重启主机,重启主机后 CRS 能正常启动, CSS 也正常通过过了 gipchaWorkerCreateInterfac 步骤。

 

再次检测私网网卡的多播地址联通性,这次是成功了。

怀疑私网网卡多播问题导致crs无法正常启动

至此,问题解决了,但因为是通过重启主机解决,始终感觉这并不是最终的原因。多播检测不通,是否意味着网络确实是存在问题?这点也不敢断论。


本文标题:怀疑私网网卡多播问题导致crs无法正常启动
标题来源:http://myzitong.com/article/jspscc.html