深入理解OpenStack Trove(txt+pdf+epub+mobi电子书下载)


发布时间:2020-08-01 19:59:25

点击下载

作者:(美)Amrith Kumar(艾姆瑞斯·库马尔),(加)Douglas Shelley(道格拉斯·雪莱)

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

深入理解OpenStack Trove

深入理解OpenStack Trove试读:

推荐语

作为最流行的开源云计算平台之一,OpenStack日渐成熟,为众多行业参与者提供了强大的支撑。而在作为IT基础资源之一的数据库云化管理方面,OpenStack同样给我们带来了设计优雅的Trove作为其DBaaS服务。Trove是OpenStack的一部分,基于OpenStack的核心基础服务而构建,很好地诠释了云平台的强大能力。Trove所支持的底层数据库非常广泛,并且具有强大的扩展性。

本书作为学习Trove的难得资料,为你360 °讲述Trove的前世今生,带你领略OpenStack DBaaS的精彩实践。绿星云科技CTO及联合创始人 黄明生

关于作者

Amrith Kumar是Tesora公司的CTO和创办者,这家公司拥有超过20年为专门从事企业存储应用、高性能容错系统和大规模并行数据库的公司生产业界领先产品的经验。Amrith kumar是OpenStack Trove(数据库即服务项目)的活跃技术贡献者,也是该项目核心审查团队的一员。在那之前,他曾在Dataupia公司担任技术副总裁和产品经理,也是Satori Data Warehousing平台的创办者及Sepaton的董事长兼总经理,负责核心虚拟磁带库产品的开发。他拥有多项专利,这些专利涉及高性能数据库和算法,在分布式计算中有着广泛的适用性。

Douglas Shelley是Tesora的产品开发副总裁,也是第1名加入Tesora的员工。他组建了一支经验丰富的企业级软件专业团队,致力于发布Tesora DBaaS平台,并且在OpenStack社区有着积极的贡献。他在IT界和软件产品开发领域工作超过20年,致力于应用交付、数据管理和集成,是OpenStack Trove项目的活跃技术贡献者。在加入Tesora之前,他负责软件的产品开发超过10年,并带领各个团队应对了有关数据同步、集成和转换方面的挑战。

关于技术评论员

Nikhil Manchanda是惠普云的核心工程师之一。他从OpenStack Trove的Juno、Kilo和Liberty发布伊始就一直是该项目的技术负责人(PTL)。他设计并编写了OpenStack Trove项目的重要部分,并在项目开始时就成为Trove的核心贡献者之一。他的专长在OpenStack、Python和数据库领域,但也偶尔涉足C++和机器学习领域。他之前从事软件更新智能、本地地理系统和移动应用相关工作。

在工作之余,他会经常趴在桌子上,刻苦钻研他的树莓派或NAS4Free盒子,或者写诗歌和短篇小说。

鸣谢

我们要感谢整个OpenStack Trove社区,感谢社区成员对Trove版本的提交和贡献,以使得OpenStack的数据库服务成为现实。如果没有这么多开发者、审阅者和运营商在数年里对项目的贡献,我们不会有如此丰富的话题进行写作。

特别感谢Tesora的整个团队,他们通过评论、回答技术问题和提供有创意的内容来支持本书。

感谢Apress团队,Mark Powers、Louise Corrigan、Christine Ricketts和Lori Jacobs都很棒。

特别感谢Laurel Michaels,他在社区里做了很多改善Trove文档的工作,在本书初稿完成后精心审阅了每个章节,并提供了宝贵的改进建议。——Amrith&Doug第1章关于DBaaS的介绍

DBaaS(Database as a Service,数据库即服务)不但是一个相对较新的项目,而且有着很好的通用性。不同的公司、产品和服务都声称提供DBaaS,很容易引起人们的困惑。

实际上,DBaaS是一个非常特别的项目,有着非常明显的优势。在本章中,我们将介绍DBaaS并讨论以下议题:

● 什么是DBaaS;

● IT(信息技术)组织面对的数据库挑战;

● DBaaS的特性;

● DBaaS的优势;

● 其他相似的解决方案;

● OpenStack Trove;

● OpenStack生态系统中的Trove;

● Trove的一段简要历史。1.1什么是DBAAS

顾名思义,DBaaS是以服务的形式向用户提供数据库,但是这意味着什么?

例如,是否意味着DBaaS参与了数据的存储与检索,以及查询的处理?是否意味着DBaaS就是执行一系列操作,比如数据验证、备份和查询优化?或提供某些能力,比如高可用、复制、故障转移和自动缩放?

要回答这些问题,可以将DBaaS拆分成两个部分:数据库和服务。1.1.1 数据库

曾经有一段时间,数据库和RDBMS(关系型数据库管理系统)同义。现今这个术语同样用于表示RDBMS和NoSQL数据库技术。

数据库管理系统是一项技术,有时只是软件,有时是专业的定制硬件,允许用户存储和检索数据。在免费在线计算机词典上数据库管理系统的定义是“管理大量的结构化集合持久数据,并为许多用户提供查询设施的一类程序”。1.1.2 服务

