Troubleshooting CRS start fail when Private IP using 169.254.*.* due to HAIP drop route table
Oracle RAC众所周知通常需要PUBLIC和Interconnect network两个网络,当然从12c使用FLEX ASM可以增加ASM network, 而interconnect network也就是private network在11g r2后可以配置多个网卡,引入了haip实现了private networkIP的HA, 以169.254.*.*的随机IP绑定在private network网卡上。169.254因为是一个保留网段, ORACLE RAC在获取HAIP时有判断是否已使用防止IP冲突,但是最近一有个客户RAC一个节点CRASH后,private network无法互相ping通,结果发现private network安装初期使用的也是169.254.9.*。
观察主机上route table的变化, 环境 ORACLE RAC 11.2.0.4 on linux 6
操作系统启动,未启动CRS时
[root@rac1 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.110.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0 169.254.9.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 0.0.0.0 192.168.110.1 0.0.0.0 UG 0 0 0 eth0
启动CRS后
[root@rac1 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.110.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1 0.0.0.0 192.168.110.1 0.0.0.0 UG 0 0 0 eth0
Note:
原169.254.9.0(for Private IP) 会自动和169.254.0.0(for HAIP)合并,即使手动填加route table
当手动关闭一个节点的CRS后
[root@rac2 ~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.110.0 * 255.255.255.0 U 0 0 0 eth0 default 192.168.110.1 0.0.0.0 UG 0 0 0 eth0
Note:
原169.254的priate network 路由表也会补清理
从日志中也能发现
ohasd orarootagent log shows haip agent removing HAIP route. "Removed unused HAIP route 169.254.0.0 / 255.255...."
是CRS触发清理掉了HAIP 所用的route table, 但未曾想到private ip也使用的该route table。 但未记录存活节点的route table,不确认会何node2 OS 重启后集群依旧无法正常。 彻底解决这问题是改掉private network不使用169.254.如使用192.168.10.*
oifcfg setif -global bond1/'192.168.10.0':cluster_interconnect --只在存活的一个节点做就可以 crsctl stop crs 所有实例 OS层 改网卡ip crsctl start crs oifcfg delif -global bond1/'169.254.9.0' -- 只在存活的一个节点做就可以
对不起,这篇文章暂时关闭评论。