Rocky版新功能集锦之三:Trove

摘要

8月31日,备受业界关注的OpenStack第18个版本Rocky正式发布。在人工智能,机器学习,NFV和边缘计算等用户的驱动下,Rocky版本的OpenStack变得比以往更强大,它带来了数十种增强功能,并支持各种硬件架构,包括裸机管理服务等,这些更新和升级能够很好的满足基础设施的新需求。OpenStack正力争为业界提供一个开放,完善,稳定,功能齐全的最优解决方案。今天将围绕Rocky版本的Trove项目,对项目的新特性进行展示,业界需要掌握的关键点都在这里。

Rocky版新功能集锦之三:Trove

Trove简介

 

Trove是OpenStack官方的database-as-service项目,提供关系型或非关系型数据库的部署、配置、备份、恢复和监控,大大简化了操作流程。它在OpenStack Havana版本中被孵化,并被正式集成在OpenStackIcehouse版本中。项目的原始赞助商为HP和Rackspace,主要贡献者有Tesora,Rackspace,HP,IBM,Redhat,eBay,Mirantis。

 

Rocky版本Trove功能变更一览


在最新发布的OpenStack Rocky版本中,Trove未引入新的特性,更注重修复部分bug,例如:

 

1、MariaDB在主备切换的时候,如果在将副本附加到新主服务器之前重新激活旧主服务器,则可能会在旧主服务器上意外创建新的GTID,并同步到这些副本,从服务器无法变更为主服务器。该问题通过先将副本附加到新主服务来解决。

 

2、取消从Nova创建Volume,直接通过cinderclient创建volume。

 

3、Peviously root disable API返回没有任何内容的HTTP 200响应,现在将返回更合适的HTTP 204响应。

 

Trove项目架构


Rocky版新功能集锦之三:Trove

图1 Trove系统架构图

 

图1展示了Torve项目的架构,它由trove-api,trove-taskmanager,trove-conductor和trove-guestagent子系统构成,各子系统之间通过RPC进行通信。在这4个子系统中:

 

1、trove-api 提供REST风格的API,完成一些数据层面的逻辑操作(直接操作DB),比如获取实例列表、集群列表等,将复杂的异步任务它都交给taskmanager去完成,例如创建虚拟机、卷等操作。

 

2、trove-taskmanager与OpenStack的核心组件Nova、Cinder、Neutron等进行操作,完成数据库实例的创建、删除等资源操作。

 

3、trove-guestagent集成在vm镜像里面,创建、管理、备份数据库等,并通过周期性任务,实时更新数据库状态。

 

4、trove-conductor作为trove数据库访问的中间件,避免了trove-guestagent直接访问trove数据库。

 

Trove抽象出系统的公共基础架构,通过对基础架构的继承开发,可支持各种不同类型数据库。这也使得用户可以通过统一的方式操作不同类型的数据库,降低了使用难度。OpenStack Trove目前支持Cassandra,CouchBase,CouchDB,DataStaxEnterprise,DB2,MariaDB,MongoDB,MySQL,Oracle,Percona Server,PostgreSQL,Redis和Vertica。

 

Trove常用操作


Rocky版新功能集锦之三:Trove

图2 Trove概念架构图

 

图2显示了Trove的概念架构图,trove的主要操作也是围绕这几个概念实现的,分别为instance操作、datastore操作、backup操作、cluster操作、configuration操作、replica操作、user操作和database操作。下面展示了它们的部分操作,详细的操作参数可通过trove –help获得。

 

1. Instance操作

 

Instance代表一个运行有mysql或MongoDB等的虚拟机,对Instance的操作即可落在虚拟机上,也可落在mysql、MongoDB上。

 

  • trove create:创建一个trove instance

  • trove delete:删除一个trove instance

  • trove resize-instance:调整虚拟机的flavor

  • trove resize-volume:调整mysql或MongoDB等载盘的大小

  • trove restart:重启一个trove instance

  • trove show:显示一个trove instance的detail信息

  • trove update:更新一个trove instance的信息

  • trove list: 展示当前项目下的所有trove instances

  • trove root-disable: 禁止mysql等获得root权限

  • trove root-enable: 运行mysql等获得root权限

 

2. datastore操作

 

Datastore维护着当前Trove能够支持的数据库系统版本和对应镜像等信息。


  • trove datastore-list:显示有哪些datastore trove

  • datastore-show:显示一个datastore的detail信息

  • trove datastore-version-list:显示一个datastore的version list

  • trove datastore-version-show:显示一个datastore的一个version的detail信息

 

3. backup操作

 

trove提供备份mysql或MongoDB中的数据库到swift的操作,支持全量备份和增量备份。

 

  • trove backup-create:创建一个数据库的backup

  • trove backup-delete:删除指定ID的backup

  • trove backup-list:列出可用的所有backups

  • trove backup-list-instance:列出指定instance对应数据库的所有可用backups

  • trove backup-show:显示指定ID的backup的detail信息

  • trove backup-copy:从一个backup copy生成一个新的backup

 