服务的本质是服务的交付,而不是交付的服务。

换句话说,将某种事物作为服务,可以使运营商将某种事物作为消费品提供给用户,并使用户快速访问。

例如,将电子邮件作为服务提供给多个供应商,包括谷歌的Gmail和微软的Off ice365,用户就很容易接受电子邮件服务,而减少了安装、管理服务器和电子邮件软件的挑战。1.1.3 服务类别

软件作为服务(Software as a Service,SaaS)的流行,促进了“as a Service”一词的普及和应用。该词通常用于指将应用作为服务,例如Salesforce.com用户关系管理(CRM)软件既是一个托管平台,提供在线服务,也提供基础设施即服务(IaaS)产品如AWS,以及平台即服务(PaaS)解决方案如Cloud Foundry或Engine Yard。

DBaaS是SaaS的一个特例,并继承了SaaS的一些属性。事实上DBaaS主要提供托管服务并面向用户使用,用户只需在使用时支付相应的费用。1.1.4 DBaaS的定义

DBaaS可以被广义地定义为一种技术。

● “按需”提供数据库服务器。

● 规定服务器的规格。

● 在复杂的拓扑结构中配置数据库服务器或者数据库服务组。

● 自动化管理数据库服务器和数据库服务器组。

● 在系统负载响应时自动提供缩放数据库的能力,并动态优化配套基础设施资源的利用率。

显然,这些都是很宽泛的定义,不同的产品可以提供不同程度的服务。

亚马逊在提供EC2作为其AWS公有云的一个计算服务的同时,也提供了一些DBaaS产品。尤其是,它提供了关系数据库的关系数据库服务(RDS)如MySQL或Oracle,并提供了Redshift的数据仓库服务,以及DynamoDB和SimpleDB这两个NoSQL方案。

OpenStack是一个软件平台,允许云运营商和公司为自己的用户提供云服务,包括Nova(类似亚马逊的EC2计算服务)、Swift(类似亚马逊的S3的对象存储服务)及众多其他服务。其中的一个服务Trove,是OpenStack的DBaaS解决方案。

不像亚马逊的DBaaS产品有指定的数据库,Trove允许你从流行的关系型数据库和非关系型数据库中选择一个数据库。对于每个数据库,Trove提供了多种便利,包括在整个数据库的生命周期内简化管理、配置和维护。1.2IT部门面对的数据库挑战

数据库及运行它们的硬件,是成本的一个重要部分,也是操作IT基础设施的负担。数据库服务器通常是数据中心里最强大的机器,它们依赖几乎所有计算机的子系统的高性能。

与用户端应用程序的交互是网络密集型的,查询处理是内存密集型的,索引是计算密集型的。检索数据需要极快地进行随机磁盘访问和数据加载,批量更新意味着快速处理磁盘写入。传统数据库不倾向于大规模的跨机器扩展,这意味着资源必须被集中到单个计算机上,或有大量的资源冗余。

当然,新的数据库技术如NoSQL和NewSQL正在改变这些,但也带来了新的挑战。它们可以更容易地在计算机之间进行扩展,减少了对超大硬件的需求,但对分布式处理的协调会使网络资源的负担加大。

这些新的数据库技术的普及也带来了另一个挑战,管理任何特定的数据库都可能需要大量的专业技术知识。所以,IT部门通常只在一种特定的数据库技术或某些情况下,在一些数据库技术方面有专业知识,并且,这些IT部门通常只提供其用户支持的有限的数据库技术。在某些情况下,这是合理的,或者成为企业标准。

然而近年来,开发团队和终端用户已经意识到,不是所有的数据库都是相同的。现在的数据库有着特定的访问模式,比如键-值查询、文档管理、图的遍历或者时间序列索引。这样一来,人们对新技术有了越来越多的需求,相关经验却有限。

从2000年年末开始,NoSQL数据库呈现爆发式增长。虽然这些技术可能会被抵制,但是它们的优势和流行程度使人们慢慢接受它们。

然而,IT组织应该怎样支持所有的NoSQL和SQL数据库,而无须深入了解每个数据库的细节呢?

亚马逊的方法是使计算无处不在,人们可以方便地通过点击几个键和使用信用卡来消费。然后,它将数据库的一些复杂操作变得自动化,并将其作为一种服务提供给用户。这就迫使IT部门做出改变。但是,如果想达到目标,就需要构建专业的团队去熟悉亚马逊的这些技术,而且就像以前的IT团队一样,只有为数不多的选项可以选择。

OpenStack Trove可以让IT组织在企业内部操作一个完整的DBaaS平台。IT组织可以为其用户提供丰富多样的数据库,与亚马逊用其AWS云和RDS产品所提供的服务有相同的易用性。Trove的用户可以享受其好处,而不需要同等规模的或需要大规模投资的有着专业数据库技术的亚马逊专家团队。1.3DBAAS的特性

