Copyright 2015 Bit-isle Inc. All Rights Reserved 1
OpenStack DBaas (Trove) について
ビットアイル総合研究所 熊谷育朗
Copyright 2015 Bit-isle Inc. All Rights Reserved
概要
2
Copyright 2015 Bit-isle Inc. All Rights Reserved
Troveのミッション
 スケーラブルで信頼できるDB をサービスとして提供する
 RDBもnoSQLもどちらも対象
 全てオープンソースで
[原文]The OpenStackOpen Source Database as a Service Mission: To
provide scalable and reliable Cloud Database as a Service provisioning
functionality for both relational and non-relational database engines, and
to continue to improve its fully-featured and extensible open source
framework.
3
https://wiki.openstack.org/wiki/Trove
Copyright 2015 Bit-isle Inc. All Rights Reserved
Troveの機能と各DBの対応状況
Feature MySQL Redis Cassandra MongoDB PostgreSQL Couchbase
Launch ✔ ✔ ✔ ✔ ✔ ✔
Reboot ✔ ✔ ✔ ✔ ✔ ✔
Terminate ✔ ✔ ✔ ✔ ✔ ✔
Resize ✔ ✔ ✔ ✔ ✔ ✔
Backup ✔ ✔ ✔** ✔ ✔ ✔
Restore ✔ ✔ ✔** ✔ ✔ ✔
Replication ✔ - - - ✔** -
Clustering - ✔** ✔** ✔ - ✔**
4
** = Datastore supports it -- but it is currently Work in Progress in Trove.
https://wiki.openstack.org/wiki/Trove/DatastoreCompatibilityMatrix
Copyright 2015 Bit-isle Inc. All Rights Reserved
Tesora社のサポートマトリクス
Database Version Certification Level
MySQL 5.5, 5.6 Production Ready
Percona 5.5, 5.6 Production Ready
MariaDB 5.5, 10.0 Development
Couchbase 2.2 Development
Cassandra 2.1 Development
Redis 2.8 Development
MongoDB 2.4 Development
PostgreSQL 9.3 Preview
Oracle 12c Preview
Oracle 11g Q2 2015
DB2 2015
CouchDB 2015
5
http://www.tesora.com/openstack-trove-certified-databases/
Copyright 2015 Bit-isle Inc. All Rights Reserved
アーキテクチャ(Create DB instance)
 Glance上のDBイメージを使用してインスタンスを起動
 Cinder 上に作成したボリューム上にDBデータ領域を作成
 インスタンスはNeutron 上のネットワークに接続
6
OpenStack Iaas
Trove - host
Nova
Cinder
SwiftGlance
DB-instance
DB-volume
DB backupDB image
Keystone
Neutron
MQDB
trove-api
trove-
taskmanager
trove-conductor
trove-guestagent
Private
Network
Created by
the DB
image
Attached
to the DB
volume
Connected
to tenant network
Trove
Component
Iaas
Component
legend
Copyright 2015 Bit-isle Inc. All Rights Reserved
 起動確認やDBの設定等は Message queue 経由でやり取り
※当然DBインスタンスとTrove hostの双方から同一MQへの通信経路が必要
アーキテクチャ(Setup/Update DB instance)
7
OpenStack Iaas
Trove - host
Nova
Cinder
SwiftGlance
DB-instance
DB-volume
DB backupDB image
Keystone
Neutron
MQDB
trove-api
trove-
taskmanager
trove-conductor
trove-guestagent
Private
Network
Direction through the
message queue
Trove
Component
Iaas
Component
legend
Copyright 2015 Bit-isle Inc. All Rights Reserved
 バックアップを支持するとGuest Agentがバックアップを取得し、Swift のコン
テナにアップロードします。レプリケーションを行う場合はこれを使用してレプ
リカインスタンスを起動します。
アーキテクチャ(Backup and replica DB instance)
8
OpenStack Iaas
Trove - host
Nova
Cinder
SwiftGlance
DB-instance
DB-volume
DB backupDB image
Keystone
Neutron
MQDB
trove-api
trove-
taskmanager
trove-conductor
trove-guestagent
Private
Network
GuestAgent get backup for
DB-volume by defined
strategy and upload to the
Swift container.
Trove
Component
Iaas
Component
legend
backup-strategy
Copyright 2015 Bit-isle Inc. All Rights Reserved
確認済み機能(Juno版)
9
Copyright 2015 Bit-isle Inc. All Rights Reserved
データベース機能
 ダッシュボードからの操作
