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

最新下载

热门教程

Oracle RAC私网网卡冗余如何配置

时间:2026-08-24 09:38:49 编辑:袖梨 来源:一聚教程网

Oracle RAC私网冗余必须使用HAIP而非bonding,因HAIP专为ocssd.bin心跳设计,仅做故障切换;若配置bonding会干扰心跳检测,导致ora.cluster_interconnect.haip异常离线且日志无明确报错。

私网网卡冗余必须用HAIP,别碰bonding

Oracle 11.2.0.2+ 禁止在操作系统层做 bonding(尤其是 mode=0mode=4),HAIP 自己管理链路切换,底层绑卡反而干扰心跳检测逻辑。常见症状是 crsctl stat res -tora.cluster_interconnect.haip 反复 OFFLINEINTERMITTENT,日志里却看不到明显报错。

  1. 物理网卡保持独立:eth1eth2 各自配同网段 IP(如 10.10.20.11/2410.10.20.12/24),不配置 bond0,不启 teamd
  2. 若已配置 bonding,必须先解绑:echo 0 > /sys/class/net/bond0/bonding/miimon,再 ip link delete bond0,最后重启网络服务
  3. HAIP 不感知业务流量,只服务 ocssd.bin 的 UDP 心跳;它也不做负载均衡,只做故障切换

oifcfg setif 必须指定正确子网,否则 HAIP 静默失效

oifcfg setif 写错子网掩码或接口名,HAIP 就不会在对应网卡上创建 169.254.x.x 子接口——而这个失败几乎不报错,ocssd.log 里只有一行 “clssnmvDHBValidateNCopy: no network HB”,crsctl stat res -t -init 却显示 ONLINE,极具迷惑性。

  1. 执行前先确认实际网段:ip addr show eth1 | grep inet,拿到精确的 CIDR(如 10.10.20.0/24
  2. 注册命令必须严格匹配:oifcfg setif -global eth1/10.10.20.0:cluster_interconnect,不能写成 10.10.20.0/24 或漏掉 :cluster_interconnect
  3. 新增第二张卡后,用 oifcfg getif 检查输出是否含两行相同网段、不同接口;若只有一行,说明第二张卡未被识别

HAIP 启动失败?先查子接口和 UDP 连通性

看到 ora.cluster_interconnect.haip 资源状态异常,第一反应不该是改网卡或重启 CRS,而是确认 HAIP 是否真被创建出来、UDP 心跳能否通。

  1. 执行 ifconfig -a | grep 169.254:没有 eth1:1enp0s8:1 这类带冒号的子接口,说明 HAIP 初始化失败
  2. $GRID_HOME/log/<hostname>/cssd/ocssd.log,搜 no network HBclssnmvDHBValidateNCopy;若出现 “has a disk HB, but no network HB”,基本锁定 UDP 层不通
  3. 验证 UDP 连通:arping -I eth1 -c 3 169.254.10.10(任一节点 HAIP 地址);失败则检查 sysctl net.ipv4.conf.eth1.rp_filter 是否为 02,不能是 1
  4. 防火墙必须放行 UDP 端口范围:12345–12350,且不能 DROP 目标为 169.254.0.0/16 的包

多路径交换机验证不能只看物理连接

配了双网卡、连了双交换机,仍发生脑裂,大概率是“伪冗余”:两块网卡实际连到同一台交换机(只是不同端口),或两台交换机共用电源/上联光模块。HAIP 切换成功 ≠ 真正跨设备容灾。

  1. 拔掉节点 A 的 eth1(接交换机 A),观察 ifconfig 是否立刻在 eth2 上生成新 HAIP;同时 tcpdump -i eth2 port 12345 应持续捕获心跳包
  2. 再拔掉交换机 A 的上联光纤,观察 crsctl check cluster -all 是否维持全部节点 ONLINE,而非节点 A 被驱逐
  3. 两台交换机必须物理隔离:不同品牌、不同供电回路、不同上联链路;严禁堆叠、虚拟化或用同一 PDU 供电

HAIP 是手段,不是目的;真正防脑裂靠的是网络心跳 + 磁盘心跳 + Quorum 三者协同。单点冗余没用,冗余必须贯穿物理链路、OS 配置、集群参数三层,任何一层断开都会让前面所有配置失效。

热门栏目