Docker で Elasticsearch を試す
以下の記事をみてElasticsearch を試してみました。
http://qiita.com/jun-1/items/11edfe8fae71a3e958ce
■Dockerfile の作成
HEAD プラグインの追加、discover-multicast プラグインを使ってみたかったので
公式のイメージではなく、自分で作ってみました。
Elasticsearch は zen-discovery とかいうやつでクラスタ構成を作れるようです。
ただ、勝手にクラスタ構成を作るといろいろハマることが多いらしく、
皆さんほとんど マルチキャストしないでクラスタを作っているようです。
Dockerを使用して ガンガンクラスタ構成を作っていきたいため
マルチキャストできないのはちょっと・・・。とおもったため
今回は マルチキャストを使用したクラスタを簡単に構成できるようにしてみました。
以下の資料を参考に ネットワークの設定をDockerに合わせて編集します。
https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html
ネットワーク設定がうまくいかないと Elasticsearchの起動時にエラーをはいて
node がうまくクラスタリングされずに苦労しました。
以下の設定をelasticsearch.yml に行うとマルチキャストを使用してクラスタ構成を作れるようです。
vi /etc/elasticsearch/elasticsearch.yml cluster.name: docker.elasticsearch network.bind_host: _site_ network.publish_host: '_eth0:ipv4_'
なお完全な Dockerfile は GitHub、
ビルド済みのイメージは Dockethub においてあります。
ご自由にお使いください。
https://hub.docker.com/r/moremagic/elasticsearch/
https://github.com/moremagic/elasticsearch
■起動方法
マルチキャストでノードを追加していくため同一ネットワーク上にElasticsearchコンテナを起動する必要があります。そのため 「elastic」 という名前のElasticsearch専用のネットワークを作っておきます。
docker network create -d bridge elastic
ノードを起動するときに前段で作成したネットワーク 「elastic」 を指定して起動します。
ノード名はホスト名を使用するようにしました。
node1
docker run -d -p 9201:9200 --net elastic -h node1 --name node1 moremagic/elasticsearch
node2
docker run -d -p 9202:9200 --net elastic -h node2 --name node2 moremagic/elasticsearch
node3
docker run -d -p 9203:9200 --net elastic -h node3 --name node3 moremagic/elasticsearch
起動後しばらくするとノードが追加されます。
コンテナを立てるたびにノードがどんどん追加されていきます。
■データを突っ込んでみます
参考資料のように
以下コマンドでデータを突っ込んでみます
※ なお Dockerが動いているHostの IPは 192.168.1.6
curl -XGET 'http://192.168.1.6:9201/twitter/tweet/1' {"_index":"twitter","_type":"tweet","_id":"1","_version":1,"found":true,"_source":{ "user" : "kimchy", "post_date" : "2009-11-15T14:12:12", "message" : "trying out Elasticsearch" }}
なんだかデータが分散されて格納されたようです。
太い枠のついている数字 の部分に データが入ったってことなのかな?
■ node3 を止めてみます
docker stop node3
しばらくすると 緑色の四角で表された Shared が node1 node2 にまんべんなく作成されました。
■ node3 を再起動します
docker start node3
またデータが分散されたようです。
このUI、見方が良くわからなくて調べてみたらこんな資料がありました
https://medium.com/hello-elasticsearch/elasticsearch-afd52d72711#.bflbyr5ap
なるほど。。。
moremagic
2016-05-06