‣ データストアの作成
▪ ユーザー作成、データベース作成
▪ バックアップからのDB作成
‣ DB領域のサイズ変更
‣ バックアップの作成
 コマンドラインからの操作
‣ レプリカインスタンスの作成
‣ データベースとユーザの権限設定(Grlant)
‣ データベース設定の変更
10
注) 網羅しているわけではありません
Copyright 2015 Bit-isle Inc. All Rights Reserved
ダッシュボードからの操作
11
Copyright 2015 Bit-isle Inc. All Rights Reserved
データベースインスタンスの作成
 データベース一覧画面からインスタンスの起動ボタンを押
下
12
Copyright 2015 Bit-isle Inc. All Rights Reserved
インスタンスの起動(詳細&ネットワーク)
 インスタンスの起動画面で各パラメータを入力します。
13
インスタンス名 :任意
フレーバー :任意(※)
ボリュームサイズ:任意
データストア :mysql5.5
※ 今回用意したデータストアイメージ
はm1.small以上で動作します。
ネットワーク:
自テナントに作成済みのネットワークを
指定します。
Copyright 2015 Bit-isle Inc. All Rights Reserved
インスタンスの起動(初期設定&バックアップ復元)
 その他のパラメータを指定してください。
14
以下項目に任意の値を入力します。
初期データベース :任意
最初の管理ユーザー:任意
パスワード :任意
許可ホスト :任意
取得済みのバックアップから復元する
場合は選択します。
Copyright 2015 Bit-isle Inc. All Rights Reserved
インスタンスの起動(初期設定&バックアップ復元)
 その他のパラメータを指定してください。
15
以下項目に任意の値を入力します。
初期データベース :任意
最初の管理ユーザー:任意
パスワード :任意
許可ホスト :任意
取得済みのバックアップから復元する
場合は選択します。
Copyright 2015 Bit-isle Inc. All Rights Reserved
データベースインスタンスの構成
 データベースインスタンスは以下の要素で構成されます。
‣ コンピュートインスタンス
▪ DB用のイメージから起動されます。これは通常のインスタンスと同じ
です。
‣ ボリューム
▪ 作成時に指定容量のボリュームが作成され、コンピュートインスタン
スにアタッチされます。このボリュームがデータ配置場所となります。
‣ イメージ
▪ DBインスタンスの元となるイメージが登録されています。
このイメージは本環境用に独自に作成したものです。
‣ セキュリティグループ
▪ DBインスタンス毎に3306ポートへのアクセスを許可したセキュリティ
グループが設定されます。
‣ キーペア
▪ インスタンスへのSSH接続用の公開鍵は配置されません。
(これはイメージの作成方法によります。SSH接続が可能なイメージを
作成することも可能です。) 16
Copyright 2015 Bit-isle Inc. All Rights Reserved
ボリュームのリサイズ
 一覧のメニューからボリュームのリサイズが可能です。
17
Copyright 2015 Bit-isle Inc. All Rights Reserved
データベースのバックアップ
 データベースのバックアップを作成することが可能です。
18
名前 : バックアップの名前
データベースインスタンス : バックアップ元
親バックアップ :
以前にバックアップを取得している場合は、
親バックアップを指定することで差分バックアップが可能となります。
Copyright 2015 Bit-isle Inc. All Rights Reserved
バックアップ機能
 作成したバックアップはバックアップ一覧画面から確認で
きます。
 バックアップデータの実体はオブジェクトストアのコンテ
ナに保存されてます。
19
Copyright 2015 Bit-isle Inc. All Rights Reserved
コマンドラインでの操作
20
Copyright 2015 Bit-isle Inc. All Rights Reserved
Trove クライアント CLIからの操作
 Juno版のダッシュボードではTroveの機能の一部しか利用
することが出来ません。いくつかの機能はコマンドライン
ツールから利用する必要があります。
‣ レプリケーションインスタンスの作成
‣ 各データベースとユーザ権限の設定
‣ データベース設定の変更
21
Copyright 2015 Bit-isle Inc. All Rights Reserved
Troveクライアントのインストールと環境設定
 python-troveclientパッケージをインストールします。
