#やりたいこと
Dockerを使って手軽にElasticsearchクラスタを作る
##環境
- Windows8(ホスト)
- CoreOS(仮想マシン)
- Docker(仮想コンテナ)
#環境の準備
##CoreOSの準備
###VirtualBoxとVagrantをインストールする
ダウンロード先は以下
https://www.virtualbox.org/wiki/Downloads
http://www.vagrantup.com/downloads.html
###coreos-vagrantをインストールする
git clone https://github.com/coreos/coreos-vagrant/
cd coreos-vagrant
###coreos起動
vagrant up
###CoreOSにログイン
vagrant ssh
##dockerの準備
ここからはCoreOSでの作業になります
###Dockerfileの作成
公式のイメージにHEADプラグインを追加したいのと、ノード名を環境変数で指定したいので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をビルドする
docker build -t trial/elasticsearch .
これで準備完了
#クラスタの確認
##nodeを起動してみる
docker run -d -p 9201:9200 -e "NODE_NAME=es1" --name es1 trial/elasticsearch
-p で9201ポートをElasticsearchの9200にポートフォワード
-e "NODE_NAME=es1"で環境変数を設定
--name で起動したコンテナにes1という名前をつけています
##データ投入
とりあえず適当なデータを投入すると
curl -XPUT 'http://localhost:9201/twitter/tweet/1' -d '{
"user" : "kimchy",
"post_date" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch"
}'
indexが作成されshardの状況が表示されました
##nodeを追加してみる
docker run -d -p 9202:9200 -e "NODE_NAME=es2" --name es2 trial/elasticsearch
nodeが自動でクラスタに追加されてreplicaが作られました。
cluster healthもgreenになっています。
##更に追加
docker run -d -p 9203:9200 -e "NODE_NAME=es3" --name es3 trial/elasticsearch
いい感じに分散されました
#次は
クラスタ環境ができたので、nodeを落としたり上げたりして色々試してみようと思います。