Dockerで簡単にElasticsearchのクラスタを試してみる

More than 1 year has passed since last update.

やりたいこと

Dockerを使って手軽にElasticsearchクラスタを作る

環境

  • Windows8(ホスト)
  • CoreOS(仮想マシン)
  • Docker(仮想コンテナ)

環境の準備

CoreOSの準備

VirtualBoxとVagrantをインストールする

ダウンロード先は以下
https://www.virtualbox.org/wiki/Downloads
http://www.vagrantup.com/downloads.html

coreos-vagrantをインストールする

Windows
git clone https://github.com/coreos/coreos-vagrant/
cd coreos-vagrant

coreos起動

Windows
vagrant up

CoreOSにログイン

Windows
vagrant ssh

dockerの準備

ここからはCoreOSでの作業になります

Dockerfileの作成

公式のイメージにHEADプラグインを追加したいのと、ノード名を環境変数で指定したいのでDockerfileを作ります

Dockerfile
FROM dockerfile/elasticsearch

RUN /elasticsearch/bin/plugin --install mobz/elasticsearch-head
RUN sed -ri 's/^#node\.name.*/node.name: "${NODE_NAME}"/g' /elasticsearch/config/elasticsearch.yml

EXPOSE 9200

CMD  /elasticsearch/bin/elasticsearch

Dockerfileをビルドする

CoreOS
docker build -t trial/elasticsearch .

これで準備完了

クラスタの確認

nodeを起動してみる

CoreOS
docker run -d -p 9201:9200 -e "NODE_NAME=es1" --name es1 trial/elasticsearch

-p で9201ポートをElasticsearchの9200にポートフォワード
-e "NODE_NAME=es1"で環境変数を設定
--name で起動したコンテナにes1という名前をつけています

ブラウザからアクセス

ちゃんと起動してます。
es1.png

データ投入

とりあえず適当なデータを投入すると

CoreOS
curl -XPUT 'http://localhost:9201/twitter/tweet/1' -d '{
    "user" : "kimchy",
    "post_date" : "2009-11-15T14:12:12",
    "message" : "trying out Elasticsearch"
}'

indexが作成されshardの状況が表示されました

create_index.png

nodeを追加してみる

CoreOS
docker run -d -p 9202:9200 -e "NODE_NAME=es2" --name es2 trial/elasticsearch

nodeが自動でクラスタに追加されてreplicaが作られました。
cluster healthもgreenになっています。

es2.png

replica.png

更に追加

CoreOS
docker run -d -p 9203:9200 -e "NODE_NAME=es3" --name es3 trial/elasticsearch

いい感じに分散されました

es3.png

次は

クラスタ環境ができたので、nodeを落としたり上げたりして色々試してみようと思います。