OpenStack Wallaby : Trove 利用方法2021/04/21 |
OpenStack Database Service(Trove)の利用方法です。
当例では以下のような環境を例に Trove をインストールしています。
------------+---------------------------+---------------------------+------------ | | | eth0|10.0.0.30 eth0|10.0.0.50 eth0|10.0.0.51 +-----------+-----------+ +-----------+-----------+ +-----------+-----------+ | [ Control Node ] | | [ Storage Node ] | | [ Compute Node ] | | | | | | | | MariaDB RabbitMQ | | Open vSwitch | | Libvirt | | Memcached httpd | | Neutron Server | | Nova Compute | | Keystone Glance | | OVN-Northd | | Open vSwitch | | Nova API | | Cinder Volume | | OVN Metadata Agent | | Cinder API | | Heat API/Engine | | 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-victoria-guest-ubuntu-bionic.qcow2
root@dlp ~(keystone)#
root@dlp ~(keystone)# openstack image create Trove-Ubuntu --file=trove-victoria-guest-ubuntu-bionic.qcow2 --disk-format=qcow2 --container-format=bare --tag=trove --private
openstack image list +--------------------------------------+--------------+--------+ | ID | Name | Status | +--------------------------------------+--------------+--------+ | 15f337ce-f310-4ad4-b501-fcc450857dd3 | Trove-Ubuntu | active | | 8df08a02-7c19-465e-8862-53eb2319918d | Ubuntu2004 | active | +--------------------------------------+--------------+--------+[root@dlp ~(keystone)]# openstack volume type create lvm-trove --private +-------------+--------------------------------------+ | Field | Value | +-------------+--------------------------------------+ | description | None | | id | 817b00eb-3c16-485a-998e-85ba553a09db | | 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. # 各データストアのバージョンを登録 # [15f337ce-***] の部分は [2] で作成した Trove 用のイメージ ID root@network:~# su -s /bin/sh -c "trove-manage datastore_version_update mariadb 10.2 mariadb 15f337ce-f310-4ad4-b501-fcc450857dd3 mariadb 1" trove Datastore version '10.2(10.2)' updated. root@network:~# su -s /bin/sh -c "trove-manage datastore_version_update mariadb 10.3 mariadb 15f337ce-f310-4ad4-b501-fcc450857dd3 mariadb 1" trove Datastore version '10.3(10.3)' updated. root@network:~# su -s /bin/sh -c "trove-manage datastore_version_update postgresql 10 postgresql 15f337ce-f310-4ad4-b501-fcc450857dd3 postgresql 1" trove Datastore version '10(10)' updated. root@network:~# su -s /bin/sh -c "trove-manage datastore_version_update postgresql 12 postgresql 15f337ce-f310-4ad4-b501-fcc450857dd3 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.2 /usr/lib/python3/dist-packages/trove/templates/mariadb/validation-rules.json" Loading config parameters for datastore (mariadb) version (10.2) root@network:~# su -s /bin/bash trove -c "trove-manage db_load_datastore_config_parameters mariadb 10.3 /usr/lib/python3/dist-packages/trove/templates/mariadb/validation-rules.json" Loading config parameters for datastore (mariadb) version (10.3) root@network:~# su -s /bin/bash trove -c "trove-manage db_load_datastore_config_parameters postgresql 10 /usr/lib/python3/dist-packages/trove/templates/postgresql/validation-rules.json" Loading config parameters for datastore (postgresql) version (10) 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 write_files: - path: /etc/trove/controller.conf content: | CONTROLLER=10.0.0.50 runcmd: - 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] | 任意のノードで、データベースインスタンスを作成します。 例として、[admin] ユーザーで MariaDB データベースインスタンスを作成します。 (デフォルトポリシーでは [admin] ユーザーのみがインスタンス作成可) ちなみに、データベースインスタンスは VM イメージ上で Docker コンテナーとして起動します。 |
root@dlp ~(keystone)# openstack datastore list +--------------------------------------+------------+ | ID | Name | +--------------------------------------+------------+ | 0c042878-5937-493e-8b56-fba3a0233ac1 | postgresql | | 8133ca35-ffcb-4554-a3d4-dafe4050cd80 | mariadb | +--------------------------------------+------------+root@dlp ~(keystone)# openstack datastore version list mariadb +--------------------------------------+------+---------+ | ID | Name | Version | +--------------------------------------+------+---------+ | f209488e-f123-4af3-bef6-d23f5f53119a | 10.2 | 10.2 | | eead3d99-6c7d-4800-9c46-d0e6debde8bd | 10.3 | 10.3 | +--------------------------------------+------+---------+root@dlp ~(keystone)# openstack flavor list +----+----------+------+------+-----------+-------+-----------+ | ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public | +----+----------+------+------+-----------+-------+-----------+ | 0 | m1.small | 2048 | 10 | 0 | 1 | True | +----+----------+------+------+-----------+-------+-----------+root@dlp ~(keystone)# openstack subnet list +--------------------------------------+----------------+--------------------------------------+------------------+ | ID | Name | Network | Subnet | +--------------------------------------+----------------+--------------------------------------+------------------+ | c11c200c-d463-4330-beaf-80ab87ead256 | private-subnet | ca2c4289-f0e7-42dc-95d4-ea9507567541 | 192.168.100.0/24 | | e8c73b2b-a6c7-4d97-8782-df4d841f84eb | public-subnet | ffa87ed8-7da9-488c-a7c8-09912ca2443a | 10.0.0.0/24 | +--------------------------------------+----------------+--------------------------------------+------------------+root@dlp ~(keystone)# openstack network list +--------------------------------------+---------+--------------------------------------+ | ID | Name | Subnets | +--------------------------------------+---------+--------------------------------------+ | ca2c4289-f0e7-42dc-95d4-ea9507567541 | private | c11c200c-d463-4330-beaf-80ab87ead256 | | ffa87ed8-7da9-488c-a7c8-09912ca2443a | public | e8c73b2b-a6c7-4d97-8782-df4d841f84eb | +--------------------------------------+---------+--------------------------------------+ # データベースインスタンス作成 root@dlp ~(keystone)# openstack database instance create MariaDB-103 \ --flavor 0 \ --size 10 \ --nic net-id=ca2c4289-f0e7-42dc-95d4-ea9507567541 \ --databases MyDB --users serverworld:password \ --datastore mariadb --datastore-version 10.3 \ --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 | 2021-04-21T04:27:31 | | datastore | mariadb | | datastore_version | 10.3 | | datastore_version_number | 10.3 | | encrypted_rpc_messaging | True | | flavor | 0 | | id | 9deb5ff5-dcea-49d7-bc2e-913a2afd9c57 | | name | MariaDB-103 | | operating_status | | | public | True | | region | RegionOne | | server_id | None | | service_status_updated | 2021-04-21T04:27:31 | | status | BUILD | | tenant_id | da2214d30eaa4b7aaae25c8cbba0483e | | updated | 2021-04-21T04:27:31 | | volume | 10 | | volume_id | None | +--------------------------+--------------------------------------+ # 作成中は [BUILD] ステータス root@dlp ~(keystone)# openstack database instance list +--------------------------------------+-------------+-----------+-------------------+--------+------------------+--------+-----------+-----------+------+------+ | ID | Name | Datastore | Datastore Version | Status | Operating Status | Public | Addresses | Flavor ID | Size | Role | +--------------------------------------+-------------+-----------+-------------------+--------+------------------+--------+-----------+-----------+------+------+ | 9deb5ff5-dcea-49d7-bc2e-913a2afd9c57 | MariaDB-103 | mariadb | 10.3 | BUILD | | True | | 0 | 10 | | +--------------------------------------+-------------+-----------+-------------------+--------+------------------+--------+-----------+-----------+------+------+ # 作成が正常に完了すると [HEALTHY] ステータス root@dlp ~(keystone)# openstack database instance list +--------------------------------------+-------------+-----------+-------------------+--------+------------------ | ID | Name | Datastore | Datastore Version | Status | Operating Status +--------------------------------------+-------------+-----------+-------------------+--------+------------------ | 9deb5ff5-dcea-49d7-bc2e-913a2afd9c57 | MariaDB-103 | mariadb | 10.3 | ACTIVE | HEALTHY +--------------------------------------+-------------+-----------+-------------------+--------+------------------ +--------+--------------------------------------------------------------------------------------------------+-----------+------+------+ | Public | Addresses | Flavor ID | Size | Role | +--------+--------------------------------------------------------------------------------------------------+-----------+------+------+ | True | [{'address': '192.168.100.151', 'type': 'private'}, {'address': '10.0.0.213', 'type': 'public'}] | 0 | 10 | | +--------+--------------------------------------------------------------------------------------------------+-----------+------+------+ # アクセスして動作確認 root@dlp ~(keystone)# mysql -h 10.0.0.213 -u serverworld -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 18 Server version: 10.3.28-MariaDB-1:10.3.28+maria~focal mariadb.org binary distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show variables like 'hostname'; +---------------+-------------+ | Variable_name | Value | +---------------+-------------+ | hostname | mariadb-103 | +---------------+-------------+ 1 row in set (0.003 sec) MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | MyDB | | information_schema | +--------------------+ 2 rows in set (0.003 sec) MariaDB [(none)]> exit Bye # データベースインスタンスを削除する場合は以下 root@dlp ~(keystone)# openstack database instance delete MariaDB-103 Request to delete database instance 9deb5ff5-dcea-49d7-bc2e-913a2afd9c57 has been accepted. |
[4] | PostgreSQL を起動する場合の設定です。 |
root@dlp ~(keystone)# openstack datastore list +--------------------------------------+------------+ | ID | Name | +--------------------------------------+------------+ | 0c042878-5937-493e-8b56-fba3a0233ac1 | postgresql | | 8133ca35-ffcb-4554-a3d4-dafe4050cd80 | mariadb | +--------------------------------------+------------+root@dlp ~(keystone)# openstack datastore version list postgresql
+--------------------------------------+------+---------+
| ID | Name | Version |
+--------------------------------------+------+---------+
| 24cf45fc-a8a9-44d2-8cd7-2cdc0cfb23c9 | 10 | 10 |
| 39dbb88b-0447-4dae-be44-69a9a0355a01 | 12 | 12 |
+--------------------------------------+------+---------+
root@dlp ~(keystone)# openstack database instance create PostgreSQL-12 \
--flavor 0 \
--size 10 \
--nic net-id=ca2c4289-f0e7-42dc-95d4-ea9507567541 \
--databases MyDB --users serverworld:password \
--datastore postgresql --datastore-version 12 \
--is-public \
--allowed-cidr 10.0.0.0/24 \
--allowed-cidr 192.168.100.0/24
root@dlp ~(keystone)# openstack database instance list +--------------------------------------+---------------+------------+-------------------+--------+------------------ | ID | Name | Datastore | Datastore Version | Status | Operating Status +--------------------------------------+---------------+------------+-------------------+--------+------------------ | 5603d176-4e84-4b73-80eb-8ec3ba81f984 | PostgreSQL-12 | postgresql | 12 | ACTIVE | HEALTHY +--------------------------------------+---------------+------------+-------------------+--------+------------------ +--------+-------------------------------------------------------------------------------------------------+-----------+------+------+ | Public | Addresses | Flavor ID | Size | Role | +--------+-------------------------------------------------------------------------------------------------+-----------+------+------+ | True | [{'address': '192.168.100.70', 'type': 'private'}, {'address': '10.0.0.227', 'type': 'public'}] | 0 | 10 | | +--------+-------------------------------------------------------------------------------------------------+-----------+------+------+root@dlp ~(keystone)# psql -h 10.0.0.227 -d MyDB -U serverworld -c "SELECT version();" Password for user serverworld: version ------------------------------------------------------------------------------------------------------------------ PostgreSQL 12.6 (Debian 12.6-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit (1 row) |
Sponsored Link |