虚拟机RAC环境配置的核心思路是:用两台配置足够的虚拟机模拟物理服务器,通过共享存储和专用心跳网络实现集群功能,安装流程与物理机基本一致,但需要在虚拟化层面对磁盘和网络做特殊处理。
下文按照准备工作、详细步骤、踩坑注意三个层次展开,所有操作路径均基于VMware vSphere 8和Oracle Linux 7.9 + Oracle RAC 19c验证,其他虚拟化平台可参照调整。
虚拟机RAC环境配置前要确认哪些硬件和软件要求?
先别急着开干,虚拟机跑RAC和单机完全不一样,它需要同时模拟出多台服务器和一套共享存储,配置前不确认好资源,后面安装成功率会大幅下降。
CPU、内存与磁盘的分配建议
Oracle RAC的每个节点都需要独立的CPU和内存资源,并且两个节点的规格要尽量一致,行业共识是,每个节点的CPU核数不少于4核,内存不低于8GB,否则Grid Infrastructure检查会直接报错。
- 内存分配:考虑ASM和Oracle实例共享内存,8GB是最低线,建议生产学习环境给到12GB到16GB。
- 磁盘规划:系统盘每个节点单独分配80GB以上,OCR和Voting Disk所在的共享磁盘至少分配20GB,数据盘按需。
- 磁盘格式:使用精简置备或厚置备均可,但厚置备延迟更稳定,对RAC这种对I/O敏感的集群更友好。
共享存储的两种常见实现方案
虚拟机RAC最难的部分是让两台虚拟机看到同一块磁盘,物理机用SAN,虚拟机上你只有两条路。
| 方案 | 实现方式 | 优点 | 缺点 |
|---|---|---|---|
| vSphere虚拟共享磁盘 | 在VMware中创建共享SCSI设备,同时挂给两台虚拟机 | 配置简单,官方支持 | 性能一般,不适合高并发生产 |
| iSCSI模拟存储 | 用一台虚拟机挂载本地磁盘,通过iSCSI目标服务共享给RAC节点 | 更接近物理SAN环境 | 需要多一台存储虚拟机,配置繁琐 |
如果你只是学习测试,强烈建议用vSphere虚拟共享磁盘,如果你要模拟真实环境,iSCSI是更正规的路径。
虚拟机RAC配置步骤详解:从创建虚拟机到集群验证
整个安装过程可以拆成四个阶段,每个阶段都有明显的验证点,别跳步。
创建两台Oracle Linux虚拟机的基础配置
创建第一台虚拟机时,操作系统选Oracle Linux 7.x 64位,内存至少8GB,网络适配器默认即可,创建完成后,不要急着装系统,先把虚拟机的SCSI控制器改成LSI Logic SAS,因为后面挂共享磁盘时需要用到。
- 第一台虚拟机装好Oracle Linux,磁盘分区留出足够空间给Oracle软件。
- 用克隆功能复制出第二台虚拟机,克隆时选择“创建完整克隆”,保证MAC地址不同。
- 修改两台主机的hostname、IP地址,这里有个强制要求:两节点的hostname和IP必须能互相解析,/etc/hosts文件要同时包含两个节点的公网IP、私有IP、SCAN IP。
配置共享磁盘与ASM磁盘组
这是整个配置流程里最容易出错的环节,共享磁盘如果没配好,后面的ASM磁盘组永远扫不到。
第一步,在vSphere中给第一台虚拟机添加一个硬盘,大小可以是20GB,然后编辑该硬盘的SCSI参数,展开“SCSI控制器”,把共享类型改为多写入器,同时勾选“共享虚拟磁盘”。
第二步,在第二台虚拟机上选择“编辑设置”,添加现有磁盘,找到刚才那块共享磁盘,控制器改成与第一台相同为LsiLogic SAS,SCSI总线共享设置为“多写入器”,这样两台虚拟机就能同时看到这块盘。
第三步,按同样方法创建另外几块共享盘,分别用于OCR、数据盘和恢复盘,建议至少三块共享盘:
- 一块10GB放OCR和Voting Disk
- 一块20GB放数据文件
- 一块10GB放FRA
启动两台虚拟机后,用ls /dev/sd检查每台机器都能看到相同数量的盘,且盘符一致,为了避免重启后盘符漂移,建议通过/dev/disk/by-path/路径绑定设备。
安装Grid Infrastructure与Oracle RAC
共享存储就绪后,先安装Oracle Grid Infrastructure,再安装Oracle RAC数据库软件。
- Grid安装:在两台虚拟机上分别解压grid安装包,启动安装程序时选择“Oracle Grid Infrastructure for a Cluster”,配置SSH互信时会要求两节点的root密码,确保ssh端口开放。
- ASM配置:在Grid安装向导中,ASM磁盘组选择你准备好的共享磁盘,扫描后设置密码,注意ASM的磁盘发现路径最好填
/dev/disk/by-path/,避免盘符混乱。 - 安装完成后,用
检查集群资源是否全部online。crsctl stat res -t
- 数据库软件安装:用Oracle用户运行安装程序,选择“Oracle Real Application Clusters”,把两台虚拟机的监听和实例都加上。
- 创建数据库:使用DBCA创建数据库,选择“Oracle RAC”选项,两个节点都要勾选,存储类型选ASM。
集群状态验证与常见错误排查
安装完成后,别以为自己就成功了,用以下命令做一遍全面体检:
crsctl stat res -t:确认所有资源都ONLINEsrvctl status database -d orcl:确认两个实例都在运行cluvfy stage -post crsinst -n rac1,rac2:验证集群完整性
常见错误集中在两类:
- 时间不同步导致ctssd进程异常,可用
cluvfy comp clocksync检查。 - 私网网卡心跳不通造成节点驱逐,检查两台虚拟机上用于心跳的网卡是否都处于同一个虚拟交换机,并且开启了“允许主动MIGRATE”选项。
虚拟机RAC配置中有哪些容易踩坑的注意事项?
很多人在虚拟机上装RAC失败,不是因为命令敲错,而是在虚拟化层埋了雷,下面这三个坑我踩过,你也大概率会遇到。
时间同步与DNS解析的坑
RAC集群对节点时间差容忍度极低,物理机上可以用NTP,但虚拟机上有个额外陷阱:vSphere的虚拟机时间同步功能会强制把系统时间拉平,导致NTP服务失效。
解决办法是:在VMware的虚拟机选项里,把“客户机时间同步”勾选去掉,然后在每台虚拟机内配置chronyd或ntpd,并确保统一指向同一个时间源,否则clusterware的ctssd会频繁报警,节点被驱逐只是时间问题。
DNS解析方面,虽然可以通过/etc/hosts绕开,但SCAN IP必须能被DNS解析,否则客户端无法连接,最佳做法是单独建一个DNS服务,或者用另一个节点的hosts加上SCAN IP,注意,/etc/hosts中不能出现主机名的短名称冲突,否则crsctl会报”Failed to determine domain”错误。
网络心跳与私有网卡的绑定设置
RAC需要两个IP:公网IP和私有IP,在虚拟机上,这两块网卡都要用VMXNET3类型,性能最好,但这里有一个VMware特有的坑:默认的虚拟交换机安全策略会允许MAC地址更改和伪传输,这对RAC私网心跳会造成干扰。
-
在vSphere中,将两台宿主的私有网络所在的端口组,安全设置里的“MAC地址更改”和“伪传输”都设为“拒绝”。
- 私网网卡不要绑定到同一块物理网卡上,最好为心跳网络单独配置一个虚拟交换机,避免公网流量争抢带宽。
- 在Oracle层面上,用
oifcfg getif确认私有网卡类型标记为cluster_interconnect,并且网卡mtu值建议改为9000(巨帧),降低心跳延迟。
Q&A:虚拟机RAC环境配置常见问题
问:虚拟机跑Oracle RAC性能损失大吗?怎么优化?
性能损失主要看磁盘I/O和内存延迟,vSphere虚拟共享磁盘的I/O性能比物理SAN低,但学习测试完全足够,优化方向有三个:使用VMXNET3网卡提升网络性能;把虚拟机内存全部提前分配(禁用内存共享);将共享磁盘的SCSI控制器设为LSI Logic SAS并启用“兼容模式”,对于个人学习环境,把数据和日志放在SSD上,就能获得相当不错的性能。
问:用VirtualBox免费虚拟机能不能装RAC?
可以,但步骤比VMware麻烦不少,Virtual Box不支持多写入器共享磁盘,你需要手动执行VBoxManage modifyvm命令开启SCSI共享,并且只支持SATA控制器下的虚拟磁盘,另一个坑是VirtualBox的网卡模式对组播支持不太好,私网心跳需要设置专门的Host-Only网络并启用混成模式,如果预算允许,直接用VMware Player或Workstation会更省心。
问:虚拟机RAC配置好之后,想要再增加一个节点,直接克隆行不行?
不建议直接克隆运行中的节点,正确做法是:关闭现有的一个节点,然后完整克隆该虚拟机,改掉主机名、IP和/etc/hosts,共享磁盘不需要动,因为Oracle Clusterware会自动识别新节点并添加投票磁盘,克隆完成后,先运行cluvfy stage -pre nodeadd检查环境,再执行addnode.sh和root.sh,整个过程最需要注意的地方是,新节点的/dev/sd盘符顺序可能与旧节点不一致,务必用by-path路径重新配置ASM参数。
虚拟机RAC配置的核心要点,总结成一句话:共享存储和心跳网络是命门,虚拟化层的每项特殊设置都必须对应Oracle的部署要求。 只要先在纸面上设计好IP、磁盘和控制器的映射关系,再按步骤实施,就能用普通PC模拟出一套可运行的Oracle RAC环境。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/611380.html





