文档章节

Openstack Trove概要

宅蓝三木
 宅蓝三木
发布于 2017/06/12 10:36
字数 1263
阅读 407
收藏 0

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

 

 

© 著作权归作者所有

共有 人打赏支持
上一篇: CSS概要
下一篇: ATOM快捷键操作
宅蓝三木
粉丝 33
博文 51
码字总数 57005
作品 0
海淀
后端工程师
私信 提问
openstack trove之RDS镜像制作

自从Tesora被以色列公司收购后,原先tesora的CTO(trove的PTL)出走verizon,trove就几乎冷门了下来,官方的镜像制作被delete,只有在github上还有人clone了一些分支在维护,但这些脚本多多少...

Jon_Wong
2018/05/28
0
0
【深圳】OSC源创会第44期 开始报名

本期图文回顾链接:http://www.oschina.net/question/2652078_2159124 年后源创会召集令来了,这次来到我们的主场——深圳!三月春光明媚,我们相约鹏城。我们依旧秉承着“自由、开放、分享”...

巍巍巍微微微
2016/01/28
67K
113
谈谈OpenStack的八年之痒

2010年10月,OpenStack发布了第一个版本;上个月,发布了它的第十八个版本Rocky。几年前气氛火爆,如今却冷冷清清。Rocky版本宣布后,OpenStack群里也就出现了几篇简短的翻译过来的文章。圈子...

架构师技术联盟
2018/09/16
0
0
Openstack 之 使用disk-image-builder(DIB)制作镜像

上面左边是我的个人微信,如需进一步沟通,请加微信。 右边是我的公众号“Openstack私有云”,如有兴趣,请关注。 Openstack中的centos和ubuntu操作系统的镜像可以直接从社区直接下载下来使用...

余伟兵
2018/06/28
0
0
深度解读 OpenStack Liberty 国内代码贡献

作者:孙琦 转载自微信:云计算技术实践 又到了 OpenStack 新版本发布的季节,虽然秋意寒寒,但是仍然挡不住 OpenStack 再次掀起全球关注的热点。这是 OpenStack 第12个版本,与之前的沉稳低...

oschina
2015/10/30
4.5K
1

没有更多内容

加载失败,请刷新页面

加载更多

【Python3之异常处理】

一、错误和异常 1.错误 代码运行前的语法或者逻辑错误 语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) def test: ^SyntaxError: invalid...

dragon_tech
26分钟前
1
0
编写可维护的 JavaScript

几乎每个程序员都有接手维护别人遗留项目的经历。或者,有可能一个老项目某一天又被重新启动。 通常情况下,接手老项目都会让人恨不得抛弃掉整个代码库从头开始。老代码凌乱、文档缺失、需要...

前端小攻略
37分钟前
1
0
Amino——框架层

框架层 目录 框架层... 1 Amino. 2 (一)、首页(TAB1)... 2 (二)、聊天(TAB2)... 3 (三)、我的社区(TAB3)... 5 (四)、探索(TAB4)... 6 (五)、钱包... 7 兴趣部落... 8 (一...

铸剑为犁413
55分钟前
1
0
k8s-dashboard

Kubernetes Dashboard 是一个管理Kubernetes集群的全功能Web界面,旨在以UI的方式完全替代命令行工具(kubectl 等) kubectl apply -f http://mirror.faasx.com/kubernetes/dashboard/master...

ZH-JSON
今天
1
0
python如何安装库命令

python3 -m pip install 库名称

怪咖先生forever
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部