考虑到DBaaS这个术语的广泛应用,我们需要理解DBaaS的一些特点,这可以帮助我们快速评估每个候选解决方案,并将其根据意义分组。

一些共同特点如下。

● 操作平面:数据平面vs管理、控制平面。

● 租户:单租户vs多租户。

● 服务定位:私有云vs公有云vs托管云。

● 交付模式:服务vs平台。

● 支持的数据库:单个vs多个,SQL vs NoSQL。1.3.1 管理平面和数据平面

DBaaS解决方案的一个重要特点是它会执行多种操作,我们大体可以把这些活动分为两组。

数据库操作有提供、安装和配置、备份和还原、配置复制(或镜像或群集)、调整依附在实例上的存储大小及其他管理操作。这些大致可归入系统管理类,被认为是管理平面的一部分,其所操作的数据的实际内容对发出命令的用户是不透明的。

当然,还有其他完全独立但是同样重要的操作,比如插入、查询和修改数据,创建表、命名空间、索引、触发器和视图,检查查询计划。这些可大致归入数据管理类,被认为是数据平面的一部分,其所存储的数据是用户实际访问和处理的。

被管理的数据库实例在管理平面提供给操作员和管理员一组接口,而在数据平面提供给最终用户和数据库分析师一组接口。

不同的活动和用户在不同的平面参与,如图1-1所示。图1-1 数据平面和管理平面的图形表示

数据库在两个不同的平面即数据平面和管理平面操作。OpenStack Trove几乎完全在管理平面操作。亚马逊的RDS提供数据库和相应的编排工具来管理数据库,其编排工具同样处于管理平面,与此类似的如SQL Server(数据库)和管理SQL Server的Azure SQL (编排工具)。其他DBaaS产品(如亚马逊的DynamoDB)处于数据平面。

因此,Trove使应用程序完全透明地访问数据API(应用编程接口),这些API由经过自动化和简化的管理方面的数据库提供并暴露在外。例如,当用户使用Trove来提供MySQL时,其数据库服务器是一个标准的未进行修改的MySQL服务器的副本,用户在该服务器上查询和更新数据等都是直接与底层服务器交互的,而不是与Trove本身。1.3.2 租赁

租赁是DBaaS解决方案的一个非常重要的属性。通常有两种租赁模式:单租户和多租户,我们依次分析这两种模式。

图1-2有助于我们理解这两种模式的概念,其中单租户在左边,多租户在右边。图1-2 用两个数据库服务器来说明单租户和多租户

1.单租户解决方案

单租户DBaaS解决方案是一种对每个租户提供的数据库依赖于特定的专用资源(数据库、计算、存储、网络等)的解决方案。在某些情况下,这意味着一个请求两台数据库实例的用户获得两个实例,每个实例都有自己的专用资源;而在其他情况下,这两个实例也许共享相同的资源,但是这些资源不与任何其他租户共享。

亚马逊的RDS、Redshift和OpenStack的Trove是单租户解决方案的示例。每个用户对数据库的请求将会生成一个单一实例(可能在虚拟机上有一个数据库实例)。虽然在计算基础设施级别上它们可能被认为是多租户解决方案,但在DBaaS级别它们是单租户解决方案。

单租户架构的好处是,每个用户的活动比较孤立。由于每个用户在各自运行的数据库上有一个专用的资源池,所以一个用户在特定的时间内执行许多查询或更新,不会影响到系统中的其他用户访问他们的数据。但是请注意,如果是多租户模式,则会因为在基础设施级缺乏隔离而受到影响。

2.多租户解决方案

多租户DBaaS解决方案是一种由不同的租户配置的可以共享相同资源的数据库,共享的范围可以是一个单一的物理机或虚拟机或跨机器的群集。

Oracle 12c是将数据库作为服务提供时可以构成多租户DBaaS解决方案的一个例子。一个单一的数据库服务器实例将承载一个或多个容器数据库。每个容器数据库将对每个用户、租户、用户提供一个可插入的数据库,并且这些可插入的数据库将容纳每个用户的数据。另一个例子是亚马逊的DynamoDB,它将一个用户的数据与其他用户的数据存储在底层的共享硬件的一个大集群上。

多租户系统可能导致隔离更少,并使得用户之间的资源有更多的潜在冲突,它通常对总体资源利用更有效,因为一个用户未使用的资源可以更容易地被其他用户使用,并被相同的基础设施共享。1.3.3 服务位置

DBaaS解决方案可以在不同的场景下(例如公有云、私有云或托管云)应用。

1.公有云

在公有云中,一些第三方拥有、管理并操作计算基础设施,允许其他人和企业购买、使用基础设施中的服务。

亚马逊AWS是公有云模型的最常见的例子。其他类似的解决方案包括微软的Azure、谷歌的云平台和惠普(HP)的Helion公有云。

对普通用户来说,公有云通过服务级别协议(SLA)和担保响应时间或对所提供的服务进行控制等方式提供。

