阿里专有云3.6.1版本云上rac安装节点驱逐问题

  • 问题描述

在某专有云3.6.1版本的客户现场安装Oracle rac安装的过程当中,在节点组播正常测试通过的情况下,依旧发生节点驱逐的情况发生;
由于云上采用共享存储以及havip产品的使用的情况下,对于Oracle的11.2.0.2版本以后需要确认使用priv网络ip设置cluster_interconnect来替代169心跳网络特性;
但是按照云上Oracle rac商业输出方案进行常规的配置安装以后,以后依然发生节点驱逐的情况发生;
报错截图如下:
图为在二节点执行root.sh脚本的时候报错节点通信失败,报错退出;
阿里专有云3.6.1版本云上rac安装节点驱逐问题
从报错看是cssd进程没有启动导致;
检查ocssd.log日志如下超时信息:
阿里专有云3.6.1版本云上rac安装节点驱逐问题
网络节点通信超时,节点退出;root.sh脚本执行失败,grid集群安装失败;

  • 问题排查

由于对于专有云网络侧的不了解或者未知问题的了解,故而按照常规思路考虑对于节点驱逐的情况,一般是由于组播未通信或者cluster_interconnect参数未设置导致;
但是经过测试组播通信无误,并使用mcasttest测试以后结果显示也是组播没有通信出现问题;
阿里专有云3.6.1版本云上rac安装节点驱逐问题
对于42424端口的multicast是successded;
然后alter system set cluster_interconnect参数也是设置了priv的两个ip地址;
并进行多次测试以后问题依旧;
由于对于priv通信支持的是udp的包体通信,且经查询mos以及咨询原厂同学确认;
Network Protocols and Real Application Clusters (文档 ID 278132.1)
这个mos里边提到去掉Oracle typically recommends Infiniband (RDS)以外,Linux操作系统支持的udp协议;
心跳是udp通讯,必须用支持tcp的交换机;
阿里专有云3.6.1版本云上rac安装节点驱逐问题
阿里专有云3.6.1版本云上rac安装节点驱逐问题
因此怀疑是否是对于私网网络的MTU的包体通信过程中超过了MTU的大小导致的问题,故而进行了关闭UFO参数的操作来确认该问题;
经过关闭UFO,然后进行测试如下:
Eth0和eth1都需要关闭
ethtool -K eth1 ufo off
阿里专有云3.6.1版本云上rac安装节点驱逐问题
阿里专有云3.6.1版本云上rac安装节点驱逐问题
然后再次执行安装grid集群,二节点执行root.sh成功;
阿里专有云3.6.1版本云上rac安装节点驱逐问题
两节点的ocssd.log日志输出正常如下,有私网通信包体的发送;
阿里专有云3.6.1版本云上rac安装节点驱逐问题

  • 问题解决

因此临时解决的方式就是对于关闭UFO,设置/etc/rc.local开机自启动;
阿里专有云3.6.1版本云上rac安装节点驱逐问题

  • 根本原因

对于根本原因经过最后确认如下:
专有云环境libvswitch版本存在bug,单元udp大包,报文>mtu,可能会checksum算错的情况。目前已知的影响是oracle rac的部署,先临时通过关闭ufo的方式解决,但存在后期运维风险。最终的解决方案是升级libvswith版本,理论上是对整体集群不影响。
升级考虑使用hotfix的修复,但是对于UFO的设置,Linux官方后续的版本即将废弃,判断可能影响并不大,有兴趣可以关注!!!

上一篇:举个栗子:专有云MaxCompute创建TableStore外部表


下一篇:基于阿里云官方Flink滚动窗口测试示例完善篇