Oracle 远程 RAC 打造双活数据中心 | 从容灾迈向双活案例分享
Posted 云和恩墨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 远程 RAC 打造双活数据中心 | 从容灾迈向双活案例分享相关的知识,希望对你有一定的参考价值。
本文来自于本周四云和恩墨大讲堂李建国老师的分享。
内容:对于企业关键业务而言,信息系统可靠性是关键。各行业关键 IT系统因为系统故障导致服务中断的事件仍然时有发生,近年来有一些银行 IT 系统,虽然建有两地三中心布局,但仍然有业务中断服务的现象。灾备在企业级数据中心已经是标准配备,但在实践中还是有不少缺陷。如切换时间过长、容灾演练不足、关键时刻不能打开灾备数据库等。
在这个主题中,将和大家分享如何用双活数据中心解决上述缺陷,以及 Oracle Extended Distance Cluster 实现双活的实践案例,在实践中需要注意的问题。
我们都知道,容灾系统是指在相隔较远的异地,建立两套或多套功能相同的 IT 系统,互相之间可以进行健康状态监视和功能切换,当一处系统因意外(如停电、UPS 故障、空调故障、火灾、地震等)停止工作时,整个应用系统可以切换到另一处,使得该系统功能可以继续正常工作。
传统存储复制容灾架构:
还有 DG 容灾架构:
根据现有技术,如果流程顺畅的话,切换时间为5分钟到1小时左右。
在现有容灾系统运作模式下,很多企业在灾备流程中有一个上报领导批准的环节,甚至有些企业还有一个发布公告的流程。因此,在实际运作中,真正的切换时间将会更加漫长。
近几年就有过银行、运营商出现生产数据库故障,灾备中心未能及时切换的案例。给客户和社会带来较大的影响,也引起银监会、运营集团公司的关注及通报。
近年来,互联网企业云计算、大数据风起云涌,传统企业在市场压力下,也面临着利用新技术,更好的服务用户与市场的迫切要求。
ORACLE 远程 RAC 架构图:
本人手绘中文版:
接下来我们将以某省移动运营商为例,介绍其是如何从传统灾备系统建设迈向双活数据中心的。
方案背景
问题提出
2014年6月,XX移动接到集团业务连续性检查要求,需要上报容灾演练的时间和方案。由于该公司正在和开发商一起做核心业务系统改造。如果按传统方式,先把新系统改造上线,再搭建容灾系统,在本年度完成这两个大项目有一定的困难。
另外,目前中国移动集团对容灾系统 RTO 要求为30分钟,对应急系统的 RTO 要求为15分钟。虽然传统的容灾系统、应急系统架构在应对晚上演练检查能够勉强满足要求,但当白天业务高峰出现真正的故障需要切换时,却发现有各种问题,比如切换过慢,部分接口不同步等。即使勉强切换成功,也是带“伤”运行,很多业务功能和接口也不能跑通。当切换回生产数据库时,也有一大堆工作要做。
应对方案
针对这种情况,我提出了新业务系统改造上线与 ORACLE 远程 RAC 双活一起建设,既可解决容灾系统建设时间不足,也可解决传统方案容灾、应急切换过慢的问题。为了解决误删除数据等人为故障,后期建设 ADG+Flashback DB,这样可保证整个基础架构高枕无忧。
方案 PK
提到双活,一个绕不过的词就是 EMC VPLEX.
Vplex 是 EMC 推出的一款企业级云存储设备,主要解决企业异构存储迁移、相互备份、高可用,以及两地数据中心数据同步、高可用等相关问题,大体分为:
VPLEX Local 提供数据中心内部的高可用
VPLEX Metro 同步数据的高可用,延时在 5ms 内
VPLEX Metro 异步数据的高可用,延时在 50ms 内
所谓的“扩展 ORACLE RAC",也就是我说的远程 RAC。
本项目中,也有人提出 ORACLE 远程 RAC 是否需要采购 VPLEX。经过仔细的对比分析,就 ORACLE 数据库的双活来看,是不需要 VPLEX 等存储双活方案的。其实,加入 VPLEX,会对远程 RAC 带来更大的风险,就是所谓”费力不讨好“。
引入 VPLEX 会引发下列问题:
1. 串联引发的性能问题
当时 PK 时,有另外一个省级移动公司的 VPLEX 测试报告:
本地存储
FC ping 延时:
received reply from XXXXX: 12 bytes time: 447 usec
远程存储:time:1059 usec
主机直接访问磁盘阵列 3.7-3.8ms
主机通过 VPLEX Local 访问磁盘阵列 4.5-4.8ms
主机通过 VPLEX Metro 访问磁盘阵列 4.6-4.9ms
结果表明,就是算本地存储,经过 VPLEX 后,会增加 1ms 左右的延时,如果采用 ASM技术,这 1ms 是可以省下来的。
2. 串联引发的可靠性问题
再好的电子设备,也是会坏的,当 VPLEX 集群中有一台 VPLEX A 设备损坏,将会导致A数据中心的数据库节点不可用,另外一个数据中心B会有5秒的 IO 锁定!
由于B中心 IO 锁定5秒,如果是一个每秒10000笔事务的数据库,B中心的数据库节点将会有50000个 ACTIVE 会话,这将撑爆B中心数据库的连接,导致两个数据中心完全不可用!!
更麻烦的是软件 BUG,如果出现 VPLEX 存储集群方面的 BUG,也是一大隐患。
3. 因加上存储双活后,将会出现集群争斗问题(the Dueling Cluster Framework Issue).
什么是集群争斗问题呢?
此问题过程简单描述如下:
① 数据中心间链路出现问题
② 存储集群选择驱逐数据中心 A
③ ORACLE GI 选择驱逐数据中心 B
④ 数据中心 A, B 都不能提供服务!!!
因为 ORACLE RAC 心跳 IP 网络与 VPLEX Witness 的 IP 网络不完全一致,当 IP 网络出现故障时,就有可能出现驱逐行为不一致的情况。
虽然厂商称可以和 ORACLE CRS 保持一致,但由于实际情况实在是太复杂,加之 ORACLE 版本、补丁升级,就会导致不一致的现象出现,发个图给大家感受下:
这么多种情况,要想做到完全驱逐机制一致,是不太可能的。
4. VPLEX LICENSE 有容量限制
客户今年买的是 10TB 容量 LICENSE,明年业务量增长了,还得走采购流程,购买 LICENSE,现在的市场环境,动不动搞秒杀活动,数据量蹭蹭的往上涨,到时核心眼看着有磁盘容量,就是没有 LICENSE 用,也是很郁闷的。
我去!那 VPLEX 是不是白买了?
不会,如果您是土豪钱多,买了 VPLEX 用途也是大大的。比如说用在中间件上面。
传统架构的容灾,主要关注的是数据库的数据同步问题,忽略了中间件、应用程序、MQ 的同步。尤其是一些定制化的接口,会有一些TXT或特定格式的文件落在某个被人遗忘的角落。这也是一些领导在关键时刻不敢切换到容灾环境的真正原因!
如果10年前有了 VPLEX、LAN 大二层、ORACLE 远程 RAC 技术,我估计自己做梦都会笑醒。因为我那时负责容灾项目,经常被老板问:“你的容灾敢真正切换吗?” 说实话,心里真没底,就是因为应用版本,接口,MQ 等各种问题,裸光纤也太贵,不敢用。
有了 VPLEX,可以结合 VMWARE VMOTION\HA、中间件、MQ 集群等技术。当故障发生时,迅速将中间件、MQ 等切换到异地。
再也不用担心应用程序版本不是最新。
再也不用担心配置 XML没有及时更新。
再也不用担心 MQ 中的交易队列数据丢失在发生灾难的数据中心。
再也不用担心某个被人遗忘的接口 TXT 文件丢失在服务器的本地硬盘。
......
总之,有了双活的数据中心,妈妈再也不用担心我的容灾切换啦!
真正的双活,机器随便宕!
这么好的东西,为什么用的人这么少呢?原因有很多:
一是这些技术成熟时间也不长
二是 ORACLE 没有商业利益,没有用心推广
三是很多人担心网络不稳定,会搞挂系统
四是担心网络成本
成本问题
下面我讲下大家关心的网络成本问题。
做双活,得有裸光纤,还得有波分设备。以深圳为例,裸光纤月租 750元/公里/月,750元*20公里=1.5万.
上图中就是传说中的波分设备,现在叫 OTN。小客户用华为 OSN 1800就足够,10万左右搞定;大客户可以用 OSN 6800,50万元左右搞定。当然,本客户是运营商,现成的 OSN 8800,不用额外花钱。还有裸光纤一次性施工费10万左右,网络链路费用全部搞定了。是不是比想像中的费用低很多?
附录
分享人简介
李建国:现任云和恩墨华南区技术总监
有超过15年的软件开发、设计、数据库管理、数据中心管理经验,专注于高性能、高可用的企业 IT 架构设计、实施与运维管理。
持续关注数据中心容灾、高可用10余年。
擅长 Oracle 数据库性能优化。
对基于 Oracle 的容灾体系、Extended Distance Cluster 有深入的研究和实践。
Q & A
1. 在人力和资源都充足的情况下,这整个搞好,需要多久?大概费用多少?
答:本案例客户花了3个月左右,费用要看情况,几十万到几百万不等。总体来说,远低于EMC VPLEX 方案。
2. 远程 rac 是通过网络同步数据的?
答:是 RAC ASM 通过 FC SAN 网络同步数据
3. 远程 RAC 和 extend RAC 不是一回事吧?
答:就是 Extended RAC,因为太绕口,所以称之为"远程 RAC",估计名字拗口,也是这项技术推广不利的一大因素。
4. 如果我现在两个机房的都是 RAC,这两组 RAC可以建立一组 RAC 吗?
答:可以。需要大二层网络,SAN 打通,距离不超过 50 公里。
5. 双活 rac 与单活 rac 有什么区别,除了网络上?
答:还需要有双份存储,双机房。
6. 生产系统配置 flackback DB,闪回日志是否需要占用大量存储空间?
答:建议在 ADG 上开启。
7. Oracle 官方不是不建议这么做吗
答:ORACLE 没有商业 LICENSE 利益,反而会带来后期服务的麻烦,所以不太推这项技术.
8. 跨机房的距离一般多少公里?
答:业务量非常小的系统,比如 100TPS 左右,100公里问题不大,3000左右 TPS,30-50 公里;10000 以上 TPS,20公里。带宽方面,根据业务情况来看,基本上都需要裸光纤,加上波分、OTN 设备,成本不高。
9. 远程 RAC,对 IP 网络和 SAN 网络的要求分别是什么?
答:在上述距离内,采用10万-50万左右的 OTN (波分)设备,在波分设备上再架设通用的 IP 网络和 SAN 网络。此方案完全可以搞定网络带宽和延时要求。
10. 必须有第三位置的心跳盘才能解决脑裂问题?
答:是的,如果预算有限,仲裁盘一般选在生产机房第三个存储。
11. 远程 asm mirror 网络出现性能问题,对两端存储同步及数据库性能会有多大影响及应对措施?
答:这个一般是光纤抖动造成的,OTN 设备可以自动倒换,倒换协议要求时间为50ms以内,只要设计合理,是完全没有问题的。我相信各位都见过 AWR 报告中 IO 好几百毫秒的情况,那还是平均值。
12. SQL Server 和 Oracle 比起来,在企业级数据库建设方面最大的劣势是什么?是不是运行的效率方面?
答:SQL SERVER:效率、OS平台、锁机制、故障排错机制、生态环境,这些都是劣势。
13. 可能会踩到哪些坑?
答:机房间 RPR 倒换。在业务量大的系统中,光纤RPR倒换确实会引发一些问题,比较说LOG FILE SYNC 事件,ACTIVE SESSION 过高,这个业务量大是指超过 5000TPS 以上,这种数据库除了运营商,其它地主是非常少见的。就是算是业务量大的系统,通过合理的 OTN,FC SAN,主机参数设置,也是可以规避开的,因为协议规定是 50ms,加上上面各层,100ms 切换完成,数据库也是没有问题的。
14. 您讲的业务量大,redo 每秒大概会有多少 MB 呢?
答:REDO 10MB /s,案例中提到的运营商客户运行一年半了,没有因为网络方面遇到过问题,大部分证券,银行,基金的每秒交易量,是运营商交易的10分之一以下,所以以上类似的双活系统是完全没有问题的。
15. 主机直接访问磁盘阵列“3.7-3.8ms”这个是怎么算出来的?
答:dd 测试的。
16. 双活 RAC 必须要用 wdm 链路?
答:土豪可以直接用多根裸光纤,非土豪用 WDM。
17. 跨机房的距离一般多少公里?
答:业务量非常小的系统,比如100TPS 左右,100公里问题不大。3000左右 TPS,30-50公里;10000以上 TPS,20公里。
18. asm 做镜像实现存储双活的可靠性如何?
答:本移动客户稳定运行了一年半。
19. 这个是深圳的价格嘛,我们四川恐怕要贵几百倍价格哟。
答:深圳的电信费用在国内是最贵的。
20. 远程 ASM 做镜像的 Oracle 版本要求是多少?
答:11.2.0.3.4 以上,个别 PSU 需要单独申请 PATCH.
因为11.2.0.3.4 之前有 BUG,会导致两个机房之间 SAN 链路断开时,所有数据库节点全部不可用。
在这个版本之后,我单独申请了one offpatch 解决这个问题,但并不是每个 psu 上有这个 patch。
21. vplex 加扩展的 rac,看老师的意思,非常不推荐呢
答:是的,VPLEX 有更合适的用处,就是中间件,MQ,TXT 文件接口等;不建议用在 ORACLE 远程 RAC上,完全是暴殄天物。
22. 如果不用 vplex,配置 voting(normal) 时是否需要三个存储
答:对的。
23. 请问这种架构的风险点在那儿呢?
答:没有专业的人实施。
24. 我们单位在使用 vplex metro,有什么办法可以防止出现存储踢a gi踢b?
答:没办法。
可以将3个votedisk都放在vplex上,这样会好一些,但没办法完全避免。因为ORACLE RAC 心跳IP网络与VPLEXWitness的IP网络不完全一致,当IP网络出现故障时,就有可能出现驱逐行为不一致的情况。
就算GI不踢B,由于B会锁5秒,每秒事务数超过1000的库,由于ACTIVE会话增多,很多能会撑爆B上数据库实例的会话数,并导致中间件队列撑爆,可能DB、中间件都需要重启。
25. 本地运行一个 RAC 节点,远端运行一个 RAC 节点,底层通过 VPLEX 同时写 LUN 数据2份。2个 RAC 同时写,会不会导致数据不一致?
答:如果是同一套 RAC 集群,有 ENQ TX 锁机制的,这是远程 RAC 相对于 OGG 的最大优势!!
26. 1000km 以上的 WDM 链路还有价值建立双活 RAC 嘛?
答:没有价值。用 ADG 或 OGG 吧,两地三中心是最适合用远程 RAC 的。
27. Fsfo 切的时候应用配置这些要改吧?
答:要的。
28. 10g 的 asm 不是也有 mirror 功能吗,为什么不能做 extend rac?
答:10G 的 ASM 不稳定。
29. 用 VPLEX,配置 voting(normal) 时不也需要三个 LUN 么?只不过这三个 LUN 是经过 VPLEX 虚拟化以后的 LUN。是这样吧?
答:是的。但怎么配置都解决不了我说的集群争斗的问题和锁5秒导致ACTIVE会话过高的问题。
30. 为啥不选择 ogg?
答:远程是同一套 RAC 集群,有 ENQ TX 锁机制的,不会有数据冲突,数据混乱,这是远程 RAC 相对于 OGG 的最大优势!!
31. 问题是两地三中心的距离是多远?
答:同城 RAC 要求 20-100KM,远程 ADG 全球任意地点。
32. 如果一套现有的 rac 系统使用 vplex 从单点存储变为双存储,环境是 rac10.2.0.4 这么做路径绑定会乱吗?比如原来的asm文件会有问题吗?
答:会乱的,应该有办法解决,但不建议用这种方案。
既然有这么大动作变更,不如直接升级11G用远程 RAC ASM 同步,腾出 VPLEX 做中间件、MQ、应用服务器容灾。这样解决了3个问题:
① 10G ASM 不稳定
② 10G 执行计划不稳定,原厂不再提供 PATCH 服务。
③ 解决中间件版本、应用接口数据、MQ 日志不同步等应用层诸多问题。
33. 双活 RAC 是不是不适合太远的距离?
答:不适合,100KM 以内才行。
34. 看架构图 asm 的双活是不需要第三方仲裁?只需要心跳吗?
答:需要的,这是逻辑图,很多细节没有。
35. 目前这种解决方案的案例多吗?
答:有几个,国外有上百个左右。
36. 100KM 太近,如果一颗外国原子弹爆炸了,双活、三活 RAC 也被洗白!
答:本方案不防原子弹,主要防止断电、UPS, 空调故障、存储故障,这些才是现实中最常见的。防原子弹需要 ADG,本方案与 ADG 不矛盾,也推荐客户同时上远程的 ADG。
37. 对于超过一定距离的机房,产生延迟是否会影响到双写。用 vplex 是否能解决该问题?
答:不解决,VPLEX 会增加 1-2ms 延时。
38. rac 所有节点 public 网线都拔掉会发生什么?
答:没试过,只试过拔单节点的PUBLIC,此情况应用可以正常切换。
39. 写延迟多大?
答:与距离有关,经测试,与按光速公式来计算的结果差不多。
40. 这个仲裁存储是要设置到 asm 中?需要多大空间?如果仲裁存储出问题后是否会发生脑裂?仲裁是否需要备份?
答:仲裁盘要 2GB 左右。仲裁存储出问题后,不会引起任何节点宕,不用备份。
41. 您以上提出的方案应该是针对同城的两机房,如果是两地三中心是否有解决之道?
答:EXTENDED RAC(ASM 同步)+ADG.
42. 也就是说如果超过一定距离而产生延迟,不论有无 VPLEX 都无法实施双活了?
答:是的,如果有人说能,那是骗你的。
43. 那 ogg 还有价值吗?
答:OGG 是一个很好的数据集成工具,用在不同平台的迁移,升级也不错。
44. votedisk 怎么设置,3个 votedisk,3个存储,一个存储一个?
答:是的。
45. 在 VPLEX 双活结构中,既然是一个 RAC 集群,那远端 RAC 节点网络与本地 RAC 节点网络之间,除了 OTN 组网外,现在一般还有哪些组网方式?
答:直接拉裸光纤。
46. 那有两个存储的机房死掉,另一个机房的 rac 节点只能访问一个 votedisk,也会重启?能起来?
答:建议两个存储的放在机房的不同楼层,万一出现整栋楼的故障,另外一个机房需要强制拉起来。
47. 如果一套现有的 rac 系统使用 vplex 从单点存储变为双存储,环境是 rac10.2.0.4 这么做路径绑定会乱吗?比如原来的 asm 文件会有问题吗?
答:会乱的,应该有办法解决,但不建议用这种方案。
48. 建议用什么方案?
答:建议用 11G+ASM+远程 RAC,宝贵的 VPLEX 留给中间件\MQ\乱七八糟的小应用吧。
希望大家多宣传远程 RAC,为中国的各种IT关键系统稳定尽一份力量。现在的中国,已经离不开IT系统,希望我们以后在办理各业务时少看到一些停机维护公告!IT系统的稳定,也是强国的基础和象征!
应用软件开发:数据建模 | SQL审核和优化 | 中间件服务
电子渠道(网络销售)分析系统、数据治理
恩墨学院
以上是关于Oracle 远程 RAC 打造双活数据中心 | 从容灾迈向双活案例分享的主要内容,如果未能解决你的问题,请参考以下文章
从ORACLE RAC角度看跨数据中心的存储双活配置注意事项