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)# root@dlp ~(keystone)# openstack image create Trove-Ubuntu --file=trove-master-guest-ubuntu-jammy.qcow2 --disk-format=qcow2 --container-format=bare --tag=trove --private 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 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