公有云的一个常见的问题是,它们大多是多租户模式,所以会共享基础设施。例如一个用户的计算实例,不会受到相同物理服务器上其他租户的计算实例的影响,这种影响通常被称为邻近噪声(noisy neighbor)。

一些公有云对基础设施上资源的一些更细粒度的操作可能比较困难。例如部署在Amazon上的实例,你可以选择可用性区域(粗控制),但不能保证在同一个可用性区域的两个实例不在同一台物理机上,这可能会导致可用性的问题。如果机器托管的这两个实例出现故障,则这两种服务将停止运行。

公有云的一个主要驱动是用户只需为其所消费的内容支付费用。这缓解了一些问题,例如资源利用率、容量规划和转变私有云中的资本费用为一个可变的运营费用。除此之外,在公有云上非常容易建立和运行其他程序,不需要设置机器和网络就能工作,如果出现故障,则公有云的实施者将负责修复。

2.私有云

许多大型企业将其内部的IT基础设施作为云,并使用工具来提供和管理这些基础设施的各个组成部分。

在许多方面,私有云是企业数据中心的自然演变。这些私有云提供计算、存储和网络基础设施及企业身份管理等服务。

此外,一些企业允许最终用户提供和消费数据库服务,其数据在私有云内由IT组织提供的基础设施存储和处理。

私有云通常为用户提供SLA,比如对响应时间及服务参数如中断时间和停机时间的保证。

私有云也经常为用户提供更大的控制权,比如布局和基础设施的运作,而这通常是在其他模式如公有云中没有的。

通常情况下,数据的隐私、安全性和成本因素,会使得更多人选择私有云。对风险的规避和一些习惯也是人们选择私有云的重要因素。

3.托管云

托管云是公有云和私有云的混合体,因此资源由一方所有,而由另外一方运营。通常,这些资源是全部归用户所有的。

提供托管云服务的公司有RackSpace、BlueBox、Peer1和Contegix等。许多公有云运营商也提供托管云产品,例如亚马逊的GOV云和惠普的托管云服务。

私有云是由企业数据中心演变而来的,托管云则是由外包数据中心演变而来的。

用户可以享受私有云带来的好处(服务水平协议、担保、专用资源等),而不必管理基础架构本身。托管云提供商通常运营大型数据中心,可以使用户节省开支。

在某些情况下,用户可以选择在物理上隔离基础设施(如带锁的机架),用于提高安全性和保护隐私。1.3.4 服务vs平台

用户在使用亚马逊的数据库服务时,很明显是在与一个服务进行交互,是无法访问提供RDS服务的后台系统的。服务就是用户能购买和消费的软件,而用户在购买和消费时是不会关心也不能访问提供这些软件的背后的系统的。

企业可以从openstack.org下载并安装OpenStack,也可以安装OpenStack Trove及可以在自己的基础设施上进行操作的软件。这不是一个DBaaS,用户仍然需要安装、配置和操作它并做各种各样的事情(这将在后面的章节中讨论),例如构建guest镜像、创建配置组、创建安全组,等等。OpenStack Trove代表了操作DBaaS的平台。

同样,企业可以创建和提供功能齐全的DBaaS产品平台,包括在自己的基础设施上管理完整的DBaaS。以Tesora的DBaaS平台为例,该平台基于OpenStack Trove提供了完整的Trove功能和一些扩展,以及许多常用的数据库guest镜像。1.4DBAAS的好处

DBaaS解决方案试图将许多复杂、容易出错的步骤及涉及数据库的一些重复操作自动化,同时提供给应用开发人员和用户端应用程序访问可扩展的、可靠的数据管理基础设施的权限。

使用DBaaS(和其他as a Service产品一样),用户能够访问他们所选择的数据库,而无须关心底层的复杂操作。1.4.1 易于提供

DBaaS的一个直接好处是提供了一个数据库实例。在过去的IT行业中,这需要数周甚至数月,现在可以在几秒或几分钟内完成。用户可以选择数据库的类型、版本和其他一些基本属性。该数据库实例可以快速配置好并返回用于连接的信息。1.4.2 一致性的配置

提供数据库实例的复杂性经常会导致前后两个实例之间的差异难以检测。不幸的是,这种细微的差异往往会在半夜转化为一个严重的问题,常见的是数据的丢失或损坏。

自动化DBaaS解决方案的提供机制保证了所提供的每个数据库实例有完全相同的配置。

这也意味着,对配置的改变,可以很容易地应用到所有数据库实例,也更容易检测到任何偏差。1.4.3 自动化操作

在数据库的生命周期内,许多操作需要被执行,包括生成备份、更新配置参数、升级到新的数据库版本、重建索引、回收未使用的空间。

可以设置自动化地来执行这些操作,或者基于一个特定的时间表(基于时间的,比如周五进行全备份,每天进行增量备份),或者基于特定的事件或阈值(当删除的记录空间超过X%时、当自由空间低于Y%时)。

这些操作的自动化大大减少了IT运营团队的工作,还可以确保这些操作的一致性并避免失败。1.4.4 自动缩放

