基于Oracle的私有云架构探析(连载一)

沃趣科技高级数据库专家 魏兴华

概述

云是当今最为热门的一个话题或者说技术,在数据库界也一样,Oracle 12G这个名字不硬生生被掰弯成了Oracle
12C,数据库云在我看来能给企业带来的第一价值是节省资源,提高服务器资源的利用率,随着更快速CPU、更廉价大内存的出现,企业传统孤岛式的数据库使用方式,一个主机一个实例,会导致大量的资源浪费,想当年在阿里B2B,有多少服务器的CPU利用率平均只有15%,现在都在倡导绿色数据中心,只有数据库整合了,消耗的电少了,空调吹的少了,数据中心才能绿,地球才能绿(人可不能绿????)。在电刚出现的时候,每个富豪家里都得买个发电机装家里,昂贵,噪声大,扰民,还不环保,后来慢慢发展成电网,每一家只需要接入电网就可获取电资源,不用去买发电机,现在的云很大程度上跟这个很像,私有云平台就像电网,用户只需要接入云平台,就可以便捷的获取资源。本篇文章主要讲解如何构建一个Oracle的私有云平台,主要从以下三个方面进行论述

●  数据库整合技术的选择

● 资源快速供应

● 服务质量管理

在开始阐述这三部分内容之前,有必要带各位客官了解一些数据库的部署现状和相关的基本概念,例如DBaaS是什么?为什么要用Oracle
RAC来构建DBaaS。以及Oracle RAC的版本的一个发展历史。【PS:本文都指的是私有云】

DBaaS

当今一些中大型企业有着成百上千的数据库,这些数据库可能有着不同的版本,不同的配置,甚至是在同样的大版本下打着不同小版本补丁,这给企业带来了非常大的成本和负担:管理的成本、运维的成本、人员的成本、机房的成本、数据库软件licence的成本、存储的成本等等,用一句话概括就是TCO的成本非常的大。此外,由于传统的孤岛式的数据库使用方式,也导致了数据库数量的激增和非常糟糕的敏捷性,每上一个业务,就要申请一批设备,一个机柜,一个数据库项目从立项到项目实施完成往往需要几周甚至几个月之久,如下图:

由于非标准化的东西非常多:硬件环境多变、配置多变、架构多变,这给数据库的可用性带来了非常大的风险,由这些风险带来的非计划性的停机也给企业带来了直接或间接的经济损失、企业信誉的损失。由于近些年PC服务型的CPU性能越来越强劲,内存的价格越来越低,企业往往采购的服务器配置相对都较高,而很多企业还采用着一个主机只部署一个实例这种方式,导致了数据库服务器的资源利用率非常的低下。根据GOOGLE的数字,28%的用户平均每年的数据库增长超过20%,50%的用户数据库是没有经过整合的。怎么办?

什么是DBaaS?

以上面临的场景和解决方案就是构建一个企业的DBaaS平台对数据库进行标准化整合,DBaaS 是一个标准化的、弹性可扩展的平台,基于网络访问,通过一系列共享的数据库服务,整合现有应用,以及快速部署新的应用。DBaaS私有云是部署于企业防火墙内的共享的数据库服务。DBaaS一方面用来满足开发、测试、QA的数据库服务要求,通过简单易用的自服务来满足申请数据库,schema等的需求。一方面帮助IT人员、DBA简化了数据库在标准平台上的部署,减少维护工作,更好的支持客户需求,更多的时间和预算用于创新。

RAC发展史概述

对于Oracle公司来说,构建数据库云的重担会落在RAC上,RAC天然具有高可用、可扩展的特性,RAC版本变化与Oracle一样,经历了从I时代到G时代C时代,I是Internet,G是Grid,C是Cloud,可以看出来Oracle的版本非常迎合时代标签,这个G稍微有点悲剧,其实跟云的概念非常像,但是最终Grid还是不敌Cloud包装的好,最终还是得投入了云的怀抱。Oracle
10G,11GR1虽然都以G冠名,但是产品层面其实并没有得力的配套技术,比如截止到11GR2之前,用户使用RAC,客户端还需要在连接描述符里配置多个条目:

