Enterprise OpenStack and Database as a Service (DBaaS)

    Posted by John Devereaux

    As OpenStack evolves and the community provides new functionality at the request of private and corporate clients, there is one important service that should benefit from infrastructure as a service (IaaS) running OpenStack, is a database as a service ( dBaaS). The efforts of the OpenStack project called Trove are aimed at developing dBaaS. Most conversations regarding Trove revolve around an open source MySQL database, but other enterprise-level databases can also run under Trove, such as Oracle dB 12c, which actually provides the enterprise with the functionality that Trove must support, including including multi-tenancy.


    Database as a Service (DBaaS)

    Database (DB) is one of the most critical services for an enterprise. Its function is to store data, make it possible to search, analyze and extract data for applications. Customers need the ability to scale both relational and non-relational cloud DBMSs. The main objective of the Trove project is to provide OpenStack users with the ability to easily and quickly manage the database, bypassing the difficulties associated with administration on the database itself.

    At the moment, the Trove model looks something like this:


    Be that as it may, another important goal of the Trove project is to allocate resources and automate complex operations, which are usually carried out by an escort engineer / database administrator. These include: deploying the database, applying fixes to the database, backing up data and restoring the database, monitoring the database and setting up a new database.

    Trove today

    To date, the process of creating a database instance based on the current Trove assembly looks something like this:


    This corresponds to the steps described below:

    Step 1: A request is sent to create a virtual database.
    Step 2: An authentication request through Keystone is in progress.
    Step 3: A Trove instance is provided (which also leads to the creation of a new VM on which the database will run).
    Step 4: Trove returns a response that includes an instance description, including:

    a.ID of the instance

    b.Type or version of the data store

    c. Volume

    size d. IP address of the instance

    e. Other requested or required variables

    At the moment, the limitation of DBaaS of the OpenStack platform is that Trove so far only supports working instances with one tenant. One of the new features of Oracle dB 12c is multi-tenancy, which is the critical functionality currently being implemented by customers such as Thomson Reuters and other finance companies. Taking into account the growing interest in OpenStack on their part, the inclusion of the implementation of this functionality in the development plan is critical for attracting customers in the financial sector.

    Multi-tenancy and trove

    Multi-tenant architecture allows one instance of software (software) to provide services to multiple clients. Each such customer is called a tenant. Tenants may be able to customize certain components of the application, for example, the color of the user interface, but they do not have the ability to customize the application code.

    Multi-tenant architecture can be economical, because in this case the costs of developing and maintaining software are shared between tenants. It can be contrasted with a single-tenancy architecture, in which each client has its own copy of the software, and can also have access to the code. With multi-tenant architecture, the provider only needs to do updates once. In a single tenant architecture, to apply updates, a provider needs to span multiple software instances.

    The current Oracle plan for OpenStack Trove:

    1. Each tenant receives a dedicated copy of the database
    a.based on a pre-configured VM image;

    b. the tenant operates on a compute node / nodes and on a node / nodes for data storage.

    2. The client has the ability to fully control the services.
    3. Support should be provided for any database application, any database query language and connection methods.
    4. For the first time, Oracle will change its licensing model for each CPU / core and announce the prices for a monthly subscription.
    To implement these changes Trove needs to slightly modify the architecture:


    In this case, the task flow is as follows:
    1. The user sends a request to the database (in our case, it is a portable database (PDB).

    2. Keystone receives an authorization request.

    3. A database container is provided (DC): a. The
    guest agent asks Oracle to create a PDB.

    b.Oracle creates a PDB.

    c.Oracle sends a response to the guest agent with connection attributes.

    4. The response containing the connection credentials is returned to the user.

    For this to work, the Trove project requires the following components:
    a.API server (API Server) –– receives requests and calls directly to guest agents to solve operational tasks, such as obtaining a list of database users, but calls the task manager to solve complex periodic tasks .

    b. Message Bus — A Messaging Queue Broker that routes messages between API points, such as the task manager and guest agent, through HTTP requests.

    c. The Task Manager is the “workhorse” of the system responsible for provisioning instances, monitoring the life cycle of each instance, and performing operations on any instance. It interacts with the API server, receiving messages and replying to them. Remember that both the task manager and the API server need to call HTTP functions to access OpenStack services.

    d. Guest Agent - a service running on a guest instance on which the database is running and managing and performing operations in the data warehouse. It provides online data storage and transmits a heartbeat signal to the API through the Conductor service.

    e.Conductor (Conductor) - a guest service running on the host, responsible for receiving messages from guest instances to update information on the host. When performing a database backup, Explorer performs the necessary actions using RPC messages sent via the message bus, as follows:

    1.trove-conductor is the entry point

    2.RpcService configured in /etc/trove/trove-conductor.conf sets conductor manager

    3. Requests are in the message queue.

    4.Heartbeat updates the status of all instances. There are three main options: NEW, BUILDING, and ACTIVE. You can add other statuses.

    However, Trove is not yet ready for such a new structure.

    In perspective

    The community development plan for the Icehouse release includes the following points:
    • Generalization of the kernel to enhance expansion.

    • Support for versioning a database with multiple cores.

    • Support for provisioning and cluster management.

    • Extensibility for building complete architectures (using Conductor and Scheduler components).

    • Support for features like the “parameters-group" of the Amazon relational database service.

    • Automate and run scheduled tasks.

    • Support Designate / Ceilometer.

    • Automation of failover.

    • Coverage of Tempest tests.

    Today, this list is missing, although there should be multi-tenancy. When using services such as Murano (it allows your users to choose which database service should be deployed with the appropriate variety settings), the ability to determine the amount of resources that need to be allocated for a given tenant is attractive for corporate clients who want to use the orchestration tool to the maximum combining the management and operation processes of components of their hardware and software. Murano, for example, strengthens access control using the Keystone service, which guarantees access only to specified users and allows Trove to interact with guest agents, which makes it possible to quickly create a database.
    All of these features are attractive to enterprise users, and for many, this is enough. But for those customers who need an additional level of corporate functionality, Trove’s development plan should include movement in that direction.

    Original article in English .

    Also popular now: