Friday, December 5, 2025

OpenStack Epoxy : How to use Trove

 

OpenStack Epoxy : How to use Trove

 

This is how to use Trove.

This example is based on the environment like follows.

------------+--------------------------+--------------------------+------------
            |                          |                          |
        eth0|10.0.0.30             eth0|10.0.0.50             eth0|10.0.0.51
+-----------+-----------+  +-----------+-----------+  +-----------+-----------+
|   [ dlp.srv.world ]   |  | [ network.srv.world ] |  |  [ node01.srv.world ] |
|     (Control Node)    |  |     (Network Node)    |  |     (Compute Node)    |
|                       |  |                       |  |                       |
|  MariaDB    RabbitMQ  |  |      Open vSwitch     |  |        Libvirt        |
|  Memcached  Nginx     |  |     Neutron Server    |  |      Nova Compute     |
|  Keystone   httpd     |  |      OVN-Northd       |  |      Open vSwitch     |
|  Glance     Nova API  |  |  Nginx  iSCSI Target  |  |   OVN Metadata Agent  |
|  Cinder API           |  |     Cinder Volume     |  |     OVN-Controller    |
|                       |  |     Trove Services    |  |                       |
+-----------------------+  +-----------------------+  +-----------------------+

[1]Download a VM image for Trove and add it to Glance.
Also Create a Cinder volume type configured in [trove.conf].
root@dlp ~(keystone)# 
wget https://tarballs.opendev.org/openstack/trove/images/trove-master-guest-ubuntu-jammy.qcow2

root@dlp ~(keystone)# 
openstack image create Trove-Ubuntu --file=trove-master-guest-ubuntu-jammy.qcow2 --disk-format=qcow2 --container-format=bare --tag=trove --private
root@dlp ~(keystone)# 
openstack image list

+--------------------------------------+--------------+--------+
| ID                                   | Name         | Status |
+--------------------------------------+--------------+--------+
| 33def798-3361-483b-9de1-8c2c6e1c840c | Debian13     | active |
| a43cc8d1-4212-4118-9a8a-2f73315a6b46 | Trove-Ubuntu | active |
+--------------------------------------+--------------+--------+

root@dlp ~(keystone)# 
openstack volume type create lvm-trove --private

+-------------+--------------------------------------+
| Field       | Value                                |
+-------------+--------------------------------------+
| description | None                                 |
| id          | 90c0e51e-3de4-4e12-9424-c45221e80eb6 |
| is_public   | False                                |
| name        | lvm-trove                            |
+-------------+--------------------------------------+
[2]Add Datastore you'd like to use on the Node Trove API is running. (it's Network Node on this example)
For example, add MariaDB, PostgreSQL on here.
# add datastore

root@network:~# 
su -s /bin/bash trove -c "trove-manage datastore_update mariadb ''"

Datastore 'mariadb' updated.
root@network:~# 
su -s /bin/bash trove -c "trove-manage datastore_update postgresql ''"

Datastore 'postgresql' updated.
# add versions for each datastore

# for [a43cc8d1-***], that's the image ID of Trove you created in [2]

root@network:~# 
su -s /bin/sh -c "trove-manage datastore_version_update mariadb 10.6 mariadb a43cc8d1-4212-4118-9a8a-2f73315a6b46 mariadb 1" trove

Datastore version '10.6(10.6)' updated.
root@network:~# 
su -s /bin/sh -c "trove-manage datastore_version_update postgresql 14 postgresql a43cc8d1-4212-4118-9a8a-2f73315a6b46 postgresql 1" trove

Datastore version '14(14)' updated.
# add parameters for each version of datastore

root@network:~# 
su -s /bin/bash trove -c "trove-manage db_load_datastore_config_parameters mariadb 10.6 /usr/lib/python3/dist-packages/trove/templates/mariadb/validation-rules.json"