Grid的概念类似于电网的概念,作为用户只需要通过像插头这样的工具接入电网即可,不用去知道后面有多少发电站。对于11GR2之前的RAC来说,如果集群的节点数发生了变化,还需要把客户端里配置都更新一遍,实在是很麻烦。所以Oracle到了11GR2版本发明了SCAN-
Single Client Access Name,用户只需要使用SCAN Name,在连接描述符里配置一个条目就可以了:

不管集群有多大,都只需要配置这么一行描述符就可以(ADDRESS所在行)。如同你使用Google,不管谷歌后台有多少台服务器,你都只需要输入google.com,你不需要关心到底是后台的哪个server为你提供的服务。

以前客户选择使用RAC,大多数是由于单实例的性能不足,可用性不够,现在云的概念如日中天,使用RAC的理由可能已经演变为建数据中心,做数据库的整合。下图为Oracle各个版本的一些核心特性图:

Oracle的核心功能在8I时就已经基本稳定下来了,但是这句话用在Oracle
RAC产品上并不妥当,如上图,在Oracle 8I时,Oracle
RAC只能算是初具雏形,当时的名字还不叫Oracle RAC,而是叫OPS-Oracle
parallel server,在这个版本里,Oracle推出了自己的动态锁管理机制,Cache
Fusion也已经出现,对于多个节点间的读读操作都已经能够完全在内存中实现,但是多实例之间的写操作仍然要通过磁盘作为媒介。Oracle 9I版本,出现了GRD-Global
Resource Directory,Cache Fusion算法变得成熟,充分利用了私有网络的带宽,通过集群的私网来传递数据块包括脏数据块,真正的实现了内存融合。RAC区别于单机的最大一点是集群间需要协商,通过协商来保证多个实例的行为一致,而GRD、DML、Cache
Fusion是实现协商的最重要技术,从Oracle RAC 8I到9I,RAC的这几个核心功能变得成熟,但是不管是Oracle
8I还是9I,Oracle都没有自己的集群件产品、没有自己的存储解决方案,都要借助于第三方厂商的集群件产品和存储解决方案,例如IBM,veritas等。

但是到了Oracle 10G版本,霸气显露,Oracle已经不满足于RAC数据库本身了,一口气推出了自己的集群件Oracle
ClusterWare 和存储管理软件ASM,并且Oracle
ClusterWare在对外宣传上不仅支持Oracle,还提供了API接口支持其他类型的APP。鉴于RAC是shared
nothing的技术架构,共享存储和集群文件系统变得非常的迫切,在10G之前的版本,用户必须借助于第三方的存储解决方案,例如veritas等第三方产品,无形中增加了产品的复杂度,因此在9I版本裸设备倒成了一个很大众化的选择。而10G出现的ASM解决了这一困境,ASM本身集卷管理和文件系统功能与一体,让Oracle真正的具有了管理卷,管理文件的能力,不过这个版本下的ASM有点像是“备胎”的味道,毕竟是新技术,不成熟,很多DBA那时候还不敢用它。到了11GR1这个版本,单就Oracle
RAC来说,非常让人失望,几乎没有任何大的功能创新,似乎是为了保证每五年左右推出一个大版本下的产物,集群所有的核心功能都没有任何改变,不过对于旧的功能像是ASM,在这个版本变得较为稳定,而且也越来越多被DBA所接受。

到了11GR2发行后,一堆亮瞎眼的功能出现,似乎让我们想明白了为什么11GR1会没什么新特性,因为11GR2发布的这些新特性是一揽子的云化解决方案:RAC
One Node ,ServerPool ,Scan,Instance Caging、ACFS等等这些新技术都是为数据库整合,为云而生的,之前的ClusterWare也在11GR2版本被重新包装成为了Grid,ASM也被整合进Grid中作为集群的基础组件。后续的章节,我们也会对其中一些关键的技术做详细的讲解。到了12C版本,Oracle推出了Flex
Cluster ,Flex ASM,更大程度提高了RAC的可用性和可扩展性,IN-Memory的出现也更让实时计算变得可能,CDB让数据库整合的方式更加多样,密度也可以更大。从以上RAC的发展史可以看出来,从11GR2版本开始,Oracle开始真正的从产品层面配合云的概念,我们本文讲解的技术也都是在11GR2之后出现的技术。

数据库整合技术

整合所需要的硬件平台

