社区核心项目-OpenStack Trove

启迪云研发部|郭全

随着云服务在各行各业的高速增长,传统IT服务正在逐步向云服务转变。在数据库方面,由于传统数据库管理的高复杂性、高成本以及低效率,导致越来越多的企业使用DBaaS作为其替代品。启迪云作为云计算服务的提供商,为用户提供了一套完整的DBaaS解决方案。

DBaaS介绍

将数据库以云服务模式交付给用户,就是数据库即服务-DBaaS(也称云数据库)。这些云数据库的主要优势是:

敏捷以及快速部署数据库服务;

在供应和取消供应数据库时,会占用和释放相关的计算资源,数据库资源可以被某个项目占用一段时间,项目结束后会被自动取消供应,返回到资源池中;

可以针对用户跟踪计算成本并对其收费。

DBaaS将数据库作为服务来交付,任何人都可以轻易地创建、使用、扩容和销毁数据库实例,由基础平台负责监控和运维,开发者可以做到只关心业务而屏蔽底层细节。DBaaS的优点主要表现在以下几个方面:

高效利用硬件和资源;

快速部署;

提供调优的数据库配置;

按需伸缩数据库规模;

明确的计量和收费;

数据实现高可用。

Trove概念和架构

❖ Trove简介

相较于AWS的RDS和阿里的云数据库,Trove是唯一开源的DBaaS服务。Trove是OpenStack核心组件中的Database as a Service服务,它的使命是让公有云/私有云用户可以轻易地部署可扩展的的稳定数据库实例,并且提供一键创建、定期删除、快速扩容、自动备份、监控报警等功能。Trove不仅仅是关系型数据库,而且还涵盖非关系数据库的服务,目前支持Cassandra、CouchBase、CouchDB、DataStax Enterprise、DB2、MariaDB、MongoDB、MySQL、oracle、Percona Server、PostgreSQL、Redis 和Vertica等数据库产品。

❖ Trove架构

Trove架构图

Trove-API是接入层,负责接收REST API请求。轻量级的API请求在接入层直接处理或者访问guestagent处理,比如获取实例列表;耗时相对较长的API请求则通过Message Bus中转给Trove-TaskManager进行调度处理。

Trove-Task Manager是调度处理层,主要完成比较繁重的工作,比如部署数据库实例,管理实例的生命周期,完成对数据库实例的操作等等。TaskManager会通过Nova、Swift的API访问OpenStack基础的服务,准备计算、网络和存储资源。

Trove-Conductor是GuestAgent访问数据库的代理层,主要是为了屏蔽掉GuestAgent直接对数据库的访问。

GuestAgent 是一种运行在客户端实例上的服务,主要提供具体数据库的运行和管理,并且对数据库本身进行操作。guestagent同样监听Message Bus消息队列来得到请求,并且运行在每一个数据库实例上。每一种数据库都需要一个自己的GuestAgent实现。

Message Bus是一种消息队列,主要负责API 端点,Trove Task Manager 和Trove Guest Agent 之间的消息交互。默认使用Rabbitmq作为消息队列。

在Trove的实现中,创建一个数据库实例首先需要创建一个虚拟机(nova组件提供),数据库服务运行在该虚拟机上。 数据服务需要的硬盘使用cinder组件提供的云硬盘。数据库服务所需要的网络包括安全规则由neutron组件提供。另外创建数据库实例的镜像由glance组件提供,镜像包含操作系统、数据库引擎以及GuestAgent。通过使用openStack组件,Trove可以很好的实现租户隔离。

❖ Trove优势

Trove相对于其他DBaaS服务来讲,主要是有两点优势,这两点优势也是Trove的设计目标。首先Trove同时支持关系型数据库和非关系型数据库,并且提供统一的API,减少了冗余实现,提升平台内聚。另外一个优势是完全基于OpenStack,Trove可以借助OpenStack其他组件提供的服务快速实现租户隔离、动态调度、灾备等,减少了重复开发,也提高了服务能力。

❖ Trove重要功能

创建与管理数据库集群:目前支持一主多从的mysql数据库集群以及MongoDB集群的创建。

动态扩展数据库实例:Trove提供了按需动态扩容功能,针对不同的瓶颈,trove可以对数据库所在的虚拟机进行cpu和内存的扩容,也可以对数据库使用的硬盘进行磁盘空间的扩容。

全量与增量备份数据库数据:用户可以根据需求方便的选择是进行全量备份还是增量备份,并且用户可以选择备份方式,比如对象存储(swift)、块存储(sheepdog)以及本地存储。

动态更新数据库配置:Trove为不同的数据库类型提供了统一的配置组接口,也就是说可以用同一个API修改不同数据库类型的配置。当然前提是Trove已经支持这些后端数据库的配置修改。

多租户隔离: Trove使用OpenStack Keystone实现多租户隔离,利用keystone的权限控制机制,针对不同的用户角色,可以实现不同程度的隔离。比如普通用户只可以看到自己的数据库,租户的管理员可以看到该租户下面的所有数据库,平台的超级管理员可以看到所有租户的数据库。

网络规则制定:Trove使用neutron的安全组规则来保证数据库服务的安全,可以设置只允许数据库的3306端口访问。

数据库服务的高可用:数据库的硬盘使用分布式存储保证数据的高可用,通过监控和集群管理来保证数据服务的高可用。

总结

Trove目前作为OpenStack社区的核心项目,启迪云完美对接了Trove,不仅优化了原有的功能,而且增加了计费、监控等定制化功能。启迪云提供一键部署数据库服务,优化数据库配置,对数据库进行计费和监控,提供报警服务和动态扩容等一系列的DBaaS解决方案。

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();