Loading config parameters for datastore (mariadb) version (10.6)
root@network:~# 
su -s /bin/bash trove -c "trove-manage db_load_datastore_config_parameters postgresql 14 /usr/lib/python3/dist-packages/trove/templates/mariadb/validation-rules.json"

Loading config parameters for datastore (postgresql) version (14)
# create [cloudinit] files for VM image

root@network:~# 
mkdir /etc/trove/cloudinit

root@network:~# 
vi /etc/trove/cloudinit/mariadb.cloudinit
# create new
# specify Trove API host for [CONTROLLER]

#cloud-config
runcmd:
  - echo 'CONTROLLER=network.srv.world' > /etc/trove/controller.conf
  - chmod 644 /etc/trove/controller.conf

root@network:~# 
cp /etc/trove/cloudinit/mariadb.cloudinit /etc/trove/cloudinit/postgresql.cloudinit

root@network:~# 
chown -R trove /etc/trove/cloudinit

[3]Login as any Openstack user and create a Database instance on a Node.
By the way, Database instance runs as a Docker container inside a VM instance.
debian@dlp ~(keystone)$ 
openstack datastore list

+--------------------------------------+------------+
| ID                                   | Name       |
+--------------------------------------+------------+
| e2c34f15-25f8-407b-97d7-3e8c3199dda7 | mariadb    |
| 1e321833-e1a7-43ab-96d6-e5a5c5bb8cb8 | postgresql |
+--------------------------------------+------------+

debian@dlp ~(keystone)$ 
openstack datastore version list mariadb

+--------------------------------------+------+---------+
| ID                                   | Name | Version |
+--------------------------------------+------+---------+
| 4bb28f7e-ca21-46f8-a6e7-f9a1384a8f4d | 10.6 | 10.6    |
+--------------------------------------+------+---------+

debian@dlp ~(keystone)$ 
openstack flavor list

+----+-----------+-------+------+-----------+-------+-----------+
| ID | Name      |   RAM | Disk | Ephemeral | VCPUs | Is Public |
+----+-----------+-------+------+-----------+-------+-----------+
| 1  | m1.tiny   |  2048 |   10 |         0 |     1 | True      |
| 2  | m1.small  |  4096 |   10 |         0 |     2 | True      |
| 3  | m1.medium |  8192 |   10 |         0 |     4 | True      |
| 4  | m1.large  | 16384 |   10 |         0 |     8 | True      |
| 5  | m2.medium |  8192 |   10 |        10 |     4 | True      |
+----+-----------+-------+------+-----------+-------+-----------+

debian@dlp ~(keystone)$ 
openstack network list

+---------------------------------+---------+----------------------------------+
| ID                              | Name    | Subnets                          |
+---------------------------------+---------+----------------------------------+
| 7de3878f-814f-4909-b4e6-        | public  | 319013fd-5412-4cce-              |
| d4dc1c740577                    |         | bb87-49f5a0c91b0e                |
| d442015a-b6f6-4349-890b-        | private | bb5efd0a-ea4d-42ee-99ca-         |
| c08eb5366a4d                    |         | 97cee2f56ca2                     |
+---------------------------------+---------+----------------------------------+

# create database instance
debian@dlp ~(keystone)$ openstack database instance create MariaDB-106 \
--flavor 2 \
--size 10 \
--nic net-id=d442015a-b6f6-4349-890b-c08eb5366a4d \
--databases MyDB --users serverworld:password \
--datastore mariadb --datastore-version 10.6 \
--is-public \
--allowed-cidr 10.0.0.0/24 \
--allowed-cidr 192.168.100.0/24 
+--------------------------+--------------------------------------+
| Field                    | Value                                |
+--------------------------+--------------------------------------+
| allowed_cidrs            | ['10.0.0.0/24', '192.168.100.0/24']  |
| created                  | 2025-09-04T00:21:00                  |
| datastore                | mariadb                              |
| datastore_version        | 10.6                                 |
| datastore_version_number | 10.6                                 |
| flavor                   | 2                                    |
| id                       | 97b16c31-e13c-471c-96fa-ccadad32f29e |
| name                     | MariaDB-106                          |
| operating_status         |                                      |
| public                   | True                                 |
| region                   | RegionOne                            |
| service_status_updated   | 2025-09-04T00:21:00                  |
| status                   | BUILD                                |
| updated                  | 2025-09-04T00:21:00                  |
| volume                   | 10                                   |
+--------------------------+--------------------------------------+