云的核心是整合,既然要做数据库的整合,对于平台的整体能力要求会比较高,这个能力不但包括性能,对于可用性、可扩展的要求都会比较高。笔者认为做数据库整合的理想平台是一体机平台,像Exadata、QData,但是Exadata的价格实在是过于昂贵,性价比非常低,一般用户难以负担得起。笔者所在的沃趣科技是一家业界知名的做高性能解决方案的公司,我们是国内最早开始做一体机的厂商,QDATA一体机也是我们的明星产品,价格上相对于Exadata优势很大。很多朋友会问到,Exadata最为亮眼的地方是它的存储卸载功能,你们QDATA一体机有吗?对于这点我本人实在不敢苟同,试问有多少客户真的从卸载功能里受益非常大?就像Oracle
12C 推出了IN-Memory,理论上可以提升几十上百倍的性能,但是我去的几位客户那里做性能调优,发现客户业务系统的SQL并没有因为使用了IN-Memory而变快,因为使用IN-Memory有一些前提条件,而客户系统并不满足这样的前提条件,其实不管是针对In-Memory还是存储卸载功能,都需要DBA做一定的技术学习和精细化的调优工作,否则想发挥出它的能力是很难的,而且很多业务本身并不适合用这些特性,因此并不是上了这个IN-Memory或者卸载就能得到巨大的性能提升,例如使用上存储卸载必须要全表扫描,而你的SQL可能使用到了索引,那么你就要考虑是否需要把这个索引干掉以用到卸载功能,而这个索引是不是能被干掉,你又不确定,怕其他SQL引用这个索引,这种情况可能在客户那是一种非常普遍的情况。

就我这些年的从业经历来看,传统的数据库架构最大的问题是它的整体性能不匹配,例如传统IOE架构最容易成为瓶颈的地方,不是CPU、Memory,而是IO,笔者在沃趣工作的不到两年里,接触了N多客户的性能瓶颈,很多都是IO问题(还有少数是索引没优化好)。对于热点数据较多较离散的OLTP系统来说,最为关注的是IO的延迟和整体的IOPS,而传统架构大多跑在机械盘上,因此IO的延迟非常大,并且机械盘能够提供的IOPS也非常的低,因此传统架构对于OLTP的支持就有明显的瓶颈,我们的QDATA一体机是通过使用全SSD闪存或者FLASHCACHE方案来加速IO的读写时间,解决IO性能瓶颈。而对于OLAP系统来说,最为关注的是数据库系统能够提供的IO吞吐量,传统IOE架构,吞吐量往往在几百M到1,2GB的量级,因此吞吐量就成为明显的瓶颈,Exadata通过使用infiniband网络来解决存储到计算节点的IO带宽的问题,同样对于我们的QDATA也是通过使用infiniband来提供高带宽。在传统架构中,由于性能组件之间配置的失调,导致了很多资源虽然非常的充足但是根本利用不到,就如刚才分析的,IO成为瓶颈后,即使CPU资源再富足,也没法利用到,因为都在等IO。

而新的高性能解决方案,如一体机产品,基本都是聚焦于解决传统架构里性能组件之间失调的问题,让IO延时、IO吞吐、CPU、内存这些性能组件更加好的匹配在一起,不会在任何一点上成为明显瓶颈。而一体机作为一款高性能解决方案,完全符合了这些要求。它能提供的IOPS动辄几十万,几百万,IO吞吐更是轻轻松松几十GB,特别是随着100Gb的infiniband的出现,一体机能够提供的吞吐量会更加的大。我相信一体机的市场以后也会越来越大,不管是用它做私有云,还是为核心业务保驾护航,都是一个非常值得考虑的选择。同时一体机产品因为都是预先集成与优化的,这里面包含了我们十几年的运维经验和性能优化经验,例如我们对高TPS的系统预先做了REDO写的优化,把REDO放在了具有RAID卡缓存的磁盘上,保证日志的写延迟足够的稳定足够的低。

作为一名技术人员非常喜欢聊一些炫酷的技术,例如Exadata的卸载,我也是如此,如果你有兴趣,我可以跟你滔滔不绝聊上一整天的Exadata,理论上讲起来非常的浪漫和美好,但是现实情况比较残酷,很多甲方DBA认为上了Exadata后利用卸载功能就能让查询快的飞起来,结果大失所望。学习Exadata的成本非常高,并不是一种用了就能好的万能药。如果你有比较强的DBA团队,还有大把的钞票,还是可以考虑使用下Exadata的,如果你的DBA团队暂时还达不到这个要求,那么建议还是不要花这冤枉钱。