数据库需要应对不断变化的负载及在峰值时的资源调配,这会导致在非高峰时段对资源的利用不足。自动缩放功能可以根据工作的负载调整并分配给数据库合理的资源。

许多数据库都可以无须停机进行缩放,这是云操作的一个非常有吸引力的地方。这是一个精细化的处理过程,自动化大大简化了这个操作。1.4.5 提高开发的灵活性

自动化配置可以更容易、更快地创建一个可用的数据库实例,还可以提高开发的灵活性。在许多领域如数据分析,分析师的分析思维是迭代的。一个人通常不知道正确的问题是什么,然而第一个问题的答案可帮助解决下一个问题。

快速配置可以帮助人们快速轮询数据库实例,当不再需要一个数据库实例时,删除配置或者销毁实例是非常重要的。

如果DBaaS只是使提供数据库更容易,那么长生命周期的数据库不会有助于灵活性。DBaaS的好处是,当数据库已经使用完毕后,可以迅速销毁,从而释放所分配的资源到资源池中。1.4.6 更好的资源利用和设计

通过使用DBaaS平台,IT部门可以监测内部的整体数据库需求和发展趋势,可以定期扩大和更新云基础设施,也可以根据行业的发展趋势来调整。调整的原因可能是有更新的体系结构,或者所选的硬件配置有了更好的价位。最后也可以根据内部不断变化的需求做出调整。

IT部门的目标之一是最大限度地提高资源的利用率,同时在内部根据趋势和需求提供最灵活的服务。

实现这一目标的一种方式是操作可在部门内共享的资源池,并允许用户在使用基础设施时,配置、消费并按时间支付费用。IT部门也可以在面对意外的需求时,合理地使用配置。

这不仅提高了IT部门的最低承受能力,也可以让IT部门更加满足用户的需求。1.4.7 对于提供者或操作者简化角色

在一个不提供DBaaS的企业里,IT部门必须对数据库允许其用户使用的各个方面都有全面了解。用户需要有一些DBA(数据库管理)知识和技能,并且在IT部门内有很好的管理技能。

从本质上讲,这意味着IT部门只允许非常专业的用户使用其数据库技术。这通常是所谓的企业标准限制对数据库技术的选择的基本原理。

随着按需服务和体现最佳实践的DBaaS的演变,软件也需要自动化并简化最常见的工作流程和管理行为。这减轻了IT部门的负担,并降低了IT部门在每个数据库技术领域都拥有深厚的专业知识的要求,用户也可以选择更多的合适的数据库技术来解决问题。1.5其他DBAAS的提供者

这里有一些提供类似OpenStack Trove功能的DBaaS解决方案。1.5.1 亚马逊RDS

亚马逊RDS是保护性产品,它提供运行MySQL、Oracle、PostgreSQL、SQL Server或亚马逊自己的兼容MySQL的数据库Aurora的可管理的数据库实例。

所有这些配置、包括多可用性区域在亚马逊AWS云上都是可用的。亚马逊RDS包括一些有用的功能,例如自动缩放、实例监控和维修、按时间点恢复、生成快照、自我修复、数据加密。1.5.2 亚马逊Redshift

亚马逊Redshift是基于ParAccel(现Actian)技术开发的完全托管的PB级数据仓库解决方案。它采用标准的PostgreSQL前端连接,这使得它很容易使用标准的SQL用户端和工具来部署Redshift并理解PostgreSQL。它集成了亚马逊许多解决方案,例如S3、DynamoDB和弹性MapReduce(EMR)。1.5.3 微软Azure SQL Database

微软将其流行的关系数据库SQL Server的一个版本作为服务,这项服务作为微软的IaaS的一部分来提供微软的Azure。1.5.4 Google Cloud SQL

Google Cloud SQL是另一款MySQL兼容的DBaaS产品,类似于亚马逊的RDS提供MySQL。它是谷歌云平台的一部分,其前身为谷歌应用程序引擎。1.5.5 亚马逊DynamoDB

亚马逊的DynamoDB是一种快速、灵活的NoSQL数据库服务,是一个完全托管的数据库服务,同时支持文件和键值对的数据模型。DynamoDB也是多租户设计的,并拥有透明的可扩展性和弹性。用户可以享受DynamoDB可扩展性带来的优势,而不需要做任何事情。这全部由基础服务管理。

出于这个原因,DynamoDB能够保证应用程序在任何规模下都保持一致(单位为毫秒)。1.6OPENSTACK TROVE

OpenStack Trove项目的使命如下。

提供可扩展和可靠的云数据库作为服务;提供关系型和非关系型数据库引擎的功能,并继续完善其各项功能和可扩展的开源框架。

因此,和前面提出的其他DBaaS解决方案不同,Trove尝试提供一个DBaaS平台,可以让用户消费关系型数据库引擎和非关系数据库引擎。

该使命被反映到OpenStack Trove的架构中(会在后面的章节中讨论)。Trove旨在提供一个平台,让用户使用与技术无关的方式来管理他们的数据库,同时提供了一些与众不同的数据库技术。