# [BUILD] status during creation

debian@dlp ~(keystone)$ 
openstack database instance list

+----------+----------+-----------+-------------------+--------+------------------+--------+-----------+-----------+------+------+
| ID       | Name     | Datastore | Datastore Version | Status | Operating Status | Public | Addresses | Flavor ID | Size | Role |
+----------+----------+-----------+-------------------+--------+------------------+--------+-----------+-----------+------+------+
| 97b16c31 | MariaDB- | mariadb   | 10.6              | BUILD  |                  | True   |           | 2         |   10 |      |
| -e13c-   | 106      |           |                   |        |                  |        |           |           |      |      |
| 471c-    |          |           |                   |        |                  |        |           |           |      |      |
| 96fa-cca |          |           |                   |        |                  |        |           |           |      |      |
| dad32f29 |          |           |                   |        |                  |        |           |           |      |      |
| e        |          |           |                   |        |                  |        |           |           |      |      |
+----------+----------+-----------+-------------------+--------+------------------+--------+-----------+-----------+------+------+

# if successfully created, status turns to [HEALTHY]

debian@dlp ~(keystone)$ 
openstack database instance list

+----------+----------+-----------+-------------------+--------+------------------+--------+-----------+-----------+------+------+
| ID       | Name     | Datastore | Datastore Version | Status | Operating Status | Public | Addresses | Flavor ID | Size | Role |
+----------+----------+-----------+-------------------+--------+------------------+--------+-----------+-----------+------+------+
| 97b16c31 | MariaDB- | mariadb   | 10.6              | ACTIVE | HEALTHY          | True   | [{'addres | 2         |   10 |      |
| -e13c-   | 106      |           |                   |        |                  |        | s': '192. |           |      |      |
| 471c-    |          |           |                   |        |                  |        | 168.100.1 |           |      |      |
| 96fa-cca |          |           |                   |        |                  |        | 24',      |           |      |      |
| dad32f29 |          |           |                   |        |                  |        | 'type': ' |           |      |      |
| e        |          |           |                   |        |                  |        | private', |           |      |      |
|          |          |           |                   |        |                  |        | 'network' |           |      |      |
|          |          |           |                   |        |                  |        | : 'd44201 |           |      |      |
|          |          |           |                   |        |                  |        | 5a-b6f6-  |           |      |      |
|          |          |           |                   |        |                  |        | 4349-     |           |      |      |
|          |          |           |                   |        |                  |        | 890b-     |           |      |      |
|          |          |           |                   |        |                  |        | c08eb5366 |           |      |      |
|          |          |           |                   |        |                  |        | a4d'}, {' |           |      |      |
|          |          |           |                   |        |                  |        | address': |           |      |      |
|          |          |           |                   |        |                  |        | '10.0.0.2 |           |      |      |
|          |          |           |                   |        |                  |        | 12',      |           |      |      |
|          |          |           |                   |        |                  |        | 'type': ' |           |      |      |
|          |          |           |                   |        |                  |        | public'}] |           |      |      |
+----------+----------+-----------+-------------------+--------+------------------+--------+-----------+-----------+------+------+

# verify accesses

debian@dlp ~(keystone)$ 
mysql --skip-ssl -h 10.0.0.212 -u serverworld -p -e "show variables like 'hostname'; show databases;"

Enter password:
+---------------+--------------+
| Variable_name | Value        |
+---------------+--------------+
| hostname      | 5c02e921654e |
+---------------+--------------+
+--------------------+
| Database           |
+--------------------+
| MyDB               |
| information_schema |
+--------------------+

# to delete a database instance, do like follows

debian@dlp ~(keystone)$ 
openstack database instance delete MariaDB-106

Request to delete database instance f8deb123-10a6-4568-a291-31fed089d349 has been accepted.
[4]This is for the case to create PostgreSQL instance.
debian@dlp ~(keystone)$ 
openstack datastore list

+--------------------------------------+------------+
| ID                                   | Name       |
+--------------------------------------+------------+
| e2c34f15-25f8-407b-97d7-3e8c3199dda7 | mariadb    |
| 1e321833-e1a7-43ab-96d6-e5a5c5bb8cb8 | postgresql |
+--------------------------------------+------------+

debian@dlp ~(keystone)$ 
openstack datastore version list postgresql

+--------------------------------------+------+---------+
| ID                                   | Name | Version |
+--------------------------------------+------+---------+
| bf8386e3-c58e-4ebb-a861-2fec78911321 | 14   | 14      |
+--------------------------------------+------+---------+

debian@dlp ~(keystone)$ openstack database instance create PostgreSQL-14 \
--flavor 2 \
--size 10 \
--nic net-id=d442015a-b6f6-4349-890b-c08eb5366a4d \
--databases MyDB --users serverworld:password \
--datastore postgresql --datastore-version 14 \
--datastore-version-number 14 --is-public \
--is-public \
--allowed-cidr 10.0.0.0/24 \
--allowed-cidr 192.168.100.0/24 

debian@dlp ~(keystone)$ 
openstack database instance list

+----------+----------+-----------+-------------------+--------+------------------+--------+-----------+-----------+------+------+
| ID       | Name     | Datastore | Datastore Version | Status | Operating Status | Public | Addresses | Flavor ID | Size | Role |
+----------+----------+-----------+-------------------+--------+------------------+--------+-----------+-----------+------+------+
| 64ed1524 | PostgreS | postgresq | 14                | ACTIVE | HEALTHY          | True   | [{'addres | 2         |   10 |      |
| -26cc-   | QL-14    | l         |                   |        |                  |        | s': '192. |           |      |      |
| 41a1-    |          |           |                   |        |                  |        | 168.100.2 |           |      |      |
| 8b54-    |          |           |                   |        |                  |        | 34',      |           |      |      |
| 63f2d2f2 |          |           |                   |        |                  |        | 'type': ' |           |      |      |
| 2377     |          |           |                   |        |                  |        | private', |           |      |      |
|          |          |           |                   |        |                  |        | 'network' |           |      |      |
|          |          |           |                   |        |                  |        | : 'd44201 |           |      |      |
|          |          |           |                   |        |                  |        | 5a-b6f6-  |           |      |      |
|          |          |           |                   |        |                  |        | 4349-     |           |      |      |
|          |          |           |                   |        |                  |        | 890b-     |           |      |      |
|          |          |           |                   |        |                  |        | c08eb5366 |           |      |      |
|          |          |           |                   |        |                  |        | a4d'}, {' |           |      |      |
|          |          |           |                   |        |                  |        | address': |           |      |      |
|          |          |           |                   |        |                  |        | '10.0.0.2 |           |      |      |
|          |          |           |                   |        |                  |        | 33',      |           |      |      |
|          |          |           |                   |        |                  |        | 'type': ' |           |      |      |
|          |          |           |                   |        |                  |        | public'}] |           |      |      |
+----------+----------+-----------+-------------------+--------+------------------+--------+-----------+-----------+------+------+

debian@dlp ~(keystone)$ 
psql -h 10.0.0.233 -d MyDB -U serverworld -c "SELECT version();"

Password for user serverworld:
                                                       version
----------------------------------------------------------------------------------------------------------------------
 PostgreSQL 14.19 (Debian 14.19-1.pgdg13+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 14.2.0-19) 14.2.0, 64-bit
(1 row)
Matched Content

No comments:

Post a Comment