22
# Redhat系OSの場合
$ sudo yum install https://rdoproject.org/repos/rdo-release.rpm
$ sudo yum install python-troveclient
# Ubuntu系OSの場合
$ sudo apt-get install python-troveclient
# 環境変数の設定
# 下記のような環境変数を設定します。
export OS_AUTH_URL=https://r1-auth.rdcloud.bi-rd.jp/v2.0
export OS_TENANT_NAME=“tenant1"
export OS_USERNAME=“user1"
export OS_PASSWORD=password
export OS_REGION_NAME=RegionOne
Copyright 2015 Bit-isle Inc. All Rights Reserved
コマンドの実行
 パッケージのインストールと環境変数の設定後コマンドが
実行可能になります。
23
# 環境変数が設定されていれば trove コマンドを実行することができます。
$ trove list
/usr/lib/python2.7/site-packages/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object
is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For
more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
InsecurePlatformWarning
+--------------------------------------+---------------+-----------+-------------------+--------+-----------+------+
| ID | Name | Datastore | Datastore Version | Status | Flavor ID | Size |
+--------------------------------------+---------------+-----------+-------------------+--------+-----------+------+
| 16833bab-5d7b-462d-8774-9b8ad926d6f9 | testing | mysql | mysql5.5 | ACTIVE | 2 | 5 |
| 4057e51f-ec0d-44b3-aa7c-b8b4465bff61 | test-database | mysql | mysql5.5 | ACTIVE | 2 | 3 |
+--------------------------------------+---------------+-----------+-------------------+--------+-----------+------+
# コマンドのヘルプは help オプションで確認できます。
$ trove help
usage: trove [--version] [--debug] [--os-auth-system <auth-system>]
[--service-type <service-type>] [--service-name <service-name>]
[--bypass-url <bypass-url>]
[--database-service-name <database-service-name>]
[--endpoint-type <endpoint-type>]
<以下略>
コマンドのバージョンによってはこのようなWarningが出ま
すが動作には問題ありません
Copyright 2015 Bit-isle Inc. All Rights Reserved
レプリケーションインスタンスの作成
 trove create コマンドの --replica_of オプションで
レプリケーションインスタンスを作成可能です。
24
# trove createの利用オプション
usage: trove create <name> <flavor_id>
[--size <size>]
[--databases <databases> [<databases> ...]]
[--users <users> [<users> ...]] [--backup <backup>]
[--availability_zone <availability_zone>]
[--datastore <datastore>]
[--datastore_version <datastore_version>]
[--nic <net-id=net-uuid,v4-fixed-ip=ip-addr,port-id=port-uuid>]
[--configuration <configuration>]
[--replica_of <source_instance>] [--replica_count <count>]
# (実行例)
$ trove create replica1 2 --replica_of 4057e51f-ec0d-44b3-aa7c-b8b4465bff61 --datastore
mysql --size=3
Copyright 2015 Bit-isle Inc. All Rights Reserved
データベースとユーザの権限設定(Glant)
 データベースとユーザの権限設定を以下のコマンドで実施
できます。
25
# trove user-grant-accessの利用オプション
usage: trove user-grant-access <instance> <name> <databases> [<databases> ...]
[--host <host>]
Grants access to a database(s) for a user.
Positional arguments:
<instance> ID or name of the instance.
<name> Name of user.
<databases> List of databases.
Optional arguments:
--host <host> Optional host of user.>]
# (実行例)
$ trove user-grant-access 16833bab-5d7b-462d-8774-9b8ad926d6f9 newuser mydb
Copyright 2015 Bit-isle Inc. All Rights Reserved
データベースの設定変更(設定可能項目の確認)
 データベースには予め設定可能なパラメータが定義されています。設
定可能な項目の変更はホスト側の変更を伴います。
26
# trove configuration-parameter-listの利用オプション
usage: trove configuration-parameter-list <datastore_version>
[--datastore <datastore>]
Lists available parameters for a configuration group.
Positional arguments:
<datastore_version> Datastore version name or ID assigned to the
configuration group.
# (実行例)
$ trove configuration-parameter-list 69d79599-fc27-4751-8a4c-3f4178b6d7f2
+--------------------------------+---------+----------+----------------------+------------------+
| Name | Type | Min Size | Max Size | Restart Required |
+--------------------------------+---------+----------+----------------------+------------------+
| auto_increment_increment | integer | 1 | 65535 | False |
| auto_increment_offset | integer | 1 | 65535 | False |
| autocommit | integer | 0 | 1 | False |
| bulk_insert_buffer_size | integer | 0 | 18446744073709547520 | False |
| character_set_client | string | | | False |
| character_set_connection | string | | | False |
(以下略)
Copyright 2015 Bit-isle Inc. All Rights Reserved
データベースの設定変更(Config Groupの作成)
 データベースの設定を変更するにはまず設定グループを作
