使用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
广告
将在 10 秒后关闭
bannerAds