第1章 ■ 数据库即服务简介
什么是数据库即服务?
顾名思义,数据库即服务(DBaaS)是指将数据库作为一项服务提供给用户。但这究竟意味着什么呢?
例如,这是否意味着数据库即服务参与数据存储与检索以及查询处理?数据库即服务是否执行数据验证、备份和查询优化等活动,并提供高可用性、复制、故障转移和自动扩展等功能?
回答这些问题的一种方法是将数据库即服务分解为其两个组成部分,即数据库和服务。
数据库
曾经有一段时间,数据库这个术语与关系型数据库管理系统(RDBMS)同义。但如今情况已不再如此。现在,该术语同样用于指代 RDBMS 和 NoSQL 数据库技术。
数据库管理系统是一种技术,有时仅指软件,有时还包括定制和专用的硬件,它允许用户存储和检索数据。计算领域免费在线词典将数据库管理系统定义为“一套通常用于管理大量结构化持久数据集并为多个用户提供即席查询功能的程序”。
服务
现在来看另一半——as a Service——我们可以看到,其核心本质在于强调服务的交付方式,而非被交付的服务本身。
换句话说,Something 即服务使操作员能够更轻松地提供 Something 供消费者使用,同时使消费者能够快速访问并受益于相关“Something”。
例如,来自多个供应商的电子邮件即服务服务方案(包括谷歌的Gmail和微软的Office365)使最终用户能够轻松使用电子邮件服务,而无需面对安装和管理服务器及电子邮件软件的难题。
作为类别的服务
提到“即服务”这一术语时,最常见的用法是指软件即服务(SaaS)这一广泛类别。as a Service 该术语通常用于指代应用即服务,例如作为托管在线服务提供的 Salesforce.com 客户关系管理(CRM)软件。
此外,还包括像 AWS 这样的基础设施即服务(IaaS)服务方案,以及像 Cloud Foundry 或 Engine Yard 这样的平台即服务(PaaS)解决方案。
数据库即服务(DBaaS)是软件即服务(SaaS)的一个具体示例,并继承了SaaS的一些特性。这些特性包括:数据库即服务通常是集中托管的,并基于订阅方式向其消费者提供;用户只需为其实际使用的内容和使用时间付费。
数据库即服务的定义
因此,可以广义地将数据库即服务(DBaaS)定义为一种技术
• 按需提供这些数据库服务器; 配置数据库服务器;
• 配置这些数据库服务器或数据库服务器组,可能涉及复杂拓扑;
• 自动化管理数据库服务器和数据库服务器组; 根据系统负载自动扩展所提供的数据库容量;以及 动态优化支撑基础设施资源的利用率。
显然,这些是对能力的广泛定义,不同的服务方案可能在不同程度上提供上述各项能力。
正如亚马逊在AWS公有云上提供EC2作为计算服务一样,它也提供了多种数据库即服务产品。特别是,它为MySQL或Oracle等关系型数据库提供了关系型数据库服务(RDS),在Redshift中提供数据仓库即服务,以及DynamoDB和SimpleDB中的几种NoSQL选项。
OpenStack 是一个软件平台,允许云操作员和企业向其用户交付云服务。它包括 Nova(一种类似于亚马逊 EC2 的计算服务)和 Swift(一种类似于亚马逊 S3 的对象存储服务),以及众多其他服务。
其中一项附加服务是 Trove,即 OpenStack 的 DBaaS 解决方案。
与亚马逊特定于数据库的 DBaaS 服务方案不同,Trove 允许您从一系列流行的关系型和非关系型数据库中启动数据库。对于每种数据库,Trove 都提供了多种优势,包括在数据库整个生命周期内简化管理、配置和维护。
数据库对IT组织带来的挑战
数据库及其运行所依赖的硬件,仍然是运营信息技术基础设施的重要成本和负担。数据库服务器通常是数据中心中最强大的机器,并且几乎依赖于计算机所有子系统的极高性能。
与客户端应用程序的交互是网络密集型的,查询处理是内存密集型的,索引是计算密集型的,检索数据需要极高的随机磁盘访问速率,而数据加载和批量更新则要求快速处理磁盘写入。传统数据库通常也不太容易在多台机器之间扩展,这意味着所有这些计算能力必须集中到一台计算机或资源量巨大的冗余设备对中。
当然,NoSQL 和 NewSQL 等新型数据库技术正在改变这些假设,但同时也带来了新的挑战。它们可能更容易在多台机器上横向扩展,从而降低对大型硬件的需求,但分布式处理的协调可能会更加消耗网络资源。
这些新兴数据库技术的激增也带来了另一个挑战。管理任何一种特定的数据库技术都可能需要大量专门的技术专业知识。因此,IT组织通常只在某一种特定的数据库技术,或在某些情况下少数几种数据库技术上积累专业知识。正因如此,他们一般只为客户提供有限的数据库技术支持选项。在某些情况下,这种做法被认为是合理的,或被解释为遵循企业标准。
然而近年来,开发团队和最终用户意识到,并非所有数据库都是一样的。现在出现了专门针对特定访问模式(如键值查找、文档管理、图遍历或时间序列索引)的数据库。因此,市场对一些信息技术部门经验有限的技术需求日益增加。
从2000年代后期开始,所谓的NoSQL数据库迎来了爆发式增长。尽管最初有可能抵制这些技术,但它们的优势和受欢迎程度使得这种抵制变得极为困难。
然而,IT组织如何在不具备每种NoSQL和SQL数据库深入专业知识的情况下,支持各种类型的数据库?
亚马逊率先通过几次点击和一张信用卡就让计算资源变得无处不在且易于使用。随后,它将数据库相关的许多复杂性自动化,并以服务的形式提供,迫使IT组织做出回应。然而,它通过组建精通每种技术的员工团队来实现这一点,而且仍然像过去的IT人员一样,只提供有限的选择。
OpenStack Trove 为 IT 组织提供了在企业内部运维完整数据库即服务(DBaaS)平台的能力。IT 组织可以向其内部客户提供多种数据库,具备与亚马逊在其 AWS 云和 RDS 产品中所提供的相媲美的易用性。Trove 用户可以获得此优势,而无需像亚马逊那样投入大规模资源或组建专门的数据库技术专业专家团队。
数据库即服务的特性
鉴于Database as a Service这一术语的广泛使用,了解数据库即服务的特性是很有价值的。这种特征描述有助于快速评估每个候选解决方案,并将解决方案归类为有意义的组别。
一些常见的特征是
• 操作平面: 数据平面 vs. 管理/控制平面
• 租户: 单租户与多租户
• 服务位置: 私有云 vs. 公有云 vs. 托管私有云
• 交付模型: 服务 vs. 平台
• 支持的数据库: 单一 vs. 多种,SQL vs. NoSQL
管理平面与数据平面
DBaaS解决方案的一个重要特征与其执行的活动类型相关,我们可以将这些活动 broadly 分为两大类。
在数据库的运行过程中,存在许多诸如配置、安装和配置、备份和恢复、配置复制(或镜像,或集群)、调整与实例关联的存储大小以及其他管理活动等操作。这些活动 broadly 属于 系统管理 的范畴,并被视为 管理平面 的一部分。对于这些操作,发出命令的用户无法看到所管理数据的实际内容。
还有一些完全独立但同样重要的活动,例如插入、查询和修改数据;创建表、命名空间、索引、触发器和视图;以及检查查询计划。所有这些活动 broadly 属于 数据管理 的范畴,并被视为 数据平面 的一部分。在这些情况下,用户实际访问和操作的是所存储数据的内容。
托管数据库实例为操作员和管理员在管理平面中提供一组接口,同时为数据库的最终用户和分析人员在数据平面中提供一组接口。
不同的活动和客户端参与了这些平面中的每一个,如图 1-1 所示。
数据库(用实心块表示)在两个不同的平面运行——数据平面和管理平面。
OpenStack Trove 几乎完全在管理平面中运行。同样,亚马逊的RDS 服务方案包含由亚马逊开发的数据库和代码,用于协调该数据库。亚马逊开发的这些代码几乎完全在管理平面中运行。SQL Server 与微软的Azure SQL数据库服务方案之间也可以进行类似的类比。其他 DBaaS 服务方案(例如 亚马逊的 DynamoDB)也同时在数据平面中运行。
因此,Trove 在自动化和简化管理操作的同时,使应用程序能够透明且完全地访问所部署数据库公开的数据API(应用程序编程接口)。例如,当用户使用 Trove 配置 MySQL 时,所配置的数据库服务器是标准的、未经修改的 MySQL 服务器副本,用户后续对该服务器进行数据查询和更新的操作都将直接与底层服务器交互,而非与 Trove 本身交互。
租户
租户是DBaaS解决方案的一个非常重要的属性。通常有两种广为人知的租户模式:单租户和多租户。我们将依次考察每一种模式。
图1-2 有助于描述此概念:左侧为单租户,右侧为多租户。
单租户解决方案
单租户DBaaS解决方案是一种每个租户(用户、消费者)所配置的数据库都运行在专用资源(数据库、计算、存储、网络等)上的解决方案。在某些情况下,这意味着请求两个数据库实例的用户将获得两个实例,每个实例都有其专用的资源;而在其他情况下,这表示这两个实例可能共享相同的资源,但这些资源不会与其他任何租户共享。
亚马逊RDS、Amazon RedShift 和 OpenStack Trove 是单租户解决方案的一些示例。每个客户请求数据库都会导致创建一个单独的实例(可能是一个带有数据库实例的虚拟机)。尽管它们在计算基础设施层级上可能被视为多租户,但在 DBaaS 层级上,它们属于单租户解决方案。
单租户架构的优势在于每个用户的活动相对独立。由于每个用户都有专用的资源池来运行数据库功能,因此某个用户在特定时间内执行大量查询或更新操作,不太可能影响其他用户访问其数据时的系统性能。但需要注意的是,如果基础设施层级实际上是多租户的,则该层级缺乏隔离性可能会对这种隔离造成影响。
多租户解决方案
一种多租户 DBaaS解决方案,是指不同租户所配置的数据库可能共享相同资源的方案。这种资源共享可以发生在一个物理机或虚拟机上,也可以跨越一组机器集群。
Oracle 12c 是一种数据库的示例,当其作为服务提供时,便构成一个多租户 DBaaS 解决方案。单个数据库服务器实例将托管一个或多个容器数据库。每个容器数据库将为每个客户/租户/用户拥有一个 pluggable数据库,而这些可插拔数据库将存储每个用户的数据。另一个例子是亚马逊DynamoDB,其中用户的数据显示在其他用户的数据旁边,分布在大量底层共享硬件组成的集群中。
尽管多租户系统可能导致用户之间的隔离性降低以及资源冲突的可能性增加,但由于未被一个用户使用的资源可以更轻松地被共享同一基础设施的其他用户所使用,因此通常能够更高效地利用整体资源。
服务位置
DBaaS解决方案可以在多种位置运维(例如,公有云、私有云或托管私有云)。
公有云
在公有云中,某个第三方拥有、管理并运维计算基础设施,并允许其他个人和公司在此基础设施上购买和使用服务。
亚马逊AWS是公有云模式中最常被提及的示例。其他类似的解决方案包括微软Azure、谷歌云平台和惠普 Helion公有云。
对于普通消费者而言,公有云在服务级别协议(SLA)、响应时间保证以及对所提供服务的控制能力方面都较为有限。
公有云的一个常见问题是它们大多是多租户的,因此需要共享基础设施。例如,一个消费者的计算实例可能会受到另一个租户的计算实例行为的负面影响,而该计算实例恰好运行在同一台物理机器上。
这通常被称为noisy neighbor效应。
一些公有云在基础设施上对资源的放置提供的控制非常有限,除了非常粗略的控制外几乎没有其他选择。例如,在亚马逊上部署实例时,您可以选择可用区(粗略控制),但无法保证同一可用区内的两个实例不在同一台物理机器上。这可能会意外导致可用性问题。如果承载这两个实例的机器发生故障,两项服务都将停止运行。
推动公有云发展的一个主要因素是用户只需为其实际消耗的资源付费。这缓解了资源利用率和容量规划等方面的担忧,并将私有云中的资本支出转变为可变的运营支出。此外,在公有云上启动和运行极为简便。无需设置机器和网络即可开始工作,如果出现问题,公共云运营商负责修复。
私有云
许多大型企业将其内部IT基础设施作为云来运维,并使用工具来配置和管理该基础设施的各个组件。
在许多方面,私有云是企业数据中心的自然演进。这些私有云提供计算、存储和网络基础设施,以及企业身份管理。
此外,一些组织允许最终用户配置和使用数据库服务,其中数据存储和处理在IT部门于私有云中提供的基础设施上进行。
私有云通常为其客户提供服务级别协议(SLAs),例如对响应时间以及中断时间和停机时间等服务特性的保证。
私有云通常还能为用户提供对基础设施部署和运行的更大控制权,而在公有云等其他模式下,这种控制权通常会丧失。
通常,数据隐私、数据安全性和成本等因素会推动私有云解决方案的选择。风险规避和惯性也是推动私有云的重要因素。
第1章 ■ 数据库即服务简介
托管私有云
托管私有云是公有云和私有云的混合模式,其中资源由一个组织拥有并为另一个组织运维。这些资源通常专用于客户。
托管私有云的示例包括Rackspace、BlueBox、Peer1和Contegix等公司。许多公共云运营商也提供托管私有云服务方案。亚马逊GOV云和惠普托管云服务就是两个例子。
私有云是企业数据中心的演进,而托管私有云是外包数据中心的演进。
客户可以享受私有云的优势(服务级别协议、保障、专用资源等),而无需自行管理基础设施。托管私有云提供商通常运营大型数据中心,客户可由此获得规模经济。
在某些情况下,客户可以选择物理隔离其基础设施(例如使用上锁的机柜),以提高安全性和隐私性。
服务与平台
当用户从亚马逊RDS消费数据库服务时,很明显用户正在与一项服务进行交互。用户无法访问运维 RDS的软件。服务是一种软件,用户可以按需购买和使用,而无需关心或访问提供该服务所涉及的系统。
另一方面,一家公司可以从 openstack.org 下载并安装 OpenStack,并可以安装 OpenStack Trove,即该公司可用于在其自有基础设施上进行运维的软件。但这本身并不是数据库即服务。用户仍然需要自行安装、配置和运维,并完成各种任务(将在后续章节中讨论),例如构建客户机镜像、建立配置组、建立安全组等。因此,OpenStack Trove 代表了一个用于运维数据库即服务的平台。
同样,公司可以构建并提供功能完整的DBaaS in a box产品。这些产品包含在自有基础设施上运维完整数据库即服务所需的一切组件。Tesora 的数据库即服务(DBaaS)平台就是此类平台的一个示例。
该平台基于 OpenStack Trove,提供了完整的 Trove 能力以及多项扩展功能,并为多种常用数据库提供经过认证的客户机镜像。
数据库即服务的好处
DBaaS解决方案旨在自动化数据库运维中许多复杂且容易出错的流程,以及繁琐重复的任务,同时为应用程序开发人员和客户端应用程序提供对可扩展且可靠的数据库管理基础设施的访问。
使用数据库即服务(以及其他即服务产品),客户端可以访问其选择的数据库,而无需担心底层的操作复杂性。
配置的便捷性
DBaaS 的一个直接好处是,在过去集中式 IT 环境中可能需要数周甚至数月才能完成的数据库实例配置,现在只需几秒或几分钟即可完成。
用户可以选择数据库类型、版本和其他一些基本属性。数据库会快速配置并返回连接信息。
一致的配置
配置数据库时涉及的复杂性常常导致一个实例与下一个实例之间出现难以察觉的差异。不幸的是,这种细微且通常看似无害的差异可能会在半夜演变为严重问题,通常涉及数据丢失或损坏。
通过DBaaS解决方案自动化配置机制,可确保所配置的每个数据库实例都具有完全相同的配置,且无一例外。
这也意味着当需要进行配置更改时,可以轻松地将其应用于所有数据库实例,并且更容易检测到任何偏差。
自动化操作
在数据库的生命周期中,需要执行 numerous 管理任务。这些任务包括生成备份、更新配置参数、升级到新的数据库版本、重建索引或回收未使用的空间。
可以设置自动化,以在特定计划(基于时间的,例如周五进行完整备份,每天进行增量备份)或特定事件或阈值(例如当已删除记录空间超过X%,可用空间低于Y%时)执行这些任务。
自动化这些活动极大地简化了信息技术运维团队的工作,同时也确保了这些操作能够始终如一地可靠执行。
自动扩展
数据库面临可变的工作负载,为峰值配置资源会导致非峰值时段资源利用率极低。自动扩展是一种根据工作负载对分配给数据库的资源进行合理配置的能力。
许多数据库可以在不停机的情况下进行扩展,这是在云环境中运行的一个非常吸引人的特性。但这一过程要求非常严格,而自动化可以大大简化该过程。
自动扩展是可基于每秒查询数或资源利用率等阈值执行的自动化操作的一个示例。
开发敏捷性的改进
尽管简化和自动化的配置使数据库实例的可用性变得更简单、更快速,但开发敏捷性并不仅仅局限于这一点。在许多领域,例如数据分析,分析人员的思维过程是迭代的。人们并不总能一开始就明确正确的问题是什么,而第一个问题的答案往往有助于构建和明确下一个问题。
虽然快速配置有助于在迭代式探索过程中快速循环使用数据库实例,但同样重要的是,当数据库实例不再需要时,能够快速取消配置或销毁该实例。
如果数据库即服务只是让数据库的配置变得更简单,但数据库需要长期承诺使用,那么它对敏捷性并无帮助。数据库即服务的优势在于,用户在使用完毕后可以快速销毁数据库,从而将已分配的资源释放回资源池。
更好的资源利用率和规划
通过数据库即服务(DBaaS)平台,IT组织可以监控组织内部整体的数据库需求和趋势。您可以定期扩展和更新底层云基础设施。这种更新可能基于推动此类变革的行业趋势,也可能是由于出现了新的架构或选定硬件配置的价格点得到优化,还可能是为了响应组织内部不断变化的需求。
IT部门的一个目标是在考虑组织内需求预期趋势的同时,最大限度地提高资源利用率并提供最响应式的服务。
实现此目标的一种方法是,通过运营可在组织内共享的资源池,并允许用户配置、使用基础设施,并仅为基础设施实际使用的时段付费。面对意外需求时,IT组织还可以审慎地采用过度配置策略。
这不仅改善了组织的底线,还使组织能够更迅速地响应客户的需求。
提供商或运营商的简化角色
在不提供数据库即服务的企业中,IT部门必须全面掌握其允许内部客户使用的所有数据库的各个方面。
这些客户具备一定的数据库管理员(数据库管理)知识和技能,而大部分管理技能集中在IT部门内部。
本质上,这意味着IT组织只能允许内部客户使用其具备丰富专业知识的数据库技术。这通常是将数据库技术的选择限制在所谓的企业标准范围内的原因。
随着按需服务和体现最佳实践的数据库即服务(DBaaS)的发展,软件自动化并简化了大多数常见的工作流和管理活动。这减轻了IT部门的负担,并降低了IT部门在每种数据库技术上都需要具备深厚专业知识的要求。同时,这也为内部客户提供了更多选择,使其能够针对具体问题选用合适的数据库技术。
其他数据库即服务服务方案
以下是一些提供与OpenStack Trove类似能力的其他数据库即服务解决方案。
亚马逊RDS
亚马逊RDS 是一款综合性产品,可提供运行 MySQL、Oracle、PostgreSQL、SQL Server 或亚马逊自有兼容 MySQL 的数据库极光的托管数据库实例。
所有这些功能均可在亚马逊AWS云中以多种配置提供,包括多可用区。亚马逊RDS包含自动扩展、实例监控与修复、时间点恢复、快照、自我修复以及数据加密(静态和传输中)等实用功能。
Amazon RedShift
Amazon RedShift 是一种基于 ParAccel(现为 Actian)技术开发的完全托管式拍字节级数据仓库解决方案。
它采用标准的 PostgreSQL 前端连接,可轻松将 Redshift 与支持 PostgreSQL 的标准 SQL 客户端和工具集成。
该服务还支持与多种其他亚马逊解决方案(如 S3、DynamoDB 和弹性MapReduce(EMR))的集成。
Microsoft Azure SQL数据库
微软提供其流行的SQL Server关系型数据库的版本作为服务。该服务是微软Azure基础设施即服务(IaaS)产品的一部分。
Google Cloud SQL
Google Cloud SQL 是另一种与 MySQL 兼容的数据库即服务(DBaaS)产品,类似于 Amazon的 RDS for MySQL。该服务作为谷歌云平台的一部分提供,该平台以前称为 Google App Engine。
Amazon DynamoDB
Amazon DynamoDB 是一种快速、灵活的 NoSQL 数据库服务。它是一种完全托管的数据库服务,支持文档和键值数据模型。DynamoDB 在设计上是多租户的,并且具有透明的可扩展性和弹性。用户无需进行任何操作即可获得 DynamoDB 的可扩展性优势;所有管理均由底层服务完全负责。
因此,DynamoDB 能够向应用程序保证在任何规模下都具有一致的(个位数毫秒级)延迟。
OpenStack Trove
OpenStack Trove项目的既定使命如下:
提供可扩展且可靠的云数据库即服务配置功能,支持关系型和非关系型数据库引擎,并持续改进其功能齐全且可扩展的开源框架。
因此,需要明确的是,与其他之前介绍的DBaaS解决方案不同,Trove有意识地致力于提供一个数据库即服务平台,使用户能够使用关系型和非关系型数据库引擎。
这一使命声明延续到了架构设计中(将在后续章节中讨论)。Trove 旨在提供一个平台,使消费者能够以技术无关的方式管理其数据库,同时编排多种截然不同的数据库技术。
正是由于这个原因,Trove 几乎完全在管理平面中运行,并将数据访问留给应用程序(使用所选数据库技术支持的原生协议)。与此形成对比的是,例如 DynamoDB 提供了数据API。
Trove为多种数据库技术或数据存储提供了参考实现。Trove用户可以自由修改这些数据存储,提供额外的数据存储,并修改Trove操作特定数据存储的方式。
一些用户能够根据自身需求扩展Trove,并提供参考实现中不具备的附加功能。
Trove 简史
Trove 项目于 2012 年初启动,最初由 Rackspace 和惠普提供贡献。当时,该项目被称为 RedDwarf,这一名称至今仍可在代码中的许多地方看到,例如 redstack 工具,或变量上的神秘 rd_ 前缀。
Trove 的初始代码在孵化期间作为 Grizzly 和 Havana 版本的一部分提供。Trove 在 Icehouse 版本中被正式集成到 OpenStack 中。
OpenStack 版本每六个月发布一次,按字母顺序排列。
Trove 作为集成项目在 2014年4月 OpenStack 的 Icehouse 版本中首次发布,支持 MySQL、 MongoDB、Cassandra、Redis 和 Couchbase。每个数据库的能力略有不同。该版本还包含了一个基本的策略框架,以实现可扩展性,并简化未来版本中新增能力的过程。
六个月后,Trove 的 Juno 版本推出了两个新框架;一个用于复制,另一个用于集群。此版本包含了 MySQL 复制和 MongoDB 集群的基本实现。
Kilo 版本扩展了这些框架,并为 MySQL 复制引入了额外的能力。此外,此版本还增加了对许多新数据库的支持,包括 DB2、CouchDB 和 Vertica。
OpenStack Trove中的租户
从架构上讲,默认情况下 OpenStack Trove 是一个单租户数据库即服务(DBaaS)平台。这意味着每个租户对新的 Trove 数据库的请求都会导致配置一个(或在某些情况下多个)Nova 实例,每个实例都拥有其专用的存储和网络资源。这些实例不会与此用户或其他任何用户的其他数据库请求共享。
这并不意味着响应租户请求而创建的数据库实例将拥有专用硬件。Nova 默认旨在成为一个多租户系统,但操作员可以配置策略或插件,以有效确保不同的实例不会共享相同的硬件。Trove 无法控制这一点。
如所述如前所述,Trove 是一个用于数据库即服务的平台,并且正如后续章节所讨论的,这意味着租户的 Trove 实现的模型实际上可以由提供商或运营商更改。
Trove在OpenStack生态系统中
OpenStack 被组织成一系列服务。每个 OpenStack 服务都提供一个公共API,其他服务可以通过该公共API与之交互。
图 1-3 展示了该服务的简化表示。
所描述的OpenStack服务具有RESTful公共API。Trove就是此类服务之一,它提供数据库即服务的功能。
在OpenStack中,身份由名为Keystone的服务管理,网络由Neutron管理,块存储由Cinder管理,对象存储由 Swift管理,计算实例由Nova管理。
Horizon 是仪表板服务,提供 Web界面。其他一些 OpenStack 服务包括 Heat(编排)、Ceilometer(事件管理) 和 Sahara(Hadoop即服务)。
一个简单的 OpenStack 部署通常至少包含四个服务:Keystone、Neutron、Cinder 和 Nova。许多部署还包括 Swift。
图 1-4 展示了一个典型的 OpenStack 部署。
客户端应用程序和其他OpenStack服务均通过公共API访问这些服务。
Trove 是一项客户端服务,使用并消耗其他核心服务的服务,您可以将其添加到图 1-5中所示的示意图中。如图 1-5左上方所示,Trove 提供了自身的公共API。它通过调用其他 OpenStack 核心服务的公共API来使用这些服务。
Keystone 执行的一项重要任务是身份管理——用户对各种服务的公共API的访问凭据进行验证。但 Keystone还承担着另一项非常重要的任务,即作为所有OpenStack服务的单一目录。
所有OpenStack服务都必须向Keystone注册,通过这种方式,这些服务便对能够访问Keystone的用户开放。
Trove 注册为数据库服务。因此,了解 Keystone 端点并能够访问 Keystone 的用户可以查询 Keystone 以获取 Trove 注册的数据库即服务端点。
在后面的章节中,我们还将深入探讨 Trove 的工作原理。但从高层次来看,当 Trove 接收到一个请求(例如,请求创建一个附加了 300 GB 存储、规格类型为 m1.large 的数据库实例)时,Trove 将会验证客户端身份(使用 Keystone),通过检查其自身的持久化数据存储来核实客户端的配额,如果请求有效,则执行以下操作(不一定按此顺序):
• 请求Cinder创建一个300 GB的卷
• 请求Nova创建一个m1.large类型的实例
• 从 Neutron 请求网络接口
它将通过 Keystone 目录中确定的各个服务的公共API与这些服务进行交互,从而完成所有这些任务。
因此,可以清楚地看到,每个服务都可以在其专用机器(硬件)上独立正常运行;只需在 Keystone中将可公开访问的IP地址注册为端点即可。
OpenStack 的这种架构使其特别适合大规模部署。考虑一个企业希望提供高可用的 OpenStack 服务的例子。可以按图 1-6 所示进行配置。
三个副本该服务的实例在三台不同的机器上启动,并在前面放置一个负载均衡器 这三台机器的前面。
在此配置中,“服务”会将负载均衡器机器的公共IP注册到Keystone服务目录中,因此任何希望连接此服务的客户端都将被指示与负载均衡器连接,然后由负载均衡器适当地转发请求。
总结
我们在此总结以同样的问题作为引言章节的开头:什么是数据库即服务 ?
广义上讲,可以将数据库即服务(DBaaS)定义为一种软件,它使用户能够简化和自动化在使用数据库技术时必须执行的管理和管理活动。这包括配置、用户管理、备份与恢复、确保高可用性和数据弹性、自我修复、自动扩展、补丁以及升级管理等能力。
一些DBaaS解决方案通过抽象化数据库和管理活动,并将自身插入到数据路径(数据平面)中来实现。另一些则仅提供管理和管理操作的抽象(管理平面),并完全或几乎完全不介入数据路径。
一些是特定于数据库的(例如微软Azure云数据库和Cloudant),另一些则在单一统一产品集下提供特定于数据库的能力(如亚马逊RDS),而OpenStack Trove的独特之处在于其目标是与数据库无关。
许多 DBaaS 解决方案在架构上是单租户的。OpenStack 的独特之处在于,它既可以作为软件由用户部署在私有云中,也可以由服务提供商部署并作为托管私有云或公有云提供。
尽管 OpenStack Trove 在架构上实现了单租户模型,但通过扩展可以允许用户提供多租户数据库。Tesora DBaaS 产品中的 Oracle 12c 就是一个例子。
OpenStack Trove 是一个开源的数据库即服务(DBaaS)平台,是 OpenStack 项目的一部分。因此, OpenStack Trove 可以作为私有云、公有云或托管私有云中 DBaaS 解决方案的基础。
下一章将深入探讨 Trove,从如何下载、安装和配置它开始。
102

被折叠的 条评论
为什么被折叠?



