最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
为什么Oracle RAC的HAIP地址无法启动
时间:2026-08-18 09:42:49 编辑:袖梨 来源:一聚教程网
HAIP根本没起来的首要判断依据是ifconfig -a | grep 169.254查不到ethX:1等带冒号子接口,表明初始化失败而非通信故障,需依次排查私网网卡状态、oifcfg注册、时间同步、UDP丢包(防火墙/MTU/rp_filter)及ARP可达性。
HAIP根本没起来:先确认子接口是否存在
HAIP启动失败的第一信号,就是ifconfig -a | grep 169.254查不到任何带冒号的子接口(比如eth1:1或enp0s9:1)。这说明HAIP连创建步骤都没走完,不是通信问题,而是初始化卡死。
常见原因包括:
- 私网网卡未UP或未配置IP(哪怕只是临时配个
10.0.0.1/24也行) -
oifcfg getif里没注册该网卡,或注册时子网掩码写错(例如写成/24但实际是/16) - 节点间时间不同步超过2秒,CSSD拒绝进入网络心跳阶段
UDP心跳包被静默丢弃:防火墙、MTU、rp_filter三处必查
HAIP依赖UDP多播/单播在169.254.0.0/16网段交换心跳包。只要其中一环不通,就会在ocssd.log里反复出现has a disk HB, but no network HB。
重点排查项:
-
iptables -L -n | grep -i 'udp.*1234[5-9]'——确认INPUT链没DROP/REJECT这些端口 -
ip link show eth1 | grep mtu——所有节点私网网卡MTU必须一致(推荐统一设为1500) -
sysctl net.ipv4.conf.eth1.rp_filter——值必须是0或2,不能是1(否则ARP响应被丢)
节点间HAIP地址冲突:不是IP重复那么简单
两节点ifconfig | grep 169.254看到相同地址(如都显示169.254.12.45),不等于“IP冲突”——这是HAIP正常行为。真正致命的是底层ARP广播收不到回应。
验证方法:
- 在节点1执行
arping -I eth1 -c 3 169.254.12.45(目标为节点2的HAIP) - 若超时,检查是否启用了
net.ipv4.conf.all.arp_ignore或arp_announce异常设置 - 云环境(如OpenStack)需确认Neutron是否允许
169.254.0.0/16链路本地流量透传
禁用HAIP前必须改依赖:否则ASM直接起不来
直接crsctl modify res ora.cluster_interconnect.haip -attr "ENABLED=0" -init会失败,因为ora.asm资源默认强依赖HAIP。强行禁用后,ASM实例报错ORA-481并hang住。
正确顺序是:
- 先解除ASM对HAIP的依赖:
crsctl modify resource ora.asm -attr "START_DEPENDENCIES='hard(ora.net1.network) pullup(ora.net1.network) weak(ora.cluster_interconnect.haip)' -init - 再禁用HAIP:
crsctl modify res ora.cluster_interconnect.haip -attr "ENABLED=0" -init - 最后重启HAS:
crsctl stop has && crsctl start has
注意:禁用后所有集群通信将回落到真实私网IP,务必确保这些IP本身二层可达且无ARP隔离策略——这点比HAIP本身更难排查。