正是由于这个原因,Trove几乎只在管理平面工作并管理应用程序(由所选择的数据库技术所支持的本地协议)的数据存取。而DynamoDB提供了数据的API。

Trove提供了各种数据库技术、数据库类型的相关实现。Trove的用户可以自由地修改这些数据库类型,并提供额外的类型,修改Trove操作特定的数据库类型的方式。

一些用户可以拓展Trove以达到自己的目的,并实现一些额外的不可用的功能。1.7TROVE的一段简要历史

Trove项目于2012年由Rackspace和惠普发起。当时,该项目被称为RedDwarf,有些变量现在还出现在代码中的许多地方,例如redstack工具或变量前的神秘前缀rd_prefix。

作为Grizzly和Havana版本的一部分,Trove的初始代码是可用的(孵化期间)。Trove被正式纳入OpenStack作为Icehouse版本的一部分。

OpenStack每6个月发布一个新版本,并按字母顺序排列。

Trove的最初版本在2014年4月作为集成项目在OpenStack的Icehouse版本中发布,支持MySQL、MongoDB、Cassandra、Redis和CouchBase。每个数据库类型的功能有些许不同。它也包括一个基本策略框架,使得Trove易于扩展,并简化了新功能在后续版本中的添加。

于2010年10月发布的Trove Juno版本,首次发布了两款新的框架:一款用于复制;一个用于集群。在这个版本中包含了MySQL复制和MongoDB集群的基本实现。

Kilo版本扩展了这些框架,并推出了MySQL复制的附加功能。此外,该版本还增加了对许多新的数据库的支持,包括DB2、CouchDB和Vertica。1.8OPENSTACK TROVE中的租约

在结构上,OpenStack Trove默认是单租户DBaaS平台。这意味着,每个由一个租户请求的一个新的Trove数据库会提供一个(在某些情况下是一个以上)Nova实例,每个实例都有自己专用的存储器和网络资源。这些实例不会被来自该用户或其他用户的任何数据库请求共享。

这并不意味着一个租户请求创建的数据库实例将有自己的专用硬件。Nova默认是一个多租户系统,但操作者可以配置策略或插件,这可以有效地保证不同的实例不会共享相同的硬件。Trove并不控制这些。

如前所述,Trove是一个DBaaS平台,如在后面的章节中所讨论的,这意味着提供商或操作者实际上可以改变Trove的租户模型。1.9OPENSTACK生态系统中的TROVE

OpenStack是一系列服务的集合。每个OpenStack服务暴露了各自的公共API,其他服务可以使用公共API与其交互。

如图1-3所示为一个服务的简化表示。图1-3 一个简单的OpenStack服务

OpenStack服务拥有一个基于REST的公共API。Trove就是这样的一个服务,并提供了DBaaS功能。

在OpenStack里,Keystone服务管理身份,Neutron管理网络,Cinder管理块存储,Swift管理对象存储,Nova管理计算。

Horizon是仪表盘服务,并提供了Web界面。其他OpenStack服务有Heat(编排)、Ceilometer(事件管理)和Sahara(Hadoop的服务)。

一个简单的OpenStack部署通常包括至少四个服务:Keystone、Neutron、Cinder和Nova。许多部署也包括Swift。

图1-4显示了一个典型的OpenStack部署。图1-4 一个简单的OpenStack安装示意图

用户端应用程序和其他OpenStack服务都使用它们的公共API访问这些服务。

Trove是某个服务的用户端,并且可以消费其他核心服务的服务,你可以按照图1-5将它添加到该结构中。Trove在图1-5的左上方,暴露了自己的公共API,通过调用其他OpenStack核心服务各自的公共API来提供服务。图1-5 Trove作为其他服务的用户端的一个简单的OpenStack部署

Keystone执行的一个重要任务是身份管理,即用户对各种服务的公共API访问的凭据。但是,它还有另一个非常重要的任务,那就是作为所有的OpenStack服务的唯一入口。

所有OpenStack服务都需要用Keystone注册,注册完成后,这些服务可以被有权访问Keystone的用户访问。

Trove作为数据库服务被注册。因此,一个用户如果知道Keystone的end point,并且已获得使用Keystone的权限,就可以通过Keystone查询到Trove注册的DBaaS end point。

在后面的章节中,我们也将深入研究有关Trove运作的更多细节。然而,从一个较高的层面来看,当Trove接收到一个请求(例如,一个拥有300GB的存储空间和m1.large f lavor的新的数据库实例的请求)时,Trove将验证(使用Keystone)用户端,然后检查它自己的默认数据库类型来核实用户端的配额,如果请求是有效的,则执行以下操作(不一定按此顺序)。

● 请求Cinder创建300GB的卷。

● 请求Nova创建m1.large类型的一个实例。

● 请求Neutron创建网络接口。

● Trove通过公共API和其他服务交互来完成这些事情,公共API可以通过keystone中的服务目录来选择。