成します。
27
# (実行例)
$ trove configuration-create DemoConfig '{"connect_timeout":30,"autocommit":1}' --
datastore_version mysql5.5 --datastore mysql
+------------------------+------------------------------------------+
| Property | Value |
+------------------------+------------------------------------------+
| created | 2015-07-07T07:41:18 |
| datastore_name | mysql |
| datastore_version_id | f4439df1-2776-4669-824d-2d3a41f86d19 |
| datastore_version_name | mysql5.5 |
| description | None |
| id | 279842bc-ba9a-4277-b86f-e6187dc43767 |
| instance_count | 0 |
| name | DemoConfig |
| updated | 2015-07-07T07:41:18 |
| values | {"autocommit": 1, "connect_timeout": 30} |
+------------------------+------------------------------------------+
Copyright 2015 Bit-isle Inc. All Rights Reserved
データベースの設定変更(Config Groupのアタッチ)
 作成したConfigを インスタンスにアタッチすることで設定
を反映することができます。
28
# trove configuration-attachの利用オプション
$ trove help configuration-attach
usage: trove configuration-attach <instance> <configuration>
Attaches a configuration group to an instance.
Positional arguments:
<instance> ID of the instance.
<configuration> ID of the configuration group to attach to the instance.
# (実行例)
$ trove configuration-attach d3842076-3a84-4c7b-afc6-3d604f3d6685 279842bc-ba9a-4277-b86f-
e6187dc43767
Copyright 2015 Bit-isle Inc. All Rights Reserved
構築上のポイント
29
Copyright 2015 Bit-isle Inc. All Rights Reserved
構築してみた結果
 ホスト側のインストール
‣ 比較的簡単/RDOでインストールできる。
‣ 設定ファイルのドキュメントの内容は不親切
 ゲスト用エージェントの作成
‣ ドキュメントがわかりづらい
 ポイント
‣ ゲストエージェントからMQに通信できるように環境構築、及び設
定ファイルを記載する。
‣ ゲストエージェントは最初はデバッグできるようにしておく(重要)
30
Copyright 2015 Bit-isle Inc. All Rights Reserved
構築のポイント
 ゲストエージェントからMQに通信できるように環境構築、
及び設定ファイルを記載する。
 ゲストエージェントの構築と登録の方法の情報が少ない
31
Copyright 2015 Bit-isle Inc. All Rights Reserved
ゲストエージェントの作り方(MySQLの場合)
 必須パッケージ
‣ trove-guestagentのインストール
‣ MySQL(今回はMariaDB)のインストール
‣ Percona-Xtrabackupのインストール
 trove-guestagentのサービス起動設定の書き換え
 起動時にホストからゲストへ設定ファイルを置くが、その設定ファイルを
使用しないで起動してしまう。(Kiloでは解消されているかも)
 RDOのサイトに「CREATION OF TROVE-COMPATIBLE IMAGES
FOR RDO」があるが、この方法で作成したイメージでは正しく起動し
ない。
32
Copyright 2015 Bit-isle Inc. All Rights Reserved
ゲストエージェントの登録方法
 作成したイメージをGlanceに登録し、Troveの管理コマン
ドで登録することで、利用可能になる
33
# PACKAGES が曲者。rpm –qaで出力されるパッケージ名と一致しないとエ
ラーになる
$ trove-manage datastore_update ${DATASTORE_TYPE} ""
$ trove-manage datastore_version_update ${DATASTORE_TYPE} ¥
${DATASTORE_VERSION} ${DATASTORE_TYPE} ${IMAGEID} ${PACKAGES} 1
$ trove-manage datastore_update ${DATASTORE_TYPE} ${DATASTORE_VERSION}
(具体例)
$ trove-manage datastore_update mysql ""
$ trove-manage datastore_version_update mysql mysql5.5 mysql ¥
{イメージID} mariadb-galera-server-5.5 1
$ trove-manage datastore_update mysql mysql5.5

