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

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 is your step-by-step guide to set up and run a secure and scalable cloud Database as a Service (DBaaS) solution. The book shows you how to set up and configure the Trove DBaaS framework, use prepackaged or custom database implementations, and provision and operate a variety of databases—including MySQL, PostgreSQL, MongoDB, Cassandra, and Redis—in development and production environments. Authors Amrith Kumar and Douglas Shelley, both active technical contributors to the Trove project, describe common deployment scenarios such as single-node database instances and walk you through the setup, configuration, and ongoing management of complex database topics like replication, clustering, and high availability. The book provides detailed descriptions of how Trove works and gives you an in-depth understanding of its architecture. It also shows you how to avoid common errors and debug and troubleshoot Trove installations, and perform common tasks such as: What you’ll learn Install and configure Trove Install preconfigured database technologies or guest images Launch database instances using Trove Perform common administrative tasks Resize and reconfigure database instances Take backups, and launch instances from existing backups Manage groups of database instances with configuration groups Debug and troubleshoot a Trove installation Set up replication and clustering Build custom guest images for use with Trove Who this book is for OpenStack Trove is targeted at a broad spectrum of readers, including software engineers seeking development agility with database-driven applications, devops engineers tasked with operating a database infrastructure with numerous databases, and data analysts looking to improve velocity by being able to quickly provision and release database capacity. Table of Contents Chapter 1 An introduction to Database-as-a-Service Chapter 2 Downloading and Installing OpenStack Trove Chapter 3 Basic Trove Operations Chapter 4 OpenStack Trove Concepts and Architecture Chapter 5 Advanced Trove configurations and operations Chapter 6 Debugging and Troubleshooting Chapter 7 Building custom guest images Chapter 8 Trove Configuration Files Chapter 9 Trove Quick Reference Chapter 10 Trove API Chapter 11 Trove Orchestration
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值