Exadata的卸载看似一项跨时代的创新,其实不然,它其实是向MPP架构致敬的一项功能,Oracle的Share Everything 的架构导致了存储一定需要是共享的,进而导致计算与存储必须分离,这种架构里存储不具备MPP架构中,每个节点都能处理数据的能力,因此Oracle的Exadata的出现一定程度上解决了这个问题,让存储节点在某些条件下具备了处理数据的能力。

数据库整合方案比对

虚拟化一度成为一种流行的数据库整合的方案(特别是MYSQL、PG),但是它的弊端非常的明显,虚拟化整合方案需要额外管理更多的OS,而且虚拟化本身会带来IO性能的大幅度衰减,因此性能上比较差,能够整合的数据库的密度也就比较小,不过就隔离性来说,由于每个虚拟机都有独立的OS,因此除了共享宿主机以外,OS,实例等等都是隔离的,很多用户选择这种整合方案很大程度上也是被它的强隔离性所吸引。

单机多实例也是很多客户在使用的整合方案,在一个主机上部署多个实例,由于共享了主机和OS,性能损耗小,因此整合的密度可以比较大(相对于虚拟化整合),而且通过11GR2的Instance
Caging技术可以做实例间CPU资源的隔离,由于单机多实例方案比虚拟化整合方案多共享了OS这一层,因此隔离线上相对于虚拟化方案来说,降低了一些,不过上面已经提到通过Instance
Caging技术可以做到CPU的隔离。多schema方式的整合,就我们接触到的客户来说,也有客户在用,它的缺陷非常的明显,资源隔离不好做,业务上限制也比较大,同名的schema怎么做整合?几个schema间创建的一些公共权限有冲突怎么办?而且本身由于在一个数据库内,数据库的权限隔离也比较难做,就隔离性来看,因为共享了主机、操作系统、实例,它的隔离级别非常低,从长远来看,后期如果要做拆分,只能使用逻辑迁移,而逻辑迁移往往是非常复杂的。Oracle在12C版本发布了可插拔数据库,它是一个优缺点都比较中和的解决方案,相对于单机多实例来说,它的隔离性没那么强,但它整合的密度可以做到非常的大,因为它像schema整合方案一样,共享了主机、OS、实例(下图),因此性能损失非常的少,总体上,它的隔离性和安全性又比schema方案要强很多,因为本质上每一个PDB都是一个完整独立的DB,DB之间没办法互相访问,除非通过DBLINK这样的工具。

以上种种,笔者推荐的整合方案是基于单机多实例或基于12C的可插拔的方案,但是12C毕竟目前使用的人还不多,因此需要仔细考虑BUG带来的一些风险。

时间: 2024-10-13 00:32:09

基于Oracle的私有云架构探析(连载一)的相关文章

恒天云 3.0:打造基于OpenStack的私有云新模式

云计算在当今IT世界中已发展地如火如荼,越来越多的企业利用云计算改造传统的数据中心,简化IT资源的交付模式.云计算是许多开放技术的融合,在这个领域,OpenStack是其中最流行最具影响力的开源IaaS云平台,全世界大批的工程师参与OpenStack各组件的开发,使其社区越来越活跃,发展也越来越快速. OpenStack发展至今已发布9个版本,但许多组件仍存在种种稳定性问题,想在企业内部落地依然困难重重,如: Dashboard组件Horizon项目发展缓慢,产品化不足,用户友好度不高: 尚未与

蘑菇街基于Docker的私有云实践

蘑菇街的私有云项目是2014年圣诞节期间上线的,从无到有,经过了半年多的发展,经历了3次大促,已经逐渐形成了一定的规模. 1架构集群管理 大家知道,Docker自身的集群管理能力在当时条件下还很不成熟,因此我们没有选择刚出现的Swarm,而是用了业界最成熟的OpenStack,这样能同时管理Docker和KVM.我们把Docker当成虚拟机来跑,是为了能满足业务上对虚拟化的需求.今后的思路是微服务化,把应用进行拆分,变成一个个微服务,实现PaaS基于应用的部署和发布. 通过OpenStack如何

