A blog to share security, networking and cloud related technology information as @vCloudernBeer picked up on his search for his destiny in the cloud. (LinkedIn: https://www.linkedin.com/in/chowanthony)

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

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.