Database-as-a-Service ガイド
Red Hat OpenStack Platform の Database-as-a-Service
概要
前書き リンクのコピーリンクがクリップボードにコピーされました!
Database-as-a-Service (DBaaS) により、ユーザーは、デプロイ、設定、バックアップなどの管理タスクについて懸念することなく、OpenStack 環境でリレーショナルデータベースまたは非リレーショナルデータベースを便利に活用することができます。この機能は、ゲストのデータベースイメージのプロビジョニングと管理を行う trove コンポーネントによって提供されます。
非推奨機能のお知らせ: Red Hat OpenStack Platform 10 以降では、OpenStack Trove サービスは Red Hat OpenStack Platform ディストリビューションには同梱されません。現在、信頼できるパートナーと連携して実稼動環境ですぐに使用できる DBaaS サービスをお客様に提供できるように取り組んでいます。このオプションに関する情報は、担当のセールスアカウントマネージャーにお問い合わせください。
DBaaS は、複数のサービスで構成されます。
- ゲストエージェントサービス。ゲストインスタンス上で実行され、データストアを管理します。これには、新規データストアをオンラインにしたり、データベース操作を実行したりする作業が含まれます。
- インスタンスのプロビジョニング、管理、操作を実行するタスクマネージャーサービス
-
RESTful API を提供し、API 要求をゲストエージェントまたはタスクマネージャーに転送する API サービス。DBaaS API へのコマンドラインインターフェースは、
python-troveclientパッケージの一部であるtroveクライアントによって提供されます。 - ホスト上で実行され、ゲストインスタンスからのメッセージ (例: ステータスの更新など) をリッスンしてホストに渡すコンダクターサービス
以下のデータベースがサポートされています。
- MySQL 5.5 および 5.6
- MariaDB 5.5 および 10
OpenStack Database-as-a-Service は、本リリースではテクノロジープレビューとして提供しているため、Red Hat では全面的にはサポートしていません。これは、テスト目的のみでご利用いただく機能で、実稼働環境にデプロイすべきではありません。 テクノロジープレビューについての詳しい情報は Scope of Coverage Details を参照してください。
第1章 Database-as-a-Service の管理 リンクのコピーリンクがクリップボードにコピーされました!
1.1. Database-as-a-Service コントローラーのインストールおよび設定 リンクのコピーリンクがクリップボードにコピーされました!
Trove コントローラーに必要なパッケージのインストールと環境の設定方法に関する詳しい説明は、『手動インストール手順』を参照してください。
1.2. OpenStack Database-as-a-Service のセキュリティー保護 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform の以前のバージョンでは、DBaaS ゲストエージェントは、RabbitMQ メッセージバスへの認証情報を使用して実行されていました。RabbitMQ メッセージバスは、管理コントローラー全体で、機密データを含む全トラフィックに使用されていたので、DBaaS のインスタンスは、メッセージバスで送信される全データを表示することが可能でした。このため、インスタンスがこのバスを共有する他のサービスを誤用したり、攻撃したりできてしまう可能性がありました。Red Hat OpenStack Platform 9 では、DBaaS は、分離されたテナントに配置され、管理コントローラーの他の部分にはアクセスできなくなりましたが、DBaaS のセキュリティーをさらに強化するには、別のホストと別の RabbitMQ メッセージバスに DBaaS インスタンスを設定することが可能です。この設定を使用するには、以下の手順を実行してください。
管理コントローラー上での操作
RabbitMQ のユーザーとパスワードをカスタムの値に設定します。この値は、DBaaS テナントとは共有されません。たとえば、
guestアカウントと/デフォルトの仮想ホストに変更したパスワードを使用することができます。rabbitmqctl change_password guest password
# rabbitmqctl change_password guest passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow このパスワードは、サービスがメッセージバスに接続するように設定している全設定ファイルで変更されます。
DBaaS データベースエンドポイントを更新して、サービスカタログルックアップが別のホスト上で DBaaS を使用するようにします。まず現在のエンドポイント UUID を特定してから削除し、最後に別の DBaaS ホストの IP アドレスを使用して新規エンドポイントを作成します。
keystone endpoint-list keystone endpoint-delete current_DBaaS_endpoint_uuid keystone endpoint-create --service trove --publicurl http://IP:8779/v1.0/\$\(tenant_id\)s --region RegionOne
# keystone endpoint-list # keystone endpoint-delete current_DBaaS_endpoint_uuid # keystone endpoint-create --service trove --publicurl http://IP:8779/v1.0/\$\(tenant_id\)s --region RegionOneCopy to Clipboard Copied! Toggle word wrap Toggle overflow
DBaaS コントローラー上での操作:
リモート管理コントローラーホストの WSGI 設定で認証トークンフィルターをポイントします。
/etc/trove/api-paste.iniファイルで、以下のオプションと値を指定します。IP は管理コントローラーホストの IP アドレスに置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 管理ユーザーを追加して、DBaaS ゲストエージェントには、管理コントローラーで使用しているのとは異なるシークレットが設定されるようにします。
rabbitmqctl add_user isolated isolated rabbitmqctl set_permissions isolated ".*" ".*" ".*"
# rabbitmqctl add_user isolated isolated # rabbitmqctl set_permissions isolated ".*" ".*" ".*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/trove/trove.confファイルで以下オプションと値を指定して、DBaaS コントロールプレーンがローカルの RabbitMQ インスタンスに接続して認証を行うように設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
管理コントローラーで、
/etc/trove/trove-guestagent.confファイルを以下のように編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.1. ACL ポリシー リンクのコピーリンクがクリップボードにコピーされました!
また、RabbitMQ 仮想ホストの提供する ACL ポリシーを活用してセキュリティーを強化することができます。この場合には、仮想ホストごとに異なるパーミッションのある異なるユーザーを割り当てることができます。たとえば、/isolated という名前の仮想ホストを定義して、isolated ユーザーに仮想ホストの適切なパーミッションを割り当てます。このように設定するには、以下の手順を実行します。
デフォルトの
/仮想ホスト用のguestアカウントのパスワードを変更します。rabbitmqctl change_password guest password
# rabbitmqctl change_password guest passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新規ユーザーと仮想ホストを追加して、パーミッションを適切に設定します。
rabbitmqctl add_user isolated isolated rabbitmqctl add_vhost /isolated rabbitmqctl -p /isolated set_permissions isolated ".*" ".*" ".*"
# rabbitmqctl add_user isolated isolated # rabbitmqctl add_vhost /isolated # rabbitmqctl -p /isolated set_permissions isolated ".*" ".*" ".*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow DBaaS の設定を編集します。編集するファイルは 2 つあります。
/etc/trove/trove-guestmanager.confは、puppet-trove から packstack によって生成され、ゲストインスタンスに挿入されます。/etc/trove/trove-conductor.confは、DBaaS インスタンスからの非同期ステータス更新のための DBaaS コントロールプレーンサービスを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
この方法の利点は、別のホストとメッセージキューを使用する場合のシナリオよりもシンプルであることです。これは、Red Hat OpenStack Platform director を使用するなどの方法で、プロビジョニングを自動的に実行する場合に役立てることができます。
第2章 Database-as-a-Service の使用 リンクのコピーリンクがクリップボードにコピーされました!
2.1. Database-as-a-Service ゲストイメージの作成および設定の自動化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat は、サポート対象のデータストア向けに自動の DBaaS 互換イメージを生成するには trove-image-create ツールを使用することを推奨します。
trove-image-create ツールを取得して、openstack-trove-imagesパッケージをインストールします。
yum install openstack-trove-images
# yum install openstack-trove-images
以下の基本オプションを利用することができます。
| オプション | 説明、パラメーター |
|---|---|
|
|
使用するベースイメージ。QEMU イメージ (qcow2) がサポートされています。イメージファイル名 (およびオプションでそのパス) をパラメーターとして指定します。 |
|
|
使用するOpenStack バージョン。 |
|
|
デプロイするデータストア。サポート対象のデータストアは、「前書き」に記載しています。以下のようなパラメーターを使用する可能性があります。
|
例2.1 イメージのカスタマイズ
たとえば、以下のようにツールを使用することができます。
trove-image-create -s mysql -r mitaka -i myimage.qcow2
# trove-image-create -s mysql -r mitaka -i myimage.qcow2
このコマンドにより、Red Hat OpenStack Platform 9 (Mitaka) から MariaDB 5.5 および Trove が追加され、現在の作業ディレクトリー内の myimage.qcow2 ファイルに保管されているイメージがカスタマイズされます
RHEL 7 イメージを使用して作業を行う場合には、使用する必要のある追加のオプションがあります。
| オプション | 認識されるパラメーターおよび構文 | 説明 |
|---|---|---|
|
|
USER |
Red Hat の認証情報を使用して、サブスクリプションマネージャーに登録します。 |
|
|
|
指定または自動的に決定されたサブスクリプションプールをシステムにアタッチします。 |
例2.2 RHEL 7 イメージのカスタマイズ
例
trove-image-create -s mysql -r mitaka -i ../../images/rhel-mariadb55.qcow2 --sm-register admin@example.com:password:123456 --sm-pool auto
# trove-image-create -s mysql -r mitaka -i ../../images/rhel-mariadb55.qcow2 --sm-register admin@example.com:password:123456 --sm-pool auto
このコマンドは、上記の例と同様の方法でイメージをカスタマイズするとともに、Red Hat ログイン名 admin@example.com、パスワード 123456、および最も適したサブスクリプションを使用してシステムを登録します。
2.1.1. Database-as-a-Service 管理へのイメージの読み込み リンクのコピーリンクがクリップボードにコピーされました!
イメージのカスタマイズが完了したら、以下のステップを実行してください。
Image サービスへイメージをアップロードします。これには、以下のようなコマンドを実行します。
openstack image create rhel7-mariadb55 --disk-format qcow2 --container-format bare --public < myimage.qcow2
# openstack image create rhel7-mariadb55 --disk-format qcow2 --container-format bare --public < myimage.qcow2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記のコマンドの出力から、アップロードしたイメージの ID を取得します。以下のような出力が表示されるはずです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この場合、ID は c637391b-e00f-47fb-adb5-e8dfc4e224d4 です。
DBaaS 管理データストアを更新して、必要なデータストアとバージョンのインスタンスを起動するのに使用される新規イメージのレコードを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要PACKAGES変数は、使用するデータストアによって異なります。MySQL (任意のバージョン) の場合には、mysql-community-serverを使用します。MariaDB 10.0 の場合には、MariaDB-serverを使用します。
2.1.2. トラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
インスタンスの起動時にエラーが発生した場合には、SSH キーを使用してイメージを作成し、トラブルシューティングに使用することができます。trove-image-create ツールには、この目的のために --root-ssh-key オプションがあります。このオプションは、公開鍵へのパスをパラメーターとして取り、イメージに鍵を挿入します。以下に例を示します。
trove-image-create -i myimage.qcow2 -r liberty -s mysql --root-ssh-key ~/.ssh/id_rsa.pub
# trove-image-create -i myimage.qcow2 -r liberty -s mysql --root-ssh-key ~/.ssh/id_rsa.pub
このイメージをベースにするインスタンスにアクセスできるようにするには、以下の手順に従ってください。
- インスタンスに関連付けられたセキュリティーグループを編集します。
- SSH ポートを開きます。
- ICMP の許可も検討してください。
- インスタンスがプライベートネットワーク内にある場合には、Floating IP をインスタンスに追加する必要があります。
これらの手順を完了後には、以下のコマンドでインスタンスにログインできるはずです。
ssh root@INSTANCE_IP
# ssh root@INSTANCE_IP