说说虚拟化上部署Oracle RAC的那点注意事项

0.概述

目前在虚拟化上部署RAC主要是以下3个场景
1是VMWARE的虚拟化(私有云);
2是国产厂商基于KVM的虚拟化(私有云);
3是公有云,由云厂商给你提供虚拟主机和虚拟磁盘。
这里我只对前2个熟悉一些,第3个我就不讲了,因为你也没啥太多可调整的空间,资源都是云厂商给你固定好的,就不要谈啥性能了。

1.vmware虚拟化上搭建RAC

CPU

CPU内存上来说,就是做好资源保障,尽量把份额调到最高。配置好预留主频大小。

内存

做到分配的内存大小=预留内存大小。

网络

使用空余的网络,单独配置1个交换机,用于RAC之间走心跳。

磁盘

可以择的是使用裸磁盘直接挂RDM给虚拟机或者是配置厚置备置零的磁盘做为ASM磁盘。
我下面的例子是用了厚置备备置零的磁盘(创建起来比较慢,因为需要分配完全的空间,但是性能最好,相比RDM稍微逊色一些)。
首先是可以编辑两台虚拟机配置高级参数,增加disk.EnableUUID=true让虚拟VMDK可以在系统里显示scsi_id。不改这个的话,用UDEV绑定SCSI_ID这种就没法操作了,因为执行

/usr/lib/udev/scsi_id -g -u -d  /dev/sdc

会获取不到值。
 

image.png


 

image.png


另1个需要注意的是,磁盘的“共享”要改为“多写入器”,且磁盘要为“独立-持久”不受快照影响。
磁盘的SCSI控制器建议是不使用默认的0,从scsi1:0开始分配磁盘。

image.png

2.是国产厂商虚基于KVM的虚拟化

这里我以H3C的虚拟化平台为例(其它几家大厂华为、深信服、浪潮的原理基本相似都是KVM)。

CPU

配置好预留主频大小,调度优先级调到高,CPU工作模式可以选为直通。
一般整机还有个单独的选项,把IO优先级调到最高。

内存

做到分配的内存大小=预留内存大小,调度优先级调到高。

网络

使用空余的网络,单独配置1个交换机,用于RAC之间走心跳,使用高速网卡。

存储

华三的官方建议是让你使用裸设备,不使用厚置备RAW虚拟磁盘。
据他们400反馈,实验室测试结果是使用裸设备,要比直接使用RAW这种厚置备性能上提升10-30%左右(华为的我也问过,也是让你直接用裸磁盘来做)。
裸盘需要在每台物理机上创建(这样方便以后RAC节点HA,当然也可以只配置所在的物理机)
在存储池界面,点添加
 

image.png


类型选择FC网络存储,并输入显示的名(建议与存储端的LUN名称对应,方便维护)
 

image.png


选中LUN的WWN,点增加,最后点完成,创建成功
 

image.png


 

image.png


他们的官方文档是建议你用ASMLIB来绑定磁盘,因为默认磁盘没有唯一标识,两个RAC节点识别到的磁盘序列号不一致。
后来沟通的结果是,也可以通过修改裸磁盘的序列号Serial,来绑定唯一值(关机修改,再开机,这点比公有云好,使用公有云做RAC的话,估计你只能用ASMLIB/RAW/或者UDEV直接绑分区名)。
这样的话,你就可以用UDEV绑定ATTR{serial}来实现磁盘绑定,替代ASMLIB。
其实你能配置明白的话,ASMLIB和UDEV都没啥毛病。
 

微信截图_20240407163936.png


修改之后可以查看两个节点的/dev/disk/by-id来确认,对应的值

微信截图_20240407164753.png

微信截图_20240407164804.png

总结

我还是不建议在虚拟化上跑RAC的,真有数据库的需求,搞几台物理机跑多好。
如果费用有限且负载不是很高的系统,可以这么部署,毕竟各家的都有亲自下场认证的,稳定性可以不用怀疑。
但是虚拟化这边资源控制不做好,是真的会影响运行情况。
比如有的小伙伴就反馈了,公有云上的RAC性能不稳定,服务商也不会承认他们的存储性能有问题(云厂商用的都是分布式存储块,你说没有延迟鬼才信,跑虚拟机没事,跑数据库那高并发上来肯定有影响)。

相关推荐

  1. ES集群部署注意事项

    2024-04-09 12:44:04       38 阅读
  2. Flink 添加 / 部署 Jar 包若干注意事项

    2024-04-09 12:44:04       48 阅读
  3. vue 事件$on,$off注意事项

    2024-04-09 12:44:04       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-09 12:44:04       99 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-09 12:44:04       107 阅读
  3. 在Django里面运行非项目文件

    2024-04-09 12:44:04       90 阅读
  4. Python语言-面向对象

    2024-04-09 12:44:04       98 阅读

热门阅读

  1. Dockerfile部署Docker项目

    2024-04-09 12:44:04       42 阅读
  2. 2024.4.9记——C++多线程系列文章(五)之死锁

    2024-04-09 12:44:04       34 阅读
  3. 【Linux】手搓shell

    2024-04-09 12:44:04       43 阅读
  4. python实现网络爬虫

    2024-04-09 12:44:04       33 阅读
  5. 从零开始精通RTSP之初识实时流协议

    2024-04-09 12:44:04       40 阅读
  6. 计算机网络---第三天

    2024-04-09 12:44:04       35 阅读
  7. SpringBoot通过token实现用户互踢功能

    2024-04-09 12:44:04       37 阅读
  8. C++:万能进制转换

    2024-04-09 12:44:04       41 阅读
  9. iOS MT19937随机数生成,结合AES-CBC加密算法实现。

    2024-04-09 12:44:04       28 阅读
  10. 头歌:共享单车之数据可视化

    2024-04-09 12:44:04       39 阅读
  11. 计算机网络-ICMP和ARP协议——沐雨先生

    2024-04-09 12:44:04       40 阅读