OpenStack Bobcat : How to use Trove2023/10/27 |
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 | +--------------------------------------+----------------+--------+ | bcbaa323-2438-4f5e-9473-49f633bb8f9b | CentOS-Stream9 | active | | 3c33177f-6d29-4b53-891f-c6116713c60a | Trove-Ubuntu | active | +--------------------------------------+----------------+--------+[root@dlp ~(keystone)]# openstack volume type create lvm-trove --private +-------------+--------------------------------------+ | Field | Value | +-------------+--------------------------------------+ | description | None | | id | 58041179-b1e3-4b9e-bba6-52ab64af6f1c | | 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 [3c33177f-***], 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 3c33177f-6d29-4b53-891f-c6116713c60a mariadb 1" trove Datastore version '10.6(10.6)' updated. [root@network ~]# su -s /bin/sh -c "trove-manage datastore_version_update postgresql 12 postgresql 3c33177f-6d29-4b53-891f-c6116713c60a postgresql 1" trove Datastore version '12(12)' 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.9/site-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 12 /usr/lib/python3.9/site-packages/trove/templates/postgresql/validation-rules.json" Loading config parameters for datastore (postgresql) version (12) # 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. |
[cent@dlp ~(keystone)]$ openstack datastore list +--------------------------------------+------------+ | ID | Name | +--------------------------------------+------------+ | a0683352-16e6-451f-bad0-375f0245d64a | postgresql | | a6eccaf2-5bbb-4ba6-bffc-673512c28dc4 | mariadb | +--------------------------------------+------------+[cent@dlp ~(keystone)]$ openstack datastore version list mariadb +--------------------------------------+------+---------+ | ID | Name | Version | +--------------------------------------+------+---------+ | bc8d414d-2027-49eb-96f0-3d29b381fc05 | 10.6 | 10.6 | +--------------------------------------+------+---------+[cent@dlp ~(keystone)]$ openstack flavor list +----+-----------+------+------+-----------+-------+-----------+ | ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public | +----+-----------+------+------+-----------+-------+-----------+ | 1 | m1.small | 2048 | 10 | 0 | 1 | True | | 2 | m1.medium | 4096 | 10 | 0 | 2 | True | | 3 | m1.large | 8192 | 10 | 0 | 4 | True | | 4 | m2.large | 8192 | 10 | 10 | 4 | True | | 5 | m3.large | 8192 | 50 | 0 | 4 | True | +----+-----------+------+------+-----------+-------+-----------+[cent@dlp ~(keystone)]$ openstack network list +--------------------------------------+---------+--------------------------------------+ | ID | Name | Subnets | +--------------------------------------+---------+--------------------------------------+ | 1245127b-0e5c-49c1-8638-de9d51c34949 | private | 88416326-c3b5-4e6f-bf53-71a77c213721 | | 44e70c99-2e15-429b-9dcc-cccaac557c0c | public | fac5715e-35f6-4007-9e8f-edffb2629eeb | +--------------------------------------+---------+--------------------------------------+ # create database instance [cent@dlp ~(keystone)]$ openstack database instance create MariaDB-106 \ --flavor 2 \ --size 10 \ --nic net-id=1245127b-0e5c-49c1-8638-de9d51c34949 \ --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 | 2023-10-27T04:22:15 | | datastore | mariadb | | datastore_version | 10.6 | | datastore_version_number | 10.6 | | flavor | 2 | | id | c04d884f-a1b8-4af8-b907-6de5f8bad35d | | name | MariaDB-106 | | operating_status | | | public | True | | region | RegionOne | | service_status_updated | 2023-10-27T04:22:15 | | status | BUILD | | updated | 2023-10-27T04:22:15 | | volume | 10 | +--------------------------+--------------------------------------+ # [BUILD] status during creation [cent@dlp ~(keystone)]$ openstack database instance list +--------------------------------------+-------------+-----------+-------------------+--------+------------------+--------+-----------+-----------+------+------+ | ID | Name | Datastore | Datastore Version | Status | Operating Status | Public | Addresses | Flavor ID | Size | Role | +--------------------------------------+-------------+-----------+-------------------+--------+------------------+--------+-----------+-----------+------+------+ | c04d884f-a1b8-4af8-b907-6de5f8bad35d | MariaDB-106 | mariadb | 10.6 | BUILD | | True | | 2 | 10 | | +--------------------------------------+-------------+-----------+-------------------+--------+------------------+--------+-----------+-----------+------+------+ # if successfully created, status turns to [HEALTHY] [cent@dlp ~(keystone)]$ openstack database instance list +--------------------------------------+-------------+-----------+-------------------+--------+------------------+-------- | ID | Name | Datastore | Datastore Version | Status | Operating Status | Public +--------------------------------------+-------------+-----------+-------------------+--------+------------------+-------- | c04d884f-a1b8-4af8-b907-6de5f8bad35d | MariaDB-106 | mariadb | 10.6 | ACTIVE | HEALTHY | True +--------------------------------------+-------------+-----------+-------------------+--------+------------------+-------- +-----------------------------------------------------------------------------------------------------------------------------------------------------+-----------+------+------+ | Addresses | Flavor ID | Size | Role | +-----------------------------------------------------------------------------------------------------------------------------------------------------+-----------+------+------+ | [{'address': '192.168.100.155', 'type': 'private', 'network': '1245127b-0e5c-49c1-8638-de9d51c34949'}, {'address': '10.0.0.242', 'type': 'public'}] | 2 | 10 | | +-----------------------------------------------------------------------------------------------------------------------------------------------------+-----------+------+------+ # verify accesses [cent@dlp ~(keystone)]$ mysql -h 10.0.0.242 -u serverworld -p -e "show variables like 'hostname'; show databases;" Enter password: +---------------+--------------+ | Variable_name | Value | +---------------+--------------+ | hostname | e67ce895ad84 | +---------------+--------------+ +--------------------+ | Database | +--------------------+ | MyDB | | information_schema | +--------------------+ # to delete a database instance, do like follows [cent@dlp ~(keystone)]$ openstack database instance delete MariaDB-106 Request to delete database instance c04d884f-a1b8-4af8-b907-6de5f8bad35d has been accepted. |
[4] | This is for the case to create PostgreSQL instance. |
[cent@dlp ~(keystone)]$ openstack datastore list +--------------------------------------+------------+ | ID | Name | +--------------------------------------+------------+ | a0683352-16e6-451f-bad0-375f0245d64a | postgresql | | a6eccaf2-5bbb-4ba6-bffc-673512c28dc4 | mariadb | +--------------------------------------+------------+[cent@dlp ~(keystone)]$ openstack datastore version list postgresql
+--------------------------------------+------+---------+
| ID | Name | Version |
+--------------------------------------+------+---------+
| 71feb3d8-04be-4841-9f56-53248c8a06b0 | 12 | 12 |
+--------------------------------------+------+---------+
[cent@dlp ~(keystone)]$ openstack database instance create PostgreSQL-12 \
--flavor 2 \
--size 10 \
--nic net-id=1245127b-0e5c-49c1-8638-de9d51c34949 \
--databases MyDB --users serverworld:password \
--datastore postgresql --datastore-version 12 \
--datastore-version-number 12 --is-public \
--is-public \
--allowed-cidr 10.0.0.0/24 \
--allowed-cidr 192.168.100.0/24
[cent@dlp ~(keystone)]$ openstack database instance list +--------------------------------------+---------------+------------+-------------------+--------+------------------+-------- | ID | Name | Datastore | Datastore Version | Status | Operating Status | Public +--------------------------------------+---------------+------------+-------------------+--------+------------------+-------- | b5b914dd-c1a1-4a00-a811-98d1d6dd153d | PostgreSQL-12 | postgresql | 12 | ACTIVE | HEALTHY | True +--------------------------------------+---------------+------------+-------------------+--------+------------------+-------- +-----------------------------------------------------------------------------------------------------------------------------------------------------+-----------+------+------+ | Addresses | Flavor ID | Size | Role | +-----------------------------------------------------------------------------------------------------------------------------------------------------+-----------+------+------+ | [{'address': '192.168.100.218', 'type': 'private', 'network': '1245127b-0e5c-49c1-8638-de9d51c34949'}, {'address': '10.0.0.239', 'type': 'public'}] | 2 | 10 | | +-----------------------------------------------------------------------------------------------------------------------------------------------------+-----------+------+------+[cent@dlp ~(keystone)]$ psql -h 10.0.0.239 -d MyDB -U serverworld -c "SELECT version();" Password for user serverworld: version ----------------------------------------------------------------------------------------------------------------------- PostgreSQL 12.16 (Debian 12.16-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit (1 row) |
Sponsored Link |