Trove って何?
Openstackには、DBaaS(Database as a Service)のTroveというコンポーネントがあります。
AmazonだとRDSが対応するものです。
詳細は公式のwiki などを見るほうが良いでしょう。
これを実際に自宅にOpenstackがある場合どうすれば使えるのかという話を簡単にまとめます。
結論からいうと、自宅で特にOpenstackの管理者=Openstackの利用者となっている環境では使う価値はほぼ無いと言って良いと思います。
何をしてくれるのか?
- DB(MySQL, Postgres, Mongo, Redisなど)を指定して起動することができます
- troveはDBの起動を指示するとDBが起動する個別のインスタンスを起動します
- DB用のインスタンス内部のtrove-agentとopenstack上のtrove-conductorが相互に通信を行います
- DBがインストールされていない場合はtrove-agentがインストールや設定を実行します
- DBが起動してtroveの利用者は、DBのりようが可能になります
ざっくり言うとこのようなものです。
問題点
問題は上記の環境は標準インストールしてもついてこないということです。
troveはDBの起動に使うインスタンスのイメージ作成をOpenstackの管理者に任せています。
つまり、
- trove-agentがインストールされている
- trove-agentが自動起動する設定になっている
- 指定したDBがインストール可能か起動している
というイメージを、利用したいOS, DBサーバごとに用意する必要があります。
これを用意するには、以下の記事の Building images for trove にかかれているような手順となります。
また、この手順に従ってもインストールするtrove-agentとホストのtroveのバージョンがある程度一致していないとうまく通信できない可能性もあります。
https://github.com/d0m0reg00dthing/Openstack-Icehouse-Trove
自動化する試みもされていますが、自分の環境ではうまく動作しませんでした
- https://github.com/vkmc/trove-image-elements
- https://github.com/denismakogon/trove-guest-image-elements
Trove側でも自動化の枠組みは用意してくれています
/etc/trove/cloudinit/
の下にDBの名前に合わせたcloudinitのスクリプトを設置すると実行してくれます。
例えば、mysqlを入れるならmysql.cloudinitを設置すると、mysql用のインスタンスを起動するときに実行されます。
結論
つまり、Troveを利用するためには、自動的にDBが起動するインスタンスを用意しなければならず
それを自前で用意することが最初に求められるなら、そのままTroveなんか利用せずそのまま使いますよね。
さらに、Troveが起動するDBがRDSなどと比較して、SLAがを同レベルまであげようとすると
その設定は自分で実施する必要があります。
TroveでDBが起動できるようになることは確認できましたが、あまり積極的に自分で使おうとは思いませんね…。