使用Docker轻松创建多节点的Elasticsearch集群,并添加喜欢的插件
目标
-
- Elasticsearch clusterの複数nodeを跨いだshardsの動きを実際に確認したい
- VMを複数起動するのは面倒なのでdockerでさっくり試したい
环境
-
- MacOS X El Capitan (10.11.5)
Docker Toolbox 1.11.2
做好準備
-
- Docker Toolboxの導入などは、こちらの記事などをご参考ください
-
- docker machineのIPアドレスは192.168.99.100とします (Macだとデフォルトでこれになるはず)
dockerコマンドがすでに使える状態を前提で話を進めていきます
当不需要多个节点时,也不需要添加插件时
-
- 公式イメージをそのまま利用すれば良い
- コンテナ起動
$ docker run -d -p 9200:9200 -p 9300:9300 elasticsearch
- Elasticsearchが動いていることの確認
$ curl http://192.168.99.100:9200
{
"name" : "Wong",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.3.4",
"build_hash" : "e455fd0c13dceca8dbbdbb1665d068ae55dabe3f",
"build_timestamp" : "2016-06-30T11:24:31Z",
"build_snapshot" : false,
"lucene_version" : "5.5.0"
},
"tagline" : "You Know, for Search"
}
-
- クエリをちょっと確認したいなどの場合はこれで十分と思われる
-
- pluginの追加はできない
- 追加でもう一台nodeを立ち上げてもnode同士のリンクはしてくれない (Dockerコンテナをリンクさせればできるらしいがやり方がわからなかった)
要创建多个节点的集群
只需增加一行代码到 Elasticsearch 的配置中即可实现,所以我要自己创建 Docker 镜像。
顺便尝试添加 Kuromoji 插件。
准备Dockerfile文件。
-
- 公式イメージを流用
-
- Elasticsearchはzen discoveryを使ってnodeを探しているとのことなので、docker machineのIPを設定してあげることで他のコンテナ(node)が見つかるようになる(らしい)
-
- kuromoji pluginもインストール
他のpluginも欲しい時は色々追加してOK
ちなみにユーザーがrootのままでElasticsearchを起動すると、「rootで起動するな」とJava RuntimeExceptionが吐かれるので、elasticsearchユーザーに切り替えています
FROM elasticsearch
ENV DOCKER_MACHINE_IP 192.168.99.100
ENV ELASTICSEARCH_CONFIG_FILE /usr/share/elasticsearch/config/elasticsearch.yml
RUN echo "discovery.zen.ping.unicast.hosts: [¥"$DOCKER_MACHINE_IP¥"]" >> $ELASTICSEARCH_CONFIG_FILE
USER elasticsearch
RUN plugin install analysis-kuromoji
CMD elasticsearch
创建Docker镜像
-
- docker image名をここではtrial/esとしていますが、自分のお好みで変更してください
- Dockerfileが置いてあるディレクトリにいる想定のコマンドです
$ docker build -t trial/es .
启动容器并确认Elasticsearch的运行情况
$ docker run -d -p 9200:9200 -p 9300:9300 trial/es
$ curl http://192.168.99.100:9200
再启动一个容器并确认Elasticsearch的运作
- ポートが被らないように変更していることに注意
$ docker run -d -p 9201:9200 -p 9301:9300 trial/es
$ curl http://192.168.99.100:9201
确认两个节点之间的链接
node.totalが2となっていれば成功
$ curl http://192.168.99.100:9200/_cat/health?v
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1468301909 05:38:29 elasticsearch green 2 2 0 0 0 0 0 0 - 100.0%
插件的功能确认
- kuromoji pluginの動作確認はこちらの記事を参考にやってみてください
最终
- ダメなとこやわかりにくいところがあったら、遠慮なくコメントしてください。直します
我想借用您提供的文章链接作为参考。
-
- https://tech.recruit-mp.co.jp/infrastructure/docker-elasticsearch/
-
- http://qiita.com/jun-1/items/11edfe8fae71a3e958ce
- http://d.hatena.ne.jp/Kazuhira/20160201/1454320930