about openstack dbaas (trove)

33
Copyright 2015 Bit-isle Inc. All Rights Reserved 1 OpenStack DBaas (Trove) について ビットアイル総合研究所 熊谷育朗

Upload: ikuo-kumagai

Post on 16-Apr-2017

2.378 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved 1

OpenStack DBaas (Trove) について

ビットアイル総合研究所 熊谷育朗

Page 2: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved

概要

2

Page 3: About OpenStack DBaas (trove)

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

Page 4: About OpenStack DBaas (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

Page 5: About OpenStack DBaas (trove)

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/

Page 6: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved

アーキテクチャ(Create DB instance)

Glance上のDBイメージを使用してインスタンスを起動

Cinder 上に作成したボリューム上にDBデータ領域を作成

インスタンスはNeutron 上のネットワークに接続

6

OpenStack Iaas

Trove - host

Nova

Cinder

Swift Glance

DB-instance

DB-volume

DB backup DB image

Keystone

Neutron MQ DB

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

Page 7: About OpenStack DBaas (trove)

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

Swift Glance

DB-instance

DB-volume

DB backup DB image

Keystone

Neutron MQ DB

trove-api

trove-taskmanager

trove-conductor

trove-guestagent Private Network

Direction through the message queue

Trove Component

Iaas Component

legend

Page 8: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved

バックアップを支持するとGuest Agentがバックアップを取得し、Swift のコンテナにアップロードします。レプリケーションを行う場合はこれを使用してレプリカインスタンスを起動します。

アーキテクチャ(Backup and replica DB instance)

8

OpenStack Iaas

Trove - host

Nova

Cinder

Swift Glance

DB-instance

DB-volume

DB backup DB image

Keystone

Neutron MQ DB

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

Page 9: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved

確認済み機能(Juno版)

9

Page 10: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved

データベース機能

ダッシュボードからの操作

‣ データストアの作成

▪ ユーザー作成、データベース作成

▪ バックアップからのDB作成

‣ DB領域のサイズ変更

‣ バックアップの作成

コマンドラインからの操作

‣ レプリカインスタンスの作成

‣ データベースとユーザの権限設定(Grlant)

‣ データベース設定の変更

10

注) 網羅しているわけではありません

Page 11: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved

ダッシュボードからの操作

11

Page 12: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved

データベースインスタンスの作成

データベース一覧画面からインスタンスの起動ボタンを押下

12

Page 13: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved

インスタンスの起動(詳細&ネットワーク)

インスタンスの起動画面で各パラメータを入力します。

13

インスタンス名 :任意 フレーバー :任意(※) ボリュームサイズ:任意 データストア :mysql5.5 ※ 今回用意したデータストアイメージはm1.small以上で動作します。

ネットワーク: 自テナントに作成済みのネットワークを指定します。

Page 14: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved

インスタンスの起動(初期設定&バックアップ復元)

その他のパラメータを指定してください。

14

以下項目に任意の値を入力します。 初期データベース :任意 最初の管理ユーザー:任意 パスワード :任意 許可ホスト :任意

取得済みのバックアップから復元する場合は選択します。

Page 15: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved

インスタンスの起動(初期設定&バックアップ復元)

その他のパラメータを指定してください。

15

以下項目に任意の値を入力します。 初期データベース :任意 最初の管理ユーザー:任意 パスワード :任意 許可ホスト :任意

取得済みのバックアップから復元する場合は選択します。

Page 16: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved

データベースインスタンスの構成

データベースインスタンスは以下の要素で構成されます。

‣ コンピュートインスタンス

▪ DB用のイメージから起動されます。これは通常のインスタンスと同じです。

‣ ボリューム

▪ 作成時に指定容量のボリュームが作成され、コンピュートインスタンスにアタッチされます。このボリュームがデータ配置場所となります。

‣ イメージ

▪ DBインスタンスの元となるイメージが登録されています。 このイメージは本環境用に独自に作成したものです。

‣ セキュリティグループ

▪ DBインスタンス毎に3306ポートへのアクセスを許可したセキュリティグループが設定されます。

‣ キーペア

▪ インスタンスへのSSH接続用の公開鍵は配置されません。 (これはイメージの作成方法によります。SSH接続が可能なイメージを作成することも可能です。)

16

Page 17: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved

ボリュームのリサイズ

一覧のメニューからボリュームのリサイズが可能です。

17

Page 18: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved

データベースのバックアップ

データベースのバックアップを作成することが可能です。

18

名前 : バックアップの名前 データベースインスタンス : バックアップ元 親バックアップ : 以前にバックアップを取得している場合は、 親バックアップを指定することで差分バックアップが可能となります。

Page 19: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved

バックアップ機能

作成したバックアップはバックアップ一覧画面から確認できます。

バックアップデータの実体はオブジェクトストアのコンテナに保存されてます。

19

Page 20: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved

コマンドラインでの操作

20

Page 21: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved

Trove クライアント CLIからの操作

Juno版のダッシュボードではTroveの機能の一部しか利用することが出来ません。いくつかの機能はコマンドラインツールから利用する必要があります。

‣ レプリケーションインスタンスの作成

‣ 各データベースとユーザ権限の設定

‣ データベース設定の変更

21

Page 22: About OpenStack DBaas (trove)

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

Page 23: About OpenStack DBaas (trove)

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が出ますが動作には問題ありません

Page 24: About OpenStack DBaas (trove)

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

Page 25: About OpenStack DBaas (trove)

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

Page 26: About OpenStack DBaas (trove)

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 |

(以下略)

Page 27: About OpenStack DBaas (trove)

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} | +------------------------+------------------------------------------+

Page 28: About OpenStack DBaas (trove)

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

Page 29: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved

構築上のポイント

29

Page 30: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved

構築してみた結果

ホスト側のインストール

‣ 比較的簡単/RDOでインストールできる。

‣ 設定ファイルのドキュメントの内容は不親切

ゲスト用エージェントの作成

‣ ドキュメントがわかりづらい

ポイント

‣ ゲストエージェントからMQに通信できるように環境構築、及び設定ファイルを記載する。

‣ ゲストエージェントは最初はデバッグできるようにしておく(重要)

30

Page 31: About OpenStack DBaas (trove)

Copyright 2015 Bit-isle Inc. All Rights Reserved

構築のポイント

ゲストエージェントからMQに通信できるように環境構築、及び設定ファイルを記載する。

ゲストエージェントの構築と登録の方法の情報が少ない

31

Page 32: About OpenStack DBaas (trove)

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

Page 33: About OpenStack DBaas (trove)

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