不失一般性,你可以看到每个服务都可以操作自己的专用机器(硬件),每个服务需要注册一个可以公开访问的IP地址作为keystone中的end point。

OpenStack的这种架构使得它特别适合大规模部署。例如,一个企业想要提供一个高可用的OpenStack服务,则其配置可能如图1-6所示。图1-6 一个配置冗余与负载均衡的服务

服务的三个副本在三台不同的机器上运行,并且负载均衡被置于这三台机器的前面。

在这种配置下,服务将在Keystone的服务目录中注册负载均衡器的公共IP,因此任何和该服务通信的用户端将被告知与负载均衡器连接,然后负载均衡器负责转发请求到合适的机器上。1.10总结

我们用本章开头的问题来结束本章:什么是数据库服务?

从广义上来说,DBaaS可以被定义为一款软件,它允许用户简化和自动化使用数据库技术时进行的运营和管理活动,其中的功能涉及配置、用户管理、备份和恢复、确保高可用性和数据恢复能力、自我修复、自动缩放、修补能力和管理升级。

一些DBaaS解决方案通过抽象数据库和管理活动,并在数据路径(数据平面)中插入这些操作来达到这个目的。其他解决方案通过提供管理和行政活动(管理平面)的抽象,并完全或几乎完全保留数据路径来做到这一点。

某些功能是数据库特定的(例如微软的Azure云数据库和Cloudant),其他产品则在一个统一的产品集(例如亚马逊的RDS)上提供特定数据库的功能,然而OpenStack Trove在这方面是不同的,它不依赖特定的数据库。

许多DBaaS解决方案是单租户架构的。OpenStack可以作为一个用户在私有云中部署的软件,也可以作为一个托管云或公有云被服务提供商部署并提供。

OpenStack Trove架构实现了单租户模式,并且扩展策略可以使用户提供多租户数据库。例如Tesora的DBaaS产品Oracle 12c。

OpenStack Trove是一个开源的DBaaS平台,是OpenStack项目的一部分。因此,OpenStack Trove可以在共有云、私有云及托管云中形成DBaaS解决方案的基础。

在下一章中我们会深入研究Trove,从如何下载、安装和配置开始学习。第2章下载和安装OpenStack Trove

本章介绍如何下载和安装OpenStack Trove。你将学到安装OpenStack Trove的两种方法,并得到一个带有MySQL数据库镜像的运行中的Trove环境。

● 部署一个单节点的开发环境。

● 部署OpenStack的多节点环境。2.1部署一个单节点的开发环境

到目前为止,学习Trove最简单的方法是部署一个单节点的开发环境。你需要一台运行所需操作系统的机器。在本书中,我们使用来自Canonical公司的Ubuntu操作系统(版本为14.04 LTS)来进行大多数的安装和配置步骤。2.1.1 配置Ubuntu环境

这里从安装了Ubuntu 14.04 LTS的系统开始,并假设你已经为这台机器配置了一个名为ubuntu的单用户账户。

在许多情况下,Ubuntu作为用户操作系统,自带一些虚拟化软件。请确保你已经配置了主机操作系统及管理程序,这将确保你的用户操作系统的虚拟机可以高效运行。这种配置有时指的是nested hypervisor。

OpenStack将要求你启动内置的虚拟机。因此,要确保虚拟化的扩展如Intel VT或AMD-V在BIOS中启用。如果你正在使用VMware,则你必须确保你正在启动的虚拟机(VM)里的这些都在设置中启用。在2.1.3节“验证已启用虚拟化”部分的内容中,你需要确保内置的管理程序可以高效运行。

图2-1显示了一个典型的开发环境。在这种情况下,VMware中运行的Ubuntu虚拟机是开发机器,用户将在其上安装OpenStack和Trove。图2-1 虚拟机中的Ubuntu开发环境

注意 请确保你的Ubuntu机器(物理或虚拟的)有一个静态的IP(互联网协议)地址绑定在主(eth0)接口。通过在Ubuntu的eth0接口进行配置或使用管理程序设置DHCP(动态主机配置协议)预订都可以做到这一点(如果你选择使用虚拟机)。

在计算机上安装Ubuntu后,用户可以使用一个简单的ssh用户端连接到虚拟机,如图2-2所示进入命令行提示符界面。在安装时执行的大部分操作是通过这个命令行来完成的。图2-2 一个连接到Ubuntu用户虚拟机的shell2.1.2 安装一些基础包

除了你喜欢的编辑器,请确保安装了git-core、ntp、openssh-server和其他一些有用的安装包。2.1.3 确认你的配置

接下来,请确保你的机器配置正确,以防在之后出现更严重的问题。

1.验证静态IP地址

你可以通过在文件/etc/network/interfaces中指定地址(或使用Network Manager小程序)配置静态IP。

2.验证已启用虚拟化

因为你将在自己的Ubuntu机器上运行OpenStack(和Trove),所以你需要确保机器的配置已启用虚拟化功能。

