やったことだけ書く備忘録

Dockerコンテナ上にVoltDBをインストールするメモ

Dockerの勉強ついでに


あんまりDB・ストレージ系の性能を気にしたことが無くて(気にしないといけないんですが)、
VoltDBがインメモリで速いらしい、ということで性能を試したくなりました。(本当はriakを試すつもりだったんですが、興味がコロコロと…)

が、今回はインストールからバンドルされてるサンプルプロジェクトを動かすまでのメモです。

せっかくなのでDockerコンテナ上のUbuntuに入れて動かしてみます。どちらかというとDockerのメモがメインです。



Volt DBとは



VoltDBはIngresやPostgreSQLに携わったマイケル・ストーンブレーカーにより設計されたインメモリデータベースである。
- WikiPediaより引用



ということで、Postgresの開発に関わってる人が作ってるみたいです。MemcachedやRedisの代替で使えそうだけど、
SQLはJavaから動かしたりプロシージャを介してなんやかんやするらしいのでハードル高そうな感じ(´ω`)Javaワカリマセン



Dockerfileの設定から起動まで


Dockerのコンテナ作りから始めます。メイン端末がMacなのでboot2docker上で動かします(boot2dockerのインストールなどは省略)。
こんな感じで書いた。


FROM ubuntu
:12.04
MAINTAINER Yoshiaki Sugimoto

# system update
RUN apt-get update
# install dependency middlewares
RUN apt-get install wget openssh-server openjdk-7-jdk gcc ntp -y

# get and extract voltdb
RUN cd /root && wget -q http://voltdb.com/downloads/technologies/server/LINUX-voltdb-ent-4.5.tar.gz
RUN tar xfz /root/LINUX-voltdb-ent-4.5.tar.gz -/usr/local
# enable to use voltdb management commands
ENV PATH /usr/local/voltdb-ent-4.5/bin:$PATH

# ssh settings
RUN mkdir -/var/run/sshd
RUN sed 
-ri "s/#PermitRootLogin yes/PermitRootLogin yes/" /etc/ssh/sshd_config
RUN 
echo "root:root" chpasswd

# port ssh
EXPOSE 22
# port voltdb admin
EXPOSE 8080

CMD 
["/usr/sbin/sshd""-D"]
 


色々試してて気づいたけど、CMDセクションは一つしか駄目みたい(起動後にdocker inspectしてもConfig.Cmdは最後の一つしか渡っていなかった)。
もしかしたら方法あるかもしれないし、起動スクリプトをADDしてまとめて実行するとかでもいいかな?今回は一旦セットアップを済ませた後にsshdを起動しておいて、後からsshでログインして起動する方法にした。

で、docker imageをビルド。




$ docker build -t voltdb


成功したらバックグラウンドで起動させる。ポートフォワーディングの指定を忘れずに。




$ docker run -d -p 60001:22 -p 60002 8080 --name voltdbsample voltdb


8080ポートを解放・フォワード指定しているのは、VoltDBの管理ツールみたいなのがこのポートで実行されるから。
あとはdocker psで起動を確認できればOK。




$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b74a21a58639 voltdb:latest /usr/sbin/sshd -D 5 seconds ago Up 3 seconds 0.0.0.0:60001->22/tcp, 0.0.0.0:60002->8080/tcp voltdbsample


ここまで来たら後は通常通り。SSHでログインして起動する。
ポートフォワーディングとかDockerfileの設定などは以下を参考に。ここでは60001(ssh)/8899(http)をそれぞれホスト->ゲストにフォワードさせた。


Docker を Mac で使ってみた(Nodeアプリ例)



安定のhavelogである。



VoltDBの起動まで


SSHでログインしたら、サンプルプロジェクトをコンパイル・起動する。サンプルプロジェクトはjson-sessionsを使う。




$ ssh root@localhost -p60001
root@xxxxxxx:~# cd /usr/local/voltdb-ent-4.5/examples/json-sessions && ./run.sh


すると、以下のようなAAが出て起動すればOK。



http:/loclhost:8899にアクセス(ポートフォワーディングが異なる場合はそのように)すれば起動状態が確認できる。



とりあえず、ここまで


VoltDBはNode/PHP/Rubyなどのクライアントもあるようなので、アプリから接続して実行するところまでやってみたい。
今回はDockerの勉強の方が優先だったので…。

今までこういうことをやろうと思うとVirtualBoxだったり別でVPS用意したりで結構手間がかかるものだけど、楽に軽量に生成と起動ができるのは素晴らしいですね。
特に同じ設定で複数インスタンスを作る場合は圧倒的に効率が良さそう。

現場からは以上です。

« 前の記事 次の記事 »

0件のコメント

コメントを投稿する

 画像に表示されている文字を入力してください。