やりたいこと
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という名前をつけています
ブラウザからアクセス
データ投入
とりあえず適当なデータを投入すると
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の状況が表示されました
nodeを追加してみる
CoreOS
docker run -d -p 9202:9200 -e "NODE_NAME=es2" --name es2 trial/elasticsearch
nodeが自動でクラスタに追加されてreplicaが作られました。
cluster healthもgreenになっています。
更に追加
CoreOS
docker run -d -p 9203:9200 -e "NODE_NAME=es3" --name es3 trial/elasticsearch
いい感じに分散されました
次は
クラスタ環境ができたので、nodeを落としたり上げたりして色々試してみようと思います。