Atom feed of this document
  
 

 Install the Database service

This procedure installs the Database module on the controller node.

Prerequisites. This chapter assumes that you already have a working OpenStack environment with at least the following components installed: Compute, Image Service, Identity.

[Note]Ubuntu 14.04 Only

The Database module is only available under Ubuntu 14.04. Packages are not available for 12.04, or via the Ubuntu Cloud Archive.

To install the Database module on the controller:

  1. Install required packages:

    # apt-get install python-trove python-troveclient python-glanceclient \
      trove-common trove-api trove-taskmanager
  2. Prepare OpenStack:

    1. Source the admin-openrc.sh file.

      $ source ~/admin-openrc.sh
    2. Create a trove user that Compute uses to authenticate with the Identity service. Use the service tenant and give the user the admin role:

      $ keystone user-create --name=trove --pass=TROVE_PASS \
        --email=[email protected]
      $ keystone user-role-add --user=trove --tenant=service --role=admin
  3. Edit the following configuration files, taking the below actions for each file:

    • trove.conf

    • trove-taskmanager.conf

    • trove-conductor.conf

    1. Edit the [DEFAULT] section of each file and set appropriate values for the OpenStack service URLs, logging and messaging configuration, and SQL connections:

      [DEFAULT]
      log_dir = /var/log/trove
      trove_auth_url = http://controller:5000/v2.0
      nova_compute_url = http://controller:8774/v2
      cinder_url = http://controller:8776/v1
      swift_url = http://controller:8080/v1/AUTH_
      sql_connection = trove:TROVE_DBPASS@controller/trove
      notifier_queue_hostname = controller
    2. Configure the Database module to use the RabbitMQ message broker by setting the rabbit_password in the [DEFAULT] configuration group of each file:

      [DEFAULT]
      ...
      rabbit_password = RABBIT_PASS
      ...
  4. Edit the [filter:authtoken] section of the api-paste.ini file so it matches the listing shown below:

    [filter:authtoken]
    auth_host = controller
    auth_port = 35357
    auth_protocol = http
    admin_user = trove
    admin_password = ADMIN_PASS
    admin_token = ADMIN_TOKEN
    admin_tenant_name = service
    signing_dir = /var/cache/trove
  5. Edit the trove.conf file so it includes appropriate values for the default datastore and network label regex as shown below:

    [DEFAULT]
    default_datastore = mysql
    ....
    # Config option for showing the IP address that nova doles out
    add_addresses = True
    network_label_regex = ^NETWORK_LABEL$
    ....
  6. Edit the trove-taskmanager.conf file so it includes the appropriate service credentials required to connect to the OpenStack Compute service as shown below:

    [DEFAULT]
    ....
    # Configuration options for talking to nova via the novaclient.
    # These options are for an admin user in your keystone config.
    # It proxy's the token received from the user to send to nova via this admin users creds,
    # basically acting like the client via that proxy token.
    nova_proxy_admin_user = admin
    nova_proxy_admin_pass = ADMIN_PASS
    nova_proxy_admin_tenant_name = service
    ...
  7. Prepare the trove admin database:

    $ mysql -u root -p
    mysql> CREATE DATABASE trove;
    mysql> GRANT ALL PRIVILEGES ON trove.* TO trove@'localhost' IDENTIFIED BY 'TROVE_DBPASS';
    mysql> GRANT ALL PRIVILEGES ON trove.* TO trove@'%' IDENTIFIED BY 'TROVE_DBPASS';
  8. Prepare the Database service:

    1. Initialize the database:

      # su -s /bin/sh -c "trove-manage db_sync" trove
    2. Create a datastore. You need to create a separate datastore for each type of database you want to use, for example, MySQL, MongoDB, Cassandra. This example shows you how to create a datastore for a MySQL database:

      # su -s /bin/sh -c "trove-manage datastore_update mysql ''" trove
  9. Create a trove image.

    Create an image for the type of database you want to use, for example, MySQL, MongoDB, Cassandra.

    This image must have the trove guest agent installed, and it must have the trove-guestagent.conf file configured to connect to your OpenStack environment. To correctly configure the trove-guestagent.conf file, follow these steps on the guest instance you are using to build your image:

    1. Add the following lines to trove-guestagent.conf:

      rabbit_host = controller
      rabbit_password = RABBIT_PASS
      nova_proxy_admin_user = admin
      nova_proxy_admin_pass = ADMIN_PASS
      nova_proxy_admin_tenant_name = service
      trove_auth_url = http://controller:35357/v2.0
  10. Update the datastore to use the new image, using the trove-manage command.

    This example shows you how to create a MySQL 5.5 datastore:

    # trove-manage --config-file=/etc/trove/trove.conf datastore_version_update \
      mysql mysql-5.5 mysql glance_image_ID mysql-server-5.5 1
  11. You must register the Database module with the Identity service so that other OpenStack services can locate it. Register the service and specify the endpoint:

    $ keystone service-create --name=trove --type=database \
      --description="OpenStack Database Service"
    $ keystone endpoint-create \
      --service-id=$(keystone service-list | awk '/ trove / {print $2}') \
      --publicurl=http://controller:8779/v1.0/%\(tenant_id\)s \
      --internalurl=http://controller:8779/v1.0/%\(tenant_id\)s \
      --adminurl=http://controller:8779/v1.0/%\(tenant_id\)s
  12. Restart Database services:

    # service trove-api restart
    # service trove-taskmanager restart
    # service trove-conductor restart
Questions? Discuss on ask.openstack.org
Found an error? Report a bug against this page

loading table of contents...