About OpenStack DBaas (trove)

  • 1.
    Copyright 2015 Bit-isleInc. All Rights Reserved 1 OpenStack DBaas (Trove) について ビットアイル総合研究所 熊谷育朗
  • 2.
    Copyright 2015 Bit-isleInc. All Rights Reserved 概要 2
  • 3.
    Copyright 2015 Bit-isleInc. All Rights Reserved Troveのミッション  スケーラブルで信頼できるDB をサービスとして提供する  RDBもnoSQLもどちらも対象  全てオープンソースで [原文]The OpenStackOpen Source Database as a Service Mission: To provide scalable and reliable Cloud Database as a Service provisioning functionality for both relational and non-relational database engines, and to continue to improve its fully-featured and extensible open source framework. 3 https://wiki.openstack.org/wiki/Trove
  • 4.
    Copyright 2015 Bit-isleInc. All Rights Reserved Troveの機能と各DBの対応状況 Feature MySQL Redis Cassandra MongoDB PostgreSQL Couchbase Launch ✔ ✔ ✔ ✔ ✔ ✔ Reboot ✔ ✔ ✔ ✔ ✔ ✔ Terminate ✔ ✔ ✔ ✔ ✔ ✔ Resize ✔ ✔ ✔ ✔ ✔ ✔ Backup ✔ ✔ ✔** ✔ ✔ ✔ Restore ✔ ✔ ✔** ✔ ✔ ✔ Replication ✔ - - - ✔** - Clustering - ✔** ✔** ✔ - ✔** 4 ** = Datastore supports it -- but it is currently Work in Progress in Trove. https://wiki.openstack.org/wiki/Trove/DatastoreCompatibilityMatrix
  • 5.
    Copyright 2015 Bit-isleInc. All Rights Reserved Tesora社のサポートマトリクス Database Version Certification Level MySQL 5.5, 5.6 Production Ready Percona 5.5, 5.6 Production Ready MariaDB 5.5, 10.0 Development Couchbase 2.2 Development Cassandra 2.1 Development Redis 2.8 Development MongoDB 2.4 Development PostgreSQL 9.3 Preview Oracle 12c Preview Oracle 11g Q2 2015 DB2 2015 CouchDB 2015 5 http://www.tesora.com/openstack-trove-certified-databases/
  • 6.
    Copyright 2015 Bit-isleInc. All Rights Reserved アーキテクチャ(Create DB instance)  Glance上のDBイメージを使用してインスタンスを起動  Cinder 上に作成したボリューム上にDBデータ領域を作成  インスタンスはNeutron 上のネットワークに接続 6 OpenStack Iaas Trove - host Nova Cinder SwiftGlance DB-instance DB-volume DB backupDB image Keystone Neutron MQDB trove-api trove- taskmanager trove-conductor trove-guestagent Private Network Created by the DB image Attached to the DB volume Connected to tenant network Trove Component Iaas Component legend
  • 7.
    Copyright 2015 Bit-isleInc. All Rights Reserved  起動確認やDBの設定等は Message queue 経由でやり取り ※当然DBインスタンスとTrove hostの双方から同一MQへの通信経路が必要 アーキテクチャ(Setup/Update DB instance) 7 OpenStack Iaas Trove - host Nova Cinder SwiftGlance DB-instance DB-volume DB backupDB image Keystone Neutron MQDB trove-api trove- taskmanager trove-conductor trove-guestagent Private Network Direction through the message queue Trove Component Iaas Component legend
  • 8.
    Copyright 2015 Bit-isleInc. All Rights Reserved  バックアップを支持するとGuest Agentがバックアップを取得し、Swift のコン テナにアップロードします。レプリケーションを行う場合はこれを使用してレプ リカインスタンスを起動します。 アーキテクチャ(Backup and replica DB instance) 8 OpenStack Iaas Trove - host Nova Cinder SwiftGlance DB-instance DB-volume DB backupDB image Keystone Neutron MQDB trove-api trove- taskmanager trove-conductor trove-guestagent Private Network GuestAgent get backup for DB-volume by defined strategy and upload to the Swift container. Trove Component Iaas Component legend backup-strategy
  • 9.
    Copyright 2015 Bit-isleInc. All Rights Reserved 確認済み機能(Juno版) 9
  • 10.
    Copyright 2015 Bit-isleInc. All Rights Reserved データベース機能  ダッシュボードからの操作 ‣ データストアの作成 ▪ ユーザー作成、データベース作成 ▪ バックアップからのDB作成 ‣ DB領域のサイズ変更 ‣ バックアップの作成  コマンドラインからの操作 ‣ レプリカインスタンスの作成 ‣ データベースとユーザの権限設定(Grlant) ‣ データベース設定の変更 10 注) 網羅しているわけではありません
  • 11.
    Copyright 2015 Bit-isleInc. All Rights Reserved ダッシュボードからの操作 11
  • 12.
    Copyright 2015 Bit-isleInc. All Rights Reserved データベースインスタンスの作成  データベース一覧画面からインスタンスの起動ボタンを押 下 12
  • 13.
    Copyright 2015 Bit-isleInc. All Rights Reserved インスタンスの起動(詳細&ネットワーク)  インスタンスの起動画面で各パラメータを入力します。 13 インスタンス名 :任意 フレーバー :任意(※) ボリュームサイズ:任意 データストア :mysql5.5 ※ 今回用意したデータストアイメージ はm1.small以上で動作します。 ネットワーク: 自テナントに作成済みのネットワークを 指定します。
  • 14.
    Copyright 2015 Bit-isleInc. All Rights Reserved インスタンスの起動(初期設定&バックアップ復元)  その他のパラメータを指定してください。 14 以下項目に任意の値を入力します。 初期データベース :任意 最初の管理ユーザー:任意 パスワード :任意 許可ホスト :任意 取得済みのバックアップから復元する 場合は選択します。
  • 15.
    Copyright 2015 Bit-isleInc. All Rights Reserved インスタンスの起動(初期設定&バックアップ復元)  その他のパラメータを指定してください。 15 以下項目に任意の値を入力します。 初期データベース :任意 最初の管理ユーザー:任意 パスワード :任意 許可ホスト :任意 取得済みのバックアップから復元する 場合は選択します。
  • 16.
    Copyright 2015 Bit-isleInc. All Rights Reserved データベースインスタンスの構成  データベースインスタンスは以下の要素で構成されます。 ‣ コンピュートインスタンス ▪ DB用のイメージから起動されます。これは通常のインスタンスと同じ です。 ‣ ボリューム ▪ 作成時に指定容量のボリュームが作成され、コンピュートインスタン スにアタッチされます。このボリュームがデータ配置場所となります。 ‣ イメージ ▪ DBインスタンスの元となるイメージが登録されています。 このイメージは本環境用に独自に作成したものです。 ‣ セキュリティグループ ▪ DBインスタンス毎に3306ポートへのアクセスを許可したセキュリティ グループが設定されます。 ‣ キーペア ▪ インスタンスへのSSH接続用の公開鍵は配置されません。 (これはイメージの作成方法によります。SSH接続が可能なイメージを 作成することも可能です。) 16
  • 17.
    Copyright 2015 Bit-isleInc. All Rights Reserved ボリュームのリサイズ  一覧のメニューからボリュームのリサイズが可能です。 17
  • 18.
    Copyright 2015 Bit-isleInc. All Rights Reserved データベースのバックアップ  データベースのバックアップを作成することが可能です。 18 名前 : バックアップの名前 データベースインスタンス : バックアップ元 親バックアップ : 以前にバックアップを取得している場合は、 親バックアップを指定することで差分バックアップが可能となります。
  • 19.
    Copyright 2015 Bit-isleInc. All Rights Reserved バックアップ機能  作成したバックアップはバックアップ一覧画面から確認で きます。  バックアップデータの実体はオブジェクトストアのコンテ ナに保存されてます。 19
  • 20.
    Copyright 2015 Bit-isleInc. All Rights Reserved コマンドラインでの操作 20
  • 21.
    Copyright 2015 Bit-isleInc. All Rights Reserved Trove クライアント CLIからの操作  Juno版のダッシュボードではTroveの機能の一部しか利用 することが出来ません。いくつかの機能はコマンドライン ツールから利用する必要があります。 ‣ レプリケーションインスタンスの作成 ‣ 各データベースとユーザ権限の設定 ‣ データベース設定の変更 21
  • 22.
    Copyright 2015 Bit-isleInc. All Rights Reserved Troveクライアントのインストールと環境設定  python-troveclientパッケージをインストールします。 22 # Redhat系OSの場合 $ sudo yum install https://rdoproject.org/repos/rdo-release.rpm $ sudo yum install python-troveclient # Ubuntu系OSの場合 $ sudo apt-get install python-troveclient # 環境変数の設定 # 下記のような環境変数を設定します。 export OS_AUTH_URL=https://r1-auth.rdcloud.bi-rd.jp/v2.0 export OS_TENANT_NAME=“tenant1" export OS_USERNAME=“user1" export OS_PASSWORD=password export OS_REGION_NAME=RegionOne
  • 23.
    Copyright 2015 Bit-isleInc. All Rights Reserved コマンドの実行  パッケージのインストールと環境変数の設定後コマンドが 実行可能になります。 23 # 環境変数が設定されていれば trove コマンドを実行することができます。 $ trove list /usr/lib/python2.7/site-packages/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning. InsecurePlatformWarning +--------------------------------------+---------------+-----------+-------------------+--------+-----------+------+ | ID | Name | Datastore | Datastore Version | Status | Flavor ID | Size | +--------------------------------------+---------------+-----------+-------------------+--------+-----------+------+ | 16833bab-5d7b-462d-8774-9b8ad926d6f9 | testing | mysql | mysql5.5 | ACTIVE | 2 | 5 | | 4057e51f-ec0d-44b3-aa7c-b8b4465bff61 | test-database | mysql | mysql5.5 | ACTIVE | 2 | 3 | +--------------------------------------+---------------+-----------+-------------------+--------+-----------+------+ # コマンドのヘルプは help オプションで確認できます。 $ trove help usage: trove [--version] [--debug] [--os-auth-system <auth-system>] [--service-type <service-type>] [--service-name <service-name>] [--bypass-url <bypass-url>] [--database-service-name <database-service-name>] [--endpoint-type <endpoint-type>] <以下略> コマンドのバージョンによってはこのようなWarningが出ま すが動作には問題ありません
  • 24.
    Copyright 2015 Bit-isleInc. All Rights Reserved レプリケーションインスタンスの作成  trove create コマンドの --replica_of オプションで レプリケーションインスタンスを作成可能です。 24 # trove createの利用オプション usage: trove create <name> <flavor_id> [--size <size>] [--databases <databases> [<databases> ...]] [--users <users> [<users> ...]] [--backup <backup>] [--availability_zone <availability_zone>] [--datastore <datastore>] [--datastore_version <datastore_version>] [--nic <net-id=net-uuid,v4-fixed-ip=ip-addr,port-id=port-uuid>] [--configuration <configuration>] [--replica_of <source_instance>] [--replica_count <count>] # (実行例) $ trove create replica1 2 --replica_of 4057e51f-ec0d-44b3-aa7c-b8b4465bff61 --datastore mysql --size=3
  • 25.
    Copyright 2015 Bit-isleInc. All Rights Reserved データベースとユーザの権限設定(Glant)  データベースとユーザの権限設定を以下のコマンドで実施 できます。 25 # trove user-grant-accessの利用オプション usage: trove user-grant-access <instance> <name> <databases> [<databases> ...] [--host <host>] Grants access to a database(s) for a user. Positional arguments: <instance> ID or name of the instance. <name> Name of user. <databases> List of databases. Optional arguments: --host <host> Optional host of user.>] # (実行例) $ trove user-grant-access 16833bab-5d7b-462d-8774-9b8ad926d6f9 newuser mydb
  • 26.
    Copyright 2015 Bit-isleInc. All Rights Reserved データベースの設定変更(設定可能項目の確認)  データベースには予め設定可能なパラメータが定義されています。設 定可能な項目の変更はホスト側の変更を伴います。 26 # trove configuration-parameter-listの利用オプション usage: trove configuration-parameter-list <datastore_version> [--datastore <datastore>] Lists available parameters for a configuration group. Positional arguments: <datastore_version> Datastore version name or ID assigned to the configuration group. # (実行例) $ trove configuration-parameter-list 69d79599-fc27-4751-8a4c-3f4178b6d7f2 +--------------------------------+---------+----------+----------------------+------------------+ | Name | Type | Min Size | Max Size | Restart Required | +--------------------------------+---------+----------+----------------------+------------------+ | auto_increment_increment | integer | 1 | 65535 | False | | auto_increment_offset | integer | 1 | 65535 | False | | autocommit | integer | 0 | 1 | False | | bulk_insert_buffer_size | integer | 0 | 18446744073709547520 | False | | character_set_client | string | | | False | | character_set_connection | string | | | False | (以下略)
  • 27.
    Copyright 2015 Bit-isleInc. All Rights Reserved データベースの設定変更(Config Groupの作成)  データベースの設定を変更するにはまず設定グループを作 成します。 27 # (実行例) $ trove configuration-create DemoConfig '{"connect_timeout":30,"autocommit":1}' -- datastore_version mysql5.5 --datastore mysql +------------------------+------------------------------------------+ | Property | Value | +------------------------+------------------------------------------+ | created | 2015-07-07T07:41:18 | | datastore_name | mysql | | datastore_version_id | f4439df1-2776-4669-824d-2d3a41f86d19 | | datastore_version_name | mysql5.5 | | description | None | | id | 279842bc-ba9a-4277-b86f-e6187dc43767 | | instance_count | 0 | | name | DemoConfig | | updated | 2015-07-07T07:41:18 | | values | {"autocommit": 1, "connect_timeout": 30} | +------------------------+------------------------------------------+
  • 28.
    Copyright 2015 Bit-isleInc. All Rights Reserved データベースの設定変更(Config Groupのアタッチ)  作成したConfigを インスタンスにアタッチすることで設定 を反映することができます。 28 # trove configuration-attachの利用オプション $ trove help configuration-attach usage: trove configuration-attach <instance> <configuration> Attaches a configuration group to an instance. Positional arguments: <instance> ID of the instance. <configuration> ID of the configuration group to attach to the instance. # (実行例) $ trove configuration-attach d3842076-3a84-4c7b-afc6-3d604f3d6685 279842bc-ba9a-4277-b86f- e6187dc43767
  • 29.
    Copyright 2015 Bit-isleInc. All Rights Reserved 構築上のポイント 29
  • 30.
    Copyright 2015 Bit-isleInc. All Rights Reserved 構築してみた結果  ホスト側のインストール ‣ 比較的簡単/RDOでインストールできる。 ‣ 設定ファイルのドキュメントの内容は不親切  ゲスト用エージェントの作成 ‣ ドキュメントがわかりづらい  ポイント ‣ ゲストエージェントからMQに通信できるように環境構築、及び設 定ファイルを記載する。 ‣ ゲストエージェントは最初はデバッグできるようにしておく(重要) 30
  • 31.
    Copyright 2015 Bit-isleInc. All Rights Reserved 構築のポイント  ゲストエージェントからMQに通信できるように環境構築、 及び設定ファイルを記載する。  ゲストエージェントの構築と登録の方法の情報が少ない 31
  • 32.
    Copyright 2015 Bit-isleInc. All Rights Reserved ゲストエージェントの作り方(MySQLの場合)  必須パッケージ ‣ trove-guestagentのインストール ‣ MySQL(今回はMariaDB)のインストール ‣ Percona-Xtrabackupのインストール  trove-guestagentのサービス起動設定の書き換え  起動時にホストからゲストへ設定ファイルを置くが、その設定ファイルを 使用しないで起動してしまう。(Kiloでは解消されているかも)  RDOのサイトに「CREATION OF TROVE-COMPATIBLE IMAGES FOR RDO」があるが、この方法で作成したイメージでは正しく起動し ない。 32
  • 33.
    Copyright 2015 Bit-isleInc. All Rights Reserved ゲストエージェントの登録方法  作成したイメージをGlanceに登録し、Troveの管理コマン ドで登録することで、利用可能になる 33 # PACKAGES が曲者。rpm –qaで出力されるパッケージ名と一致しないとエ ラーになる $ trove-manage datastore_update ${DATASTORE_TYPE} "" $ trove-manage datastore_version_update ${DATASTORE_TYPE} ¥ ${DATASTORE_VERSION} ${DATASTORE_TYPE} ${IMAGEID} ${PACKAGES} 1 $ trove-manage datastore_update ${DATASTORE_TYPE} ${DATASTORE_VERSION} (具体例) $ trove-manage datastore_update mysql "" $ trove-manage datastore_version_update mysql mysql5.5 mysql ¥ {イメージID} mariadb-galera-server-5.5 1 $ trove-manage datastore_update mysql mysql5.5