Wednesday, November 12, 2014

OpenStack Series: Part 12 – Trove – Database Service

Trove is a service in OpenStack that allows user to utilize a relational or non-relational database without needing to manage the database infrastructure.  It is an abstraction layer between the user and the database itself.  This abstraction layer will provision, scale and manage the database that reside on an OpenStack infrastructure.

Trove is integrated into the OpenStack project in the Icehouse release.  Initially it was called "Project Red Dwaf". It was a joint effort by HP, RackSpace and Tesora.

The mission statement for Trove from OpenStack documentation is
"To provide scalable and reliable Cloud Database as a Service provisioning functionality for both relational and non-relational database engines, and to continue to improve its fully-featured and extensible open source framework."

Trove Architecture

image source:

Another view that shows how Trove interacts with other components of OpenStack to provide the Database service.
image source:,fl_progressive,w_560/v1411707715/lcx4vcsdi7h4k1bpmcl4.png

Core components of Trove
  • API Server
  • Message Bus
  • Task Manager
  • Guest Agent
  • Conductor
Detail description of each of these components can be found here.

The Trove-api service is a WSGI that handles the REST API in which user can provision a database instance, to scale the database instance's cpu and memory as well as storage space.  The API can also be used to manage the database instance.  As we can see in the above diagram, an internal Database (can be MySQL or PostgreSQL) and a Message Bus (RabbitMQ, Qpid) is used for the trove api server to communicate with the Trove-taskmanager in which all the actions are executed.   

Trove-taskmanager talks to Nova, Cinder or Swift as well as Glance where the DB image is stored.  Once the database instance is up and running the GuestAgent that is part of the database instance will perform a health check and communicate the health status of the database instance back to Trove via the Trove-conductor.

Trove also interface with Keystone for authentication as well as Neutron utilizing the networking service.

Trove currently support the following Database type:
  • MySQL
  • MongoDB
  • Casandra
  • Redis
  • CouchDB
  • PostgreSQL <-on the way.
Related post:
OpenStack Series Part 1: How do you look at OpenStack?
OpenStack Series Part 2: What's new in the Juno Release?
OpenStack Series Part 3: Keystone - Identity Service
OpenStack Series Part 4: Nova - Compute Service
OpenStack Series Part 5: Glance - Image Service
OpenStack Series Part 6: Cinder - Block Storage Service
OpenStack Series Part 7: Swift - Object Storage Service
OpenStack Series Part 8: Neutron - Networking Service
OpenStack Series Part 9: Horizon - a Web Based UI Service
OpenStack Series Part 10: Heat - Orchestration Service
OpenStack Series Part 11: Ceilometer - Monitoring and Metering Service
OpenStack Series Part 13: Docker in OpenStack
OpenStack Series Part 14: Sahara - Data Processing Service
OpenStack Series part 15: Messaging and Queuing System in OpenStack
OpenStack Series Part 16: Ceph in OpenStack
OpenStack Series Part 17: Congress - Policy Service
OpenStack Series Part 18: Network Function Virtualization in OpenStack
OpenStack Series Part 19: Storage Polices for Object Storage
OpenStack Series Part 20: Group-based Policy for Neutron
"Trove." - OpenStack. N.p., n.d. Web. 28 Oct. 2014.

No comments:

Post a Comment