基于openstack构建私有云实践

[版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/54835490 作者:朱培 ID:sdksdk0 本文主要分享的是云计算.openstack的使用.私有云平台建设.云服务器云硬盘的构建和使用.从基本概念入手到私有云建设,信息量非常大.对于openstack的安装部署都是从官方文档中一步步的介绍,内容非常详细. 一.云计算 基本概念 云计算(cloud computing)是基于互联网的相关服务的增

华为私有云方案架构(分享二十三)

最近一直忙项目事情,很久没有去学习厂家方案,今天周末,有空对华为私有云架构做一个分享. 方案架构: 原文地址:https://www.cnblogs.com/zywu-king/p/8321902.html

私有云市场或大爆发,OpenStack迎来新三大创业红利

(上图为EasyStack创始人兼CEO陈喜伦) "昨天晚上9:30离开办公室的时候,当天还只中了三个单子,一走到停车场就收到又中了两单的消息,赶紧回公司发红包."国内OpenStack公司EasyStack创始人兼CEO陈喜伦在中秋节前一天见到记者时,喜上眉梢,"同比去年,今年下半年用户对OpenStack的需求有近10倍的增长." 成立仅两年的EasyStack不仅在2016年中秋节前收获了一天连赢五单的好消息,在截止到9月的2016年里还收获了若干千万元级别的

云架构和openstack的思考

原文链接: http://ifeve.com/cloud-architecture-openstack/ 作者:罗立树 最近在负责公司内部私有云的建设,一直在思考怎么搞云计算,怎么才能够把云架构设计得好一些. 本文章主要内容: 1. 行业生态 2. 从需求角度看云 3. 云计算概述 4. 云建设的关键问题 5. 私有云架构规划 一.行业生态 计算机云经过多年的发展,由一开始的概念,慢慢发展成熟并能够推向市场,提供多种多样的服务,市场空间非常之大. 在云的发展过程中,亚马逊经过多年的深耕积累,发展

百度开放云首席架构师徐串:架构师对架构的理解 云 架构 架构师 百度

在 2016中国云计算技术大会 (CCTC 2016,专题报道)上,百度开放云首席架构师徐串发表了题为< 企业IT基础架构在云端如何变革 >的主题演讲,并接受CSDN记者专访,深入分享了他对架构及设计的认识,对架构师工作和技能的理解,以及百度开放云架构满足大数据和人工智能等不同应用需求的实践经验. 徐串表示,云计算环境下的架构,除了高吞吐.可扩展性.稳定性的需求,灵活性的实现也很重要.架构师的工作就是在各种矛盾之间坚持或妥协,如高吞吐和低延迟的矛盾,优雅架构和紧迫需求的矛盾.保证业务的需求,是

准备好部署私有云了吗

在实施私有云之前,询问并回答五个关于性能.安全性以及其他方面的问题是非常重要的. 当谈及云计算时,主要有三个选项: 公共云.私有云以及混合云.公共云是指在共享基础设施上提供可扩展性.弹性以及所用即所付的付费模式.而混合云则是指私有云和公共云服务的混合以及两者之间的编排.但是,私有云呢,它是什么? 虽然私有云和公共云可提供类似的优势,但是企业会出于内部部署的性质和控制等方面的考虑而选择私有云.在一个私有云环境中,一个防火墙就可以限制用户访问并消除众多企业对于数据安全性和合规性方面的忧虑.但是,企业

【VMCloud云平台】私有云门户WAP初始配置

既上一篇讲完快速部署,WAP应该属于微软私有云架构里最容易部署的一个Portal了吧?几乎只要链接上公网环境,就可以将WAP安装完成了,今天这一篇将介绍如何去初始配置WAP并且为以后所要做的实验做部署准备 本篇涉及服务器如下图(紫色为已完成,红色为进行中,蓝色为计划中) 1. 首先,为了保证实验的成功,你需要将你所用的WAP管理员账户添加到WAP所用的DB数据库上,并且赋予SA权限: 2. 设置完成后,回到WAP01,看到安装完成后会弹出WAP的默认Portal有要求输入相关的数据库参数: 3.