你可能需要安装cpu-checker包,因为kvm-ok命令是这个包的一部分。

注意 如果你在一个虚拟机中使用Ubuntu,则将你的虚拟机在已知状态定期生成快照是一个好习惯。存储比较廉价,快照可以帮助你在失误的地方快速恢复,或者在一些测试出错的地方回滚!在写本书时,我们使用了一个虚拟机(VMware),图2-3显示了某个点上的快照页面。图2-3 显示在不同时期的一些快照2.1.4 给“ubuntu”用户赋予免密码sudo权限

在安装过程中执行的许多命令必须由root用户来执行。另外,一些OpenStack命令需要通过root用户运行,这些命令需要免密码的root权限,接下来你需要启用这个权限。

注意 一旦你使用了visudo来更改sudo的配置,则必须重启会话以使更改生效。关闭当前的shell会话,重新连接到计算机,然后验证用户ubuntu已经拥有免密码sudo权限。

如果你的更改生效,则你应该可以看到以下内容:

如果由于某种原因更改并未生效,则会看到如下内容:2.1.5 使用devstack工具安装OpenStack

在连接到shell后,可以使用devstack工具安装一个单节点的开发环境。

注意 在本书中,我们提供了命令、源代码列表及系统如何工作的描述。所有这些都和Kilo版本的Trove有关。下面的命令可以让你从OpenStack的源代码库下载源代码,但我们不限定你下载Kilo版本,你可以下载开发版本(master)的最新代码。因此,该系统的表现和代码行号可能和本书中所示不同。

在下面的交互会话中,执行命令的用户名称如下所示(这里是ubuntu)。

从openstack.org克隆devstack仓库。

接着,为devstack创建一个基础配置文件,该文件被称为localrc,是在devstack目录中创建的。下面的代码显示了一个localrc示例文件:

现在可以通过调用stack.sh来运行devstack工具。

注意 当运行一些需要长时间运行的命令如stack.sh时(第1次调用时这可能需要一段时间),把它们放在一个screen会话中运行是一个好主意。你可能需要安装screen。

注意 如果你是在一个虚拟机中运行Ubuntu,那么现在正是生成快照的好时机。我们通常将正在运行的虚拟机生成快照,然后停止所有的OpenStack服务,关闭Ubuntu操作系统,并在这种状态下生成虚拟机的另一个快照。

1.显示devstack screen会话列表

当使用devstack配置系统时,它将在一个screen会话中启动所有的OpenStack进程。你可以使用screen-ls命令列出所有当前正在运行的screen会话。

注意 screen命令的每次调用被称为一个screen会话。你可以在你的机器上同一时间运行多个screen会话,每个会话可以有多个窗口,每个窗口是一个独立的shell调用。

你可以从之前的命令输出中看到,devstack启动了一个screen会话58568.stack,而且你现在可以进入那个screen会话。图2-4显示了你的screen会话,在它显示的窗口中运行着Trove Conductor进程。图2-4 显示一个devstackscreen会话的窗口

在单个screen会话内,你可以使用列表命令(通常使用Ctrl-a-"键)获取可用窗口的列表。图2-5显示了一个screen窗口列表。图2-5 显示devstackscreen会话的可用窗口列表

注意 此处引用的列表命令用于列出一个screen会话中的可用窗口。这和列表命令(screen-ls)不同,后者用来列出机器上的screen会话。

你可以使用箭头键,然后按Enter键来选择这些列出来的screen窗口中的任何一个。图2-5中高亮显示的是Trove API窗口。

2.停止和重启devstack

当devstack启动时,所有OpenStack服务在screen会话中被启用(如上节所述)。

停止devstack仅仅需要关闭该screen会话和里面的所有服务。

可以通过执行命令做到这一点:

-X选项允许你提供要执行的命令(在这个例子里是quit),-S选项用于标识screen会话。你需要用你的机器上的screen会话的名称替换58568.stack,可以使用screen-ls命令来获取名称。

如果你碰巧对一些服务进行了配置更改,并且想重启它,那么你需要在devstack screen会话中找到正确的窗口,并在那里重启该服务。

可以通过连接到screen会话做到这一点(screen-dr 58568.stack),然后列出screen窗口(使用Ctrl-a-"键),并使用箭头键指向你想要重启的服务(tr-api、tr-tmgr和tr-cond)的窗口。

在每个窗口中,你将可以通过按Ctrl-C键终止正在运行的服务,可以通过重新运行刚才的命令(通过向上箭头键得到之前的命令)重启该服务。

如果关闭了运行devstack的机器,则重启devstack的最简单的方法是使用rejoin-stack.sh命令。

3.重置devstack环境

现在学习如何重置devstack中已经启动的OpenStack环境。

在执行unstack.sh命令时你还会注意到,该devstack设置的screen会话被销毁,并且所有的OpenStack进程被终止。

在关闭机器并重新安装devstack之前,清理你的设置是另一种明智的做法。可以使用clean.sh命令来清理环境:

现在可以快速地通过执行stack.sh命令重启devstack。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载