4. cluster操作

 

针对有些数据库系统有cluster的概念,比如MongoDB。

 

  • trove cluster-create:创建一个新的cluster

  • trove cluster-delete:删除一个cluster

  • trove cluster-instances:列出一个cluster的所有instances

  • trove cluster-list:列出所有的clusters

  • trove cluster-show:显示指定ID的cluster的detail信息

  • trove cluster-grow: 向cluster中添加更多的instance

  • trove cluster-shrink: 从cluster中移除instance

  • trove cluster-seset_status: 设置cluster的任务状态为None

  • trove cluster-upgrade:将cluster升级到一个新的datastore

 

5. configuration group操作

 

trove提出了配置组的概念,这是为了是用户可以定制不同Instance中数据库系统的配置参数,针对不同的数据库系统类型,支持的配置参数也不相同,比如mysql支持的配置参数定义在:trove/templates/mysql/validation-rules.json。此外,trove限制每个instance只能配置一个configuration group。


  • trove configuration-create:创建一个新的configuration group

  • trove configuration-delete:删除一个configuration group

  • trove configuration-attach:attach一个configurationgroup到一个trove instance上

  • trove configuration-detach:detach一个troveinstance上的configuration group

  • trove configuration-default:显示一个trove instance的默认configuration group

  • trove configuration-instances:显示绑定到一个configurationgroup上的所有trove instances

  • trove configuration-list:显示所有的configuration group

  • trove configuration-show:显示一个configuration group的detail信息

  • trove configuration-parameter-list:列出指定version的datastore支持的configuration group配置参数

  • trove configuration-parameter-show:显示指定version的datastore支持的configuration group的某一项配置的详细信息

  • trove configuration-patch:把新的<values> patch到一个configuration group

  • trove configuration-update:更新一个configuration group的信息

 

6. replica操作

 

为了支持数据库的高可用,trove可动态添加或删除一个instance副本。

 

  • trove create [–replica_of <source_instance>][–replica_count <count>] :为一个instance添加一个新的副本

  • trove detach-replica: 去除一个instance的副本

 

7. user操作

 

trove支持创建数据库系统的user,并支持赋予/收回 user访问数据库系统的权限。

 

  • trove user-create:创建一个数据库系统的user

  • trove user-delete:删除一个数据库系统的user

  • trove user-grant-access:赋予user访问database(可以同时指定多个)的权限

  • trove user-revoke-access:收回user访问database的权限

  • trove user-list:list一个数据库系统的所有users

  • trove user-show:显示一个数据库系统中指定user的detail信息

  • trove user-show-access:显示一个数据库系统中指定user访问database的权限信息

 

8. database操作

 

trove支持在一个数据库系统上创建多个database;

 

  • trove database-create:在一个数据库系统上创建database

  • trove database-delete:删除一个数据库系统上的database

  • trove database-list:列举一个数据库系统上的所有databases

 

除了这些操作,Trove还有针对securitygroup、metadata、log等,这些操作使得Trove功能十分强大,满足了用户的需求。

 

 

Rocky版本遇到的问题与解决方案

 

目前,Trove向虚拟机中注入guestagent的配置文件等是通过Nova api中的personality参数,但是此参数已经从OpenStack Queens版本中弃用,将来会从Nova代码中移除。未来,Trove将使用Nova api中的–user-data参数进行文件的注入,具体操作如下:

 

1、重建trove.instance.models.BaseIntance中的get_injected_file函数,用来获取注入文件内容、路径、所有者和权限,生成InjectedFile对象,请将所有需要注入的文件构成InjectedFile list返回。

 

2、调整trove.taskmanger.models.FreshIntanceTask中的_prepare_userdata函数,基于InjectFile对象建立cloud-config脚本。如果Trove中还存在datastore_manager的cloudinit脚本,将会对该cloudinit脚本进行检测,然后将它和cloud-config脚本转化为mime multi part file类型脚本,以防止传递给cloud-init的数据类型大于一种。

 

3、利用-user-data传递参数给Nova api,虚拟机启动的时候,cloud-init通过执行脚本完成文件的注入。

 

未来Trove server与Troveguest agent间的通信将采用octaviad的网络架构模式。

 

参考链接:

https://github.com/openstack/trove

https://wiki.openstack.org/wiki/Trove

https://docs.openstack.org/developer/trove/

https://docs.openstack.org/releasenotes/trove/rocky.html

搞个大事件

Rocky版新功能集锦之三:Trove

值此Rocky版本发布之际,九州云将于10月10日上午10:00,正式线上同步发布全球首款基于 Rocky版本第七代全新开源云管理平台 ——Animbus® 7.0系列产品。


10月10日10点,诚邀业界同仁一同品鉴。

始发于:Rocky版新功能集锦之三:Trove