Upload
ikuo-kumagai
View
2.375
Download
0
Embed Size (px)
Citation preview
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
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
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
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
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