ようへいの日々精進XP

よかろうもん

elasticsearch と elasticsearch-head を docker でサクッと試す

はじめに

  • 一昨日の第 2 回 elasticsearch 勉強会で @pisatoshi さんのお話中に紹介されていた elasticesearch-head を試してみた
  • elasticsearch 自体は導入がとても簡単で手軽に試せるのが嬉しい
  • さらに docker のコンテナにしておけば誰かに説明することがあったらコレを docker pull してで試してみてーと言える

elasticsearch-head とは

  • こちらによると elasticsearch の Web フロント
  • @pisatoshi さんの資料はこちら
  • 合わせてこちらの記事を参考にさせて頂いた

設定


早速試す

docker コンテナを起動

cookbook を適用する為

せっかく作った cookbook を適用する為に ssh でアクセス出来るようにしてコンテナを起動する。

docker pull
sudo dokcer run -i -t -H=tcp://127.0.0.1:4243/ run -i -t -p 22 inokappa/wheezy-7.2 /bin/bash

起動したら cookbook を適用する。

knife solo prepare root@${docker0} -p ${bind_to_ssh_port}
knife solo cook root@${docker0} -p ${bind_to_ssh_port}

出来上がった(cookbook を適用した)コンテナを一旦、docker commit する。

sudo docker ps -a
sudo docker commit ${ID} inokappa/wheezy-7.2-elasticsearch

elasticsearch コンテナを起動する

上記でコミットしたコンテナを起動する。

sudo docker -H=tcp://127.0.0.1:4243/ run -i -t -p 9200:9200 inokappa/wheezy-7.2-elasticsearch /bin/bash

キモは特に無し。外部からアクセスさせるポート(-p 9200:9200)だけ気をつける。

elastisearch を起動

コンテナにログインして elasticsearch を起動する。

/etc/init.d/elasticsearch start

念の為、ps 等で起動を確認する。

103      10109  0.1  2.4 1566884 93820 ?       Sl   Nov13   2:22 /usr/lib/jvm/java-6-openjdk-amd64/bin/java -Xms256m -Xmx1g -Xss256k -Djava.awt.headless=true -XX:+UseParNewGC
 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Delasticsearch -Des.pidfile=/var/run/elasti
csearch.pid -Des.path.home=/usr/share/elasticsearch -cp :/usr/share/elasticsearch/lib/elasticsearch-0.90.7.jar:/usr/share/elasticsearch/lib/*:/usr/share/elasticsearch/lib/sig
ar/* -Des.default.config=/etc/elasticsearch/elasticsearch.yml -Des.default.path.home=/usr/share/elasticsearch -Des.default.path.logs=/var/log/elasticsearch -Des.default.path.
data=/var/lib/elasticsearch -Des.default.path.work=/tmp/elasticsearch -Des.default.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.ElasticSearch

ちなみにコンテナの起動は以下のように起動しても良い。ちょっと長いけど。

sudo docker -H=tcp://127.0.0.1:4243/ run -i -t -d -p 9200:9200 inokappa/wheezy-7.2-elasticsearch /usr/lib/jvm/java-6-openjdk-amd64/bin/java -Xms256m -Xmx1g -Xss256k -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Delasticsearch -Des.pidfile=/var/run/elasticsearch.pid -Des.path.home=/usr/share/elasticsearch -cp :/usr/share/elasticsearch/lib/elasticsearch-0.90.7.jar:/usr/share/elasticsearch/lib/*:/usr/share/elasticsearch/lib/sigar/* -Des.default.config=/etc/elasticsearch/elasticsearch.yml -Des.default.path.home=/usr/share/elasticsearch -Des.default.path.logs=/var/log/elasticsearch -Des.default.path.data=/var/lib/elasticsearch -Des.default.path.work=/tmp/elasticsearch -Des.default.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.ElasticSearch

docker-d オプションでコンテナをデーモンとして動作させてしまう。

ブラウザから elasticsearch-head へアクセス

ブラウザから http://${docker0}:9200/_plugin/head/ としてアクセスする。

f:id:inokara:20131114003831p:plain

おお。

インデックスを作ってみる

New Index をクリックするとインデックス名やシャードの数、レプリカの数を指定する為のポップアップが開くので適宜指定する。

f:id:inokara:20131115040905p:plain

OK をクリックすると以下のように一瞬エラッたのかと思わせるポップアップとともにインデックスが作成される。

f:id:inokara:20131115041404p:plain

以下の通りインデックスが作成された。

f:id:inokara:20131115041538p:plain

もちろん作成したインデックスの削除や、インデックスのエイリアスの設定等も elasticsearch-head から行える。また、インデックスのステータスやシャードのステータスが以下のようにクエリとして確認出来る。

f:id:inokara:20131115042344p:plain


最後に

  • 今回作ったコンテナはこちらにアップした
  • elasticsearch-headelasticsearch の状態を可視化してくれるので自分のような初心者でも視覚的に状況を理解出来るのが嬉しい