导读:本期聚焦于周翰文创作的《Oracle RAC集群HAIP是什么?如何配置与安全移除HAIP详解》,敬请观看详情。HAIP是Oracle RAC 11.2.0.2之后引入的高可用私有网络机制,通过在私有网卡上虚拟出169.254.x.x网段的IP地址,实现私有网络链路的负载均衡和故障切换。本文围绕HAIP的工作原理展开,先介绍它在集群 interconnect 通信中的作用以及地址分配规则,再给出常见场景下HAIP的配置与验证方法,包括多块私有网卡的 bonding、HAIP数量限制、ocrdump 检查等操作步骤。针对升级网卡、更换交换机或迁移到更大网段时必须移除HAIP的情况,详细说明通过关闭Grid Infrastructure、修改CLUSTER_HIGH_SPEED_IP 参数、清空HAIP资源等完整流程,并提示移除后需要重启集群以及常见的报错处理办法,帮助DBA平稳完成HAIP的调整与下线操作。

Oracle RAC集群的节点间通信依赖私有网络,也就是大家常说的 interconnect。从11.2.0.2版本开始,Oracle引入了HAIP(Highly Available IP)机制,允许集群在最多四块私有网卡上自动虚拟出一组169.254.x.x网段的IP地址,用于承担实例间的数据块传输和缓存融合通信。HAIP的出现解决了早期版本只能靠操作系统层面的bonding来实现私有网卡冗余的问题,但在实际运维中,很多场景又需要将HAIP移除,比如私有网络更换为InfiniBand、网卡做了操作系统级别的绑定,或者集群需要迁移到新的网段。本文将系统讲解HAIP的原理、配置验证以及完整的移除步骤。

Oracle RAC集群HAIP是什么?如何配置与安全移除HAIP详解

HAIP的工作原理与地址分配规则

HAIP的核心思想是利用链路本地地址段169.254.0.0/16。当Grid Infrastructure启动时,ohasd进程会为每块配置为私有网络的网卡分配一个固定编号的HAIP地址,编号从169.254.x.1开始。Oracle在内部维护了一个地址池,即使集群重启、节点重启,只要私有网卡的数量和顺序不变,每个节点的HAIP地址保持稳定,这一点非常重要,因为CSS的互联通信、GES/GCS资源都和这些地址绑定。

Oracle最多支持四块私有网卡参与HAIP,也就是说最多会虚拟出四个HAIP地址。当配置了多块私有网卡时,网格基础架构会在这些网卡之间做负载分担,某块网卡故障后,其上的HAIP会自动漂移到其他存活的网卡上,实现秒级切换。可以通过以下命令查看当前HAIP的分配情况:

# 查看集群中HAIP资源的在线状态
crsctl stat res -t -init | grep -A2 ora.cluster_interconnect.haip

# 在操作系统层面查看私有网卡上的169.254地址
ip addr show eth1
# 输出中会看到类似 inet 169.254.88.1/16 scope link global eth1

# 确认各节点使用的互联地址
oifcfg getif

需要注意,169.254网段是保留的链路本地地址,不要手工去修改或删除这些地址,否则可能导致节点被驱逐。另外,通过oifcfg getif看到的cluster_interconnect网卡列表,就是HAIP赖以工作的基础,如果网卡没有被识别为私有网络,HAIP不会在其上分配地址。

HAIP的配置与验证

在标准安装的Grid Infrastructure中,安装程序的集群网络配置页面会区分Public和Private网卡,被标记为Private的网卡会自动启用HAIP,无需手工干预。如果是在安装完成后调整私有网卡,需要使用oifcfg工具。例如新增一块私有网卡eth2:

# 将eth2添加为集群私有网络
oifcfg setif -global eth2/192.168.10.0:cluster_interconnect

# 删除旧的私有网卡定义(按实际情况操作)
oifcfg delif -global eth1/192.168.0.0

# 使配置生效需要重启所有节点的Grid Infrastructure
crsctl stop crs
crsctl start crs

验证HAIP是否生效,最直接的方式是查询数据库内部的互联地址。以sysdba登录后执行下面语句,返回的IP应当是169.254开头的地址:

SELECT inst_id, name, ip_value
FROM gv$cluster_interconnects
ORDER BY inst_id;

