Openstack Trove是什么意思

87次阅读
没有评论

共计 3453 个字符,预计需要花费 9 分钟才能阅读完成。

丸趣 TV 小编给大家分享一下 Openstack Trove 是什么意思,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

Trove 简介

Openstack Trove 是 openstack 为用户提供的数据库即服务 (DBaaS)。所谓 DBaaS,即 trove 既具有数据库管理的功能,又具有云计算的优势。使用 trove,用户可以:

按需 获得数据库服务器

配置所获得的数据库服务器或者数据库服务器集群

对数据库服务器或者数据库服务器集群进行自动化管理

根据数据库的负载让数据库服务器集群动态伸缩

与 openstack 的其他组件一样,trove 也提供 RESTful API,并通过 RESTful API 和其他组件进行交互。

Trove 架构

上图为 trove 的架构图。Trove API 和用户进行交互,当 Trove API 接收到用户请求时,trove API 首先会调用 Keystone 的 API 来对用户进行认证,认证通过后才会去执行相应的操作。Trove API 会同步处理操作简单的一些请求,复杂的请求则会通过 Message Queue (RabbitMQ) 交给 Task Manager 来处理。Task Manager 会监听 RabbitMQ 的一个 topic,收到请求后就会进行处理。这些请求通常是分配数据库实例、管理数据库实例的生命周期、操作数据库等。和 openstack 的其他组件一样,Trove 也有一个 Infrastructure Database 来存储自己本身的数据,如数据库实例的信息等。Trove conductor 的主要功能是接收来自 guest agent 的状态更新信息,这些信息会被存储在 Infrastructure database 里面或者作为调用结果返回给其他服务。通常这些状态更新信息包括:guest agent 心跳包,数据库备份状态等。Guest Agent 运营于数据库服务器中 (虚拟机),给 trove 其他组件提供了一套内部使用的 API,trove 的其他组件通过 Message Queue 来调用这些 API,guest agent 收到 API 调用请求后,执行相应的数据库操作。

Trove 的安装部署请参考 Openstack 官方文档 (多坑慎入):

https://docs.openstack.org/project-install-guide/database/ocata/

Trove 的基本概念

数据库实例(Instance):包含数据库程序的 openstack 虚拟机,如果用户创建了一个数据库实例,那么他其实就创建了一台 openstack 虚拟机,并在该虚拟机上启动了数据库服务。

Datastore:用来表示和存储数据库的类型、版本、虚拟机镜像等信息。当用户创建一个数据库实例时需要指定 Datastore.

配置组 (Configuration Group):数据库参数组成的集合。用户可以将配置组应用到一个或多个数据库实例上,因而避免了大量的重复操作。

Trove 的用法0.添加 Datastore

在创建数据库实例时,需要指定 Datastore 来告诉 trove 需要用到的镜像、数据库类型及版本信息。所以在创建数据库实例之前需要在系统中创建 Datastore.

由于版权问题,openstack 官方并没有提供可供下载的镜像,需要用户自己去 build。可参考文档:

https://docs.openstack.org/developer/trove/dev/building_guest_images.html

Build 好镜像好需要将其上传到 glance 服务:

ad@ltczhp11:~$ glance image-create --name mysql-5.6 --disk-format=qcow2 --container-format=bare --file=./mysql-5.6.qcow2 --visibility public 
ad@ltczhp11:~$ glance image-list
+--------------------------------------+--------------------------+
| ID | Name |
+--------------------------------------+--------------------------+
| 31d60001-c2bf-496e-9f21-069bb411bd3b | CouchDB |
| eaf27f1b-3a8a-4efb-827c-697fa065933b | DB2 |
| 60ca8bfc-28a7-418a-9422-ec6548f23d54 | DIB-Mongodb |
| 51103b44-2618-4c15-8ded-4371bea8973a | DIB-Postgres |
| 8bc1a6a2-6ec3-4f37-bb54-91134b903996 | mongodb-lsl |
| c4c9a58f-bbe6-4640-8488-0c05b52028df | mysql-5.6 |
| 5d800163-3660-467a-a433-e1827924a741 | PostgreSQL |
| 38291f8f-5af6-4338-82b7-3f18dc355cae | ubuntu16.04-server-s390x |
+--------------------------------------+--------------------------+

使用 trove-manage 添加 Datastore:

root@ltczhp11:~# trove-manage datastore_update mysql  #创建一个 datastore
root@ltczhp11:~# trove-manage datastore_version_update mysql 5.6 mysql c4c9a58f-bbe6-4640-8488-0c05b52028df   1 # 创建一个 dadastore 的版本,一个 dadastore 可以有多个版本
root@ltczhp11:~# trove-manage datastore_update mysql 5.6 #指定默认的 datastore 版本 

1.基本的数据库实例操作

列出所有的数据库实例

$ trove list

创建一个数据库实例

$ trove create vm1 2 –size 3 –datastore mysql

重启一个数据库实例

$ trove restart vm1

删除一个数据库实例

$ trove delete vm1

强制删除一个数据库实例

$ trove force-delete vm1

调整一个数据库实例的规格

$ trove resize-volume vm1 4

$ trove resize-instance vm1 3

2.管理数据库用户

列出所有的数据库用户

$ trove user-list

创建一个用户

$ trove user-create

删除一个用户

$ trove user-delete

给一个用户授权访问某个数据库

$ trove user-grant-access

吊销用户对于某一个数据库的访问权限

$ trove user-revoke-access

显示用户信息

$ trove user-show

显示用户的权限

$ trove user-show-access

3. 数据库管理

在一个数据库实例中创建一个数据库

$ trove database-create

列出一个数据库实例中的所有数据库

$ trove database-list

删除一个数据库实例中的某个数据库

$ trove database-delete

4. 副本管理

创建一个副本

$ trove create  –replica_of

将一个副本从源数据库分离

$ trove detach-replica

让一个副本在副本集合中成为源数据库

$ trove promote-to-replica-source

删除挂掉的源数据库

$ trove eject-replica-source

设置副本亲和性

$ trove create  –replica_of  –locality affinity

$ trove create  –replica_of  –locality anti-affinity

看完了这篇文章,相信你对“Openstack Trove 是什么意思”有了一定的了解,如果想了解更多相关知识,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计3453字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)