OpenStack Bobcat : Trove 利用方法2023/10/10 |
OpenStack Database Service(Trove)の利用方法です。
当例では以下のような環境を例に Trove をインストールしています。
------------+--------------------------+--------------------------+------------ | | | 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] | Trove 用の VM イメージを公式サイトからダウンロードして Glance に登録します。 また、[trove.conf] で [cinder_volume_type] に設定したボリュームタイプを作成しておきます。 |
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 | +--------------------------------------+--------------+--------+ | 6dba2636-44e9-47ce-928c-c9487f76c021 | Trove-Ubuntu | active | | 2216b5ad-eeb5-4b9a-b862-60b84fdfee1c | Ubuntu2204 | active | +--------------------------------------+--------------+--------+[root@dlp ~(keystone)]# openstack volume type create lvm-trove --private +-------------+--------------------------------------+ | Field | Value | +-------------+--------------------------------------+ | description | None | | id | e494c72c-3c1e-418d-8810-679c9f5f1377 | | is_public | False | | name | lvm-trove | +-------------+--------------------------------------+ |
[2] | Trove API が稼働するノード (当例では Network ノード) で、使用したいデータストアを登録しておきます。 当例では、MariaDB, PostgreSQL をデータストアとして登録します。 |
# データストア登録 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. # 各データストアのバージョンを登録 # [6dba2636-***] の部分は [2] で作成した Trove 用のイメージ ID root@network:~# su -s /bin/sh -c "trove-manage datastore_version_update mariadb 10.6 mariadb 6dba2636-44e9-47ce-928c-c9487f76c021 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 6dba2636-44e9-47ce-928c-c9487f76c021 postgresql 1" trove Datastore version '12(12)' updated. # 各データストアのバージョン用の設定パラメーターを登録 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 12 /usr/lib/python3/dist-packages/trove/templates/postgresql/validation-rules.json" Loading config parameters for datastore (postgresql) version (12) # VM イメージ用の [cloudinit] ファイル作成 root@network:~# mkdir /etc/trove/cloudinit
root@network:~#
vi /etc/trove/cloudinit/mariadb.cloudinit # 新規作成 # [CONTROLLER] に Trove API ホストを指定 #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] | Openstack システムを利用可能な任意のユーザーで認証して、任意のノードで、データベースインスタンスを作成します。 ちなみに、データベースインスタンスは VM イメージ上で Docker コンテナーとして起動します。 |
ubuntu@dlp ~(keystone)$ openstack datastore list +--------------------------------------+------------+ | ID | Name | +--------------------------------------+------------+ | 6590920f-a855-460c-a6f8-e8ae2445f05a | postgresql | | 7f456699-5cf6-4148-9838-a4af886fd7d6 | mariadb | +--------------------------------------+------------+ubuntu@dlp ~(keystone)$ openstack datastore version list mariadb +--------------------------------------+------+---------+ | ID | Name | Version | +--------------------------------------+------+---------+ | ddeedbe7-3643-46c7-8835-931c26af40ab | 10.6 | 10.6 | +--------------------------------------+------+---------+ubuntu@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 | 20 | 0 | 4 | True | +----+-----------+------+------+-----------+-------+-----------+ubuntu@dlp ~(keystone)$ openstack network list +--------------------------------------+---------+--------------------------------------+ | ID | Name | Subnets | +--------------------------------------+---------+--------------------------------------+ | 1d42f5e1-1ff2-4f70-8c48-8c7f6eae0672 | public | c192082c-f107-4eed-aafc-6e30b604e283 | | 529ae54a-4bba-40a3-905d-2ca57557236a | private | e14c5e7d-41d0-4378-af0f-0993c4389593 | +--------------------------------------+---------+--------------------------------------+ # データベースインスタンス作成 ubuntu@dlp ~(keystone)$ openstack database instance create MariaDB-106 \ --flavor 2 \ --size 10 \ --nic net-id=529ae54a-4bba-40a3-905d-2ca57557236a \ --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-10T03:20:57 | | datastore | mariadb | | datastore_version | 10.6 | | datastore_version_number | 10.6 | | flavor | 2 | | id | b394c76b-e3fd-45fe-8aa5-24a07f9ae20e | | name | MariaDB-106 | | operating_status | | | public | True | | region | RegionOne | | service_status_updated | 2023-10-10T03:20:57 | | status | BUILD | | updated | 2023-10-10T03:20:57 | | volume | 10 | +--------------------------+--------------------------------------+ # 作成中は [BUILD] ステータス ubuntu@dlp ~(keystone)$ openstack database instance list +--------------------------------------+-------------+-----------+-------------------+--------+------------------+--------+-----------+-----------+------+------+ | ID | Name | Datastore | Datastore Version | Status | Operating Status | Public | Addresses | Flavor ID | Size | Role | +--------------------------------------+-------------+-----------+-------------------+--------+------------------+--------+-----------+-----------+------+------+ | b394c76b-e3fd-45fe-8aa5-24a07f9ae20e | MariaDB-106 | mariadb | 10.6 | BUILD | | True | | 2 | 10 | | +--------------------------------------+-------------+-----------+-------------------+--------+------------------+--------+-----------+-----------+------+------+ # 作成が正常に完了すると [HEALTHY] ステータス ubuntu@dlp ~(keystone)$ openstack database instance list +--------------------------------------+-------------+-----------+-------------------+--------+------------------+-------- | ID | Name | Datastore | Datastore Version | Status | Operating Status | Public +--------------------------------------+-------------+-----------+-------------------+--------+------------------+-------- | b394c76b-e3fd-45fe-8aa5-24a07f9ae20e | MariaDB-106 | mariadb | 10.6 | ACTIVE | HEALTHY | True +--------------------------------------+-------------+-----------+-------------------+--------+------------------+-------- +-------------------------------------------------------------------------------------------------------- | Addresses +-------------------------------------------------------------------------------------------------------- | [{'address': '192.168.100.156', 'type': 'private', 'network': '529ae54a-4bba-40a3-905d-2ca57557236a'}, +-------------------------------------------------------------------------------------------------------- ---------------------------------------------+-----------+------+------+ | Flavor ID | Size | Role | ---------------------------------------------+-----------+------+------+ {'address': '10.0.0.244', 'type': 'public'}] | 2 | 10 | | ---------------------------------------------+-----------+------+------+ # アクセスして動作確認 ubuntu@dlp ~(keystone)$ mysql -h 10.0.0.244 -u serverworld -p -e "show variables like 'hostname'; show databases;" Enter password: +---------------+--------------+ | Variable_name | Value | +---------------+--------------+ | hostname | 735d226e7528 | +---------------+--------------+ +--------------------+ | Database | +--------------------+ | MyDB | | information_schema | +--------------------+ # データベースインスタンスを削除する場合は以下 ubuntu@dlp ~(keystone)$ openstack database instance delete MariaDB-106 Request to delete database instance b394c76b-e3fd-45fe-8aa5-24a07f9ae20e has been accepted. |
[4] | PostgreSQL を起動する場合の設定です。 |
ubuntu@dlp ~(keystone)$ openstack datastore list +--------------------------------------+------------+ | ID | Name | +--------------------------------------+------------+ | 6590920f-a855-460c-a6f8-e8ae2445f05a | postgresql | | 7f456699-5cf6-4148-9838-a4af886fd7d6 | mariadb | +--------------------------------------+------------+ubuntu@dlp ~(keystone)$ openstack datastore version list postgresql
+--------------------------------------+------+---------+
| ID | Name | Version |
+--------------------------------------+------+---------+
| fa031ab9-b596-41cc-8c4c-70ae03f6df51 | 12 | 12 |
+--------------------------------------+------+---------+
ubuntu@dlp ~(keystone)$ openstack database instance create PostgreSQL-12 \
--flavor 2 \
--size 10 \
--nic net-id=529ae54a-4bba-40a3-905d-2ca57557236a \
--databases MyDB --users serverworld:password \
--datastore postgresql --datastore-version 12 \
--datastore-version-number 12 --is-public \
--allowed-cidr 10.0.0.0/24 \
--allowed-cidr 192.168.100.0/24
ubuntu@dlp ~(keystone)$ openstack database instance list +--------------------------------------+---------------+------------+-------------------+--------+------------------+-------- | ID | Name | Datastore | Datastore Version | Status | Operating Status | Public +--------------------------------------+---------------+------------+-------------------+--------+------------------+-------- | a5da69bb-0eb8-4277-9469-f4e309daffc5 | PostgreSQL-12 | postgresql | 12 | ACTIVE | HEALTHY | True +--------------------------------------+---------------+------------+-------------------+--------+------------------+-------- +-------------------------------------------------------------------------------------------------------- | Addresses +-------------------------------------------------------------------------------------------------------- | [{'address': '192.168.100.171', 'type': 'private', 'network': '529ae54a-4bba-40a3-905d-2ca57557236a'}, +-------------------------------------------------------------------------------------------------------- ---------------------------------------------+-----------+------+------+ | Flavor ID | Size | Role | ---------------------------------------------+-----------+------+------+ {'address': '10.0.0.210', 'type': 'public'}] | 2 | 10 | | ---------------------------------------------+-----------+------+------+ubuntu@dlp ~(keystone)$ psql -h 10.0.0.210 -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 |