RAC集群中VIP2是绑定在数据库实例上的虚拟IP,用于保障节点故障时的业务无缝切换,当出现VIP2异常转移到其他节点的情况时,会打乱原有的资源部署规划,甚至引发业务访问异常,需要及时处理。

VIP2异常转移的常见原因
要解决问题首先得明确根因,VIP2异常转移通常和以下几类情况相关:
- 网络层面故障:比如VIP2所在的网卡出现丢包、链路中断,或者交换机端口异常,导致集群检测到网络不可达触发VIP漂移
- 资源配置冲突:VIP2的子网掩码、网关配置和集群其他资源不匹配,或者和同网段其他设备的IP存在冲突
- 集群组件异常:CRS、OHAS等集群管理组件出现故障,误判节点状态触发资源迁移
- 手动操作失误:运维人员误操作执行了资源迁移命令,或者修改了集群资源配置导致VIP2被动转移
问题排查步骤
1. 检查VIP2当前状态
首先通过集群命令查看VIP2的实际绑定位置,确认是否已经发生转移:
# 查看所有VIP资源的状态 crsctl stat res -t | grep vip # 查看VIP2的详细配置和当前运行节点 srvctl status vip -i VIP2
2. 定位转移根因
根据状态检查结果,结合集群日志进一步定位原因:
- 如果是网络问题,可以查看对应节点的网卡状态,检查
/var/log/messages中的网络报错信息 - 如果是组件问题,查看CRS的日志路径
$GRID_HOME/log/节点名/crsd/crsd.log,搜索VIP2相关的错误记录 - 如果是配置问题,对比VIP2的配置和其他正常VIP的配置,检查子网、网关是否一致
VIP2回切操作步骤
1. 确认目标节点状态正常
在将VIP2回切到原节点前,需要先确认原节点的集群服务、网络状态都正常:
# 检查原节点集群服务状态 crsctl check cluster -all # 检查原节点网卡和VIP2网段连通性 ping -c 3 目标网关IP
2. 执行VIP2回切
使用srvctl命令将VIP2迁移回原节点:
# 停止当前运行在其他节点的VIP2资源 srvctl stop vip -i VIP2 -n 当前运行节点名 # 将VIP2启动到原节点 srvctl start vip -i VIP2 -n 原节点名 # 确认回切结果 srvctl status vip -i VIP2
3. 验证业务连通性
回切完成后,需要验证VIP2的连通性,确认业务可以正常访问:
# 从其他节点ping VIP2地址 ping -c 3 VIP2的IP地址 # 尝试通过VIP2建立数据库连接 sqlplus 用户名/密码@VIP2的IP:端口/服务名
预防措施
为了避免VIP2再次出现类似异常转移,可以做好以下优化:
- 定期检查集群网络状态,避免网卡、交换机出现单点故障
- 配置VIP时严格统一子网、网关参数,避免和同网段其他IP冲突
- 修改集群资源配置前做好备份,避免误操作触发资源迁移
- 定期巡检集群组件日志,及时发现潜在的组件异常问题