一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

为什么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:1enp0s9:1)。这说明HAIP连创建步骤都没走完,不是通信问题,而是初始化卡死。

常见原因包括:

  1. 私网网卡未UP或未配置IP(哪怕只是临时配个10.0.0.1/24也行)
  2. oifcfg getif里没注册该网卡,或注册时子网掩码写错(例如写成/24但实际是/16
  3. 节点间时间不同步超过2秒,CSSD拒绝进入网络心跳阶段

UDP心跳包被静默丢弃:防火墙、MTU、rp_filter三处必查

HAIP依赖UDP多播/单播在169.254.0.0/16网段交换心跳包。只要其中一环不通,就会在ocssd.log里反复出现has a disk HB, but no network HB

重点排查项:

  1. iptables -L -n | grep -i 'udp.*1234[5-9]'——确认INPUT链没DROP/REJECT这些端口
  2. ip link show eth1 | grep mtu——所有节点私网网卡MTU必须一致(推荐统一设为1500
  3. sysctl net.ipv4.conf.eth1.rp_filter——值必须是02,不能是1(否则ARP响应被丢)

节点间HAIP地址冲突:不是IP重复那么简单

两节点ifconfig | grep 169.254看到相同地址(如都显示169.254.12.45),不等于“IP冲突”——这是HAIP正常行为。真正致命的是底层ARP广播收不到回应。

验证方法:

  1. 在节点1执行arping -I eth1 -c 3 169.254.12.45(目标为节点2的HAIP)
  2. 若超时,检查是否启用了net.ipv4.conf.all.arp_ignorearp_announce异常设置
  3. 云环境(如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住。

正确顺序是:

  1. 先解除ASM对HAIP的依赖:crsctl modify resource ora.asm -attr "START_DEPENDENCIES='hard(ora.net1.network) pullup(ora.net1.network) weak(ora.cluster_interconnect.haip)' -init
  2. 再禁用HAIP:crsctl modify res ora.cluster_interconnect.haip -attr "ENABLED=0" -init
  3. 最后重启HAS:crsctl stop has && crsctl start has

注意:禁用后所有集群通信将回落到真实私网IP,务必确保这些IP本身二层可达且无ARP隔离策略——这点比HAIP本身更难排查。

热门栏目