-- 也可以从gv$instance查看
SELECT inst_id, host_name, instance_name FROM gv$instance;

如果查询结果显示的是物理网卡的实际IP而不是169.254地址,说明HAIP没有被使用,常见原因是CLUSTER_HIGH_SPEED_IP参数中残留了旧配置,或者数据库使用了指定的互联地址。此时要检查clusterware的参数文件和数据库参数cluster_interconnects,后者一旦被显式设置,数据库会绕过HAIP,直接使用指定地址。在正常情况下不建议设置cluster_interconnects,让数据库自动使用HAIP才能获得链路故障切换能力。

HAIP移除的完整流程

当私有网络做了操作系统层的绑定,或者更换为InfiniBand等不需要HAIP的架构时,就必须将HAIP移除。移除操作要严格按顺序执行,核心步骤是:停止集群、修改存储在OCR中的HAIP配置、重启节点。在停止所有节点的Grid Infrastructure之前,先确认没有任何业务依赖:

# 在所有节点上以root执行
crsctl stop crs

# 以grid用户确认所有节点已停止后,检查OCR中的HAIP配置
ocrdump -stdout -keyname SYSTEM.css | grep -A5 high_speed

接下来清除HAIP配置。最常用的方式是使用Grid Infrastructure安装介质中gridSetupCmd(老版本为runInstaller)提供的命令,也可以直接修改OCR中的CLUSTER_HIGH_SPEED_IP条目。官方推荐做法如下:

# 进入grid用户的安装目录下的crs/install
cd $ORACLE_HOME/crs/install

# 老版本11g中使用rootcrs.pl相关脚本前,先备配OCR
ocrconfig -manualbackup

# 清空HAIP的地址定义(在任一节点以root执行)
# 方式一:使用crsctl修改init参数
crsctl delete css parameterfile CLUSTER_HIGH_SPEED_IP -f

# 部分版本使用
crsctl delete css parameter CLUSTER_HIGH_SPEED_IP

清除配置后,还需要处理HAIP资源本身。ora.cluster_interconnect.haip是集群初始化层面的资源,正常情况下无法单独删除,当OCR中的地址定义被清空后,该资源在下次启动时会因没有可管理的地址而不再分配IP。重启第一个节点时观察alert日志和ohasd日志:

# 启动并观察日志
crsctl start crs
tail -f $GRID_HOME/log/`hostname -s`/alert.log

# 确认私有网卡上不再有169.254地址
ip addr show | grep 169.254

节点依次重启完成后,用gv$cluster_interconnects再次验证,此时数据库的互联地址应当变为私有网卡的物理IP。如果节点无法启动或HAIP资源报错,多半是OCR中的条目没有清理干净,可以再次执行ocrdump检查SYSTEM.css节点,必要时用ocrconfig恢复之前的备份回退重来。移除HAIP之后,私有网络的冗余就完全依赖操作系统层面的bonding或交换机堆叠,一定要提前把网卡绑定方案配置好并测试故障切换,避免出现单点故障。

常见问题与注意事项

第一个常见问题是移除HAIP后节点间无法通信导致节点被驱逐。这通常是因为私有网卡的物理IP规划有问题,比如两个节点使用了不同网段,或者防火墙拦截了新的互联端口。在重启集群之前,务必用ping和ssh双向测试所有节点的私有地址。

第二个问题是误操作HAIP导致的CSS重启失败。有人在节点在线状态下直接ifconfig删除了169.254地址,结果CSS心跳检测失败触发节点驱逐,严重时整个集群重启。切记所有HAIP的调整都必须在Grid Infrastructure完全停止的状态下进行,并且要在维护窗口内操作。

最后一点,从12c开始,如果使用了冗余互联方式或者Flex Cluster架构,Oracle更推荐通过操作系统或交换机层面的冗余替代HAIP,新版本安装时甚至不再默认启用。如果你的环境是12c之后的版本,先通过ocrdump确认环境里是否真的存在HAIP再决定是否清理,避免做无谓的操作。操作前做好OCR备份,是所有集群变更工作的底线,一旦出问题可以快速回退到变更前的状态。

Oracle RACHAIP集群私有网络修改时间:2026-09-11 07:38:38

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/0911/54550.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。