Elasticsearch
docker
CoreOS

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

More than 3 years have 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を落としたり上げたりして色々試してみようと思います。