【问题标题】:Elasticsearch 2.0.0 cluster zen discovery in dockerdocker 中的 Elasticsearch 2.0.0 集群 zen 发现
【发布时间】:2015-11-02 12:12:45
【问题描述】:

我尝试以 docker 方式在谷歌计算引擎的 2 个不同节点上运行 elasticsearch 集群。

1.7.1可以单播,2.0.0不行,2个节点不能连在一起

下面是Dockerfilerun commandelasticsearch.yml。谢谢

Dockerfile

FROM java:8

#ENV ES_PKG_NAME elasticsearch-2.0.0
ENV ES_PKG_NAME elasticsearch-1.7.1

RUN \
  cd / && \
  #wget https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.0.0/$ES_PKG_NAME.tar.gz && \
  wget https://download.elasticsearch.org/elasticsearch/elasticsearch/$ES_PKG_NAME.tar.gz && \
  tar xvzf $ES_PKG_NAME.tar.gz && \
  rm -f $ES_PKG_NAME.tar.gz && \
  mv /$ES_PKG_NAME /elasticsearch

RUN mkdir -p /data/mnt
RUN chmod 777 -R /data/mnt
RUN chmod 777 -R /elasticsearch

RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo
USER docker

EXPOSE 9200
EXPOSE 9300

ADD elasticsearch.yml /elasticsearch/config/elasticsearch.yml

ENTRYPOINT ["/elasticsearch/bin/elasticsearch"]

运行命令

docker run -it -p 9200:9200 -p 9300:9300 \
    -v /data/elasticsearch:/data/mnt \
    -e ES_HEAP_SIZE=4g \
    --restart=always --name elastic_search \
    elastic_search \
    --node.name=$(hostname) \
    --network.publish_host=$(hostname -i) \
    --discovery.zen.ping.multicast.enabled=false \
    --discovery.zen.ping.unicast.hosts=10.240.0.58:9300,10.240.0.59:9300

elasticsearch.yml

cluster.name: hello

# path
path.conf: /elasticsearch/config
path.data: /data/mnt/data
path.logs: /data/mnt/log
path.plugins: /elasticsearch/plugins
path.work: /data/mnt/work

# index option
index.number_of_shards: 5
index.number_of_replicas: 2

node-a 的控制台

[2015-11-02 04:09:59,133][INFO ][node                     ] [elastic-a.c.ikalacomputeenginetest.internal] version[2.0.0], pid[1], build[de54438/2015-10-22T08:09:48Z]
[2015-11-02 04:09:59,134][INFO ][node                     ] [elastic-a.c.ikalacomputeenginetest.internal] initializing ...
[2015-11-02 04:09:59,488][INFO ][plugins                  ] [elastic-a.c.ikalacomputeenginetest.internal] loaded [license], sites [hq, kopf]
[2015-11-02 04:09:59,523][INFO ][env                      ] [elastic-a.c.ikalacomputeenginetest.internal] using [1] data paths, mounts [[/data/mnt (/dev/sda9)]], net usable_space [4.5gb], net total_space [6.4gb], spins? [possibly], types [ext4]
[2015-11-02 04:10:01,577][INFO ][node                     ] [elastic-a.c.ikalacomputeenginetest.internal] initialized
[2015-11-02 04:10:01,577][INFO ][node                     ] [elastic-a.c.ikalacomputeenginetest.internal] starting ...
[2015-11-02 04:10:01,667][INFO ][transport                ] [elastic-a.c.ikalacomputeenginetest.internal] publish_address {10.240.0.58:9300}, bound_addresses {127.0.0.1:9300}, {[::1]:9300}
[2015-11-02 04:10:01,693][INFO ][discovery                ] [elastic-a.c.ikalacomputeenginetest.internal] hello/NULtHr65Sm-1d47NfJ_uhQ
[2015-11-02 04:10:04,732][INFO ][cluster.service          ] [elastic-a.c.ikalacomputeenginetest.internal] new_master {elastic-a.c.ikalacomputeenginetest.internal}{NULtHr65Sm-1d47NfJ_uhQ}{10.240.0.58}{10.240.0.58:9300}, reason: zen-disco-join(elected_as_master, [0] joins received)
[2015-11-02 04:10:04,812][INFO ][http                     ] [elastic-a.c.ikalacomputeenginetest.internal] publish_address {10.240.0.58:9200}, bound_addresses {127.0.0.1:9200}, {[::1]:9200}
[2015-11-02 04:10:04,813][INFO ][node                     ] [elastic-a.c.ikalacomputeenginetest.internal] started
[2015-11-02 04:10:04,904][INFO ][license.plugin.core      ] [elastic-a.c.ikalacomputeenginetest.internal] license [b61278f5-5cc8-40b0-87cd-820f1b8d5c58] - valid

node-b 的控制台

[2015-11-02 04:11:34,619][INFO ][node                     ] [elastic-b.c.ikalacomputeenginetest.internal] version[2.0.0], pid[1], build[de54438/2015-10-22T08:09:48Z]
[2015-11-02 04:11:34,620][INFO ][node                     ] [elastic-b.c.ikalacomputeenginetest.internal] initializing ...
[2015-11-02 04:11:34,866][INFO ][plugins                  ] [elastic-b.c.ikalacomputeenginetest.internal] loaded [license], sites [hq, kopf]
[2015-11-02 04:11:34,896][INFO ][env                      ] [elastic-b.c.ikalacomputeenginetest.internal] using [1] data paths, mounts [[/data/mnt (/dev/sda9)]], net usable_space [4.7gb], net total_space [6.4gb], spins? [possibly], types [ext4]
[2015-11-02 04:11:37,007][INFO ][node                     ] [elastic-b.c.ikalacomputeenginetest.internal] initialized
[2015-11-02 04:11:37,008][INFO ][node                     ] [elastic-b.c.ikalacomputeenginetest.internal] starting ...
[2015-11-02 04:11:37,085][INFO ][transport                ] [elastic-b.c.ikalacomputeenginetest.internal] publish_address {10.240.0.59:9300}, bound_addresses {127.0.0.1:9300}, {[::1]:9300}
[2015-11-02 04:11:37,108][INFO ][discovery                ] [elastic-b.c.ikalacomputeenginetest.internal] hello/DD6mqmC4SC2K3RXx4Dy8xg
[2015-11-02 04:11:40,134][INFO ][cluster.service          ] [elastic-b.c.ikalacomputeenginetest.internal] new_master {elastic-b.c.ikalacomputeenginetest.internal}{DD6mqmC4SC2K3RXx4Dy8xg}{10.240.0.59}{10.240.0.59:9300}, reason: zen-disco-join(elected_as_master, [0] joins received)
[2015-11-02 04:11:40,199][INFO ][http                     ] [elastic-b.c.ikalacomputeenginetest.internal] publish_address {10.240.0.59:9200}, bound_addresses {127.0.0.1:9200}, {[::1]:9200}
[2015-11-02 04:11:40,200][INFO ][node                     ] [elastic-b.c.ikalacomputeenginetest.internal] started
[2015-11-02 04:11:40,281][INFO ][license.plugin.core      ] [elastic-b.c.ikalacomputeenginetest.internal] license [16216eed-f88a-4c59-8578-b1cba069a219] - valid

【问题讨论】:

    标签: elasticsearch docker google-compute-engine elasticsearch-2.0


    【解决方案1】:

    刚刚遇到了完全相同的问题:启动 docker 容器时,您必须更改变量 --network.publish_host,因为它现在在 ES 2.0 network.host : https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration.html#settings.

    这应该可以解决问题!

    【讨论】:

    • 嗨 Louis 这不起作用,来自 doc(network.host 设置是一个简单的设置,可以自动将 network.bind_hostnetwork.publish_host 设置为相同的主机值。)如果我设置 @ 987654325@到内部ip,会导致BindTransportException错误
    • 好吧,对不起那个布朗尼。您是否尝试使用 --net=host 配置参数启动弹性容器?
    • @louis 非常感谢,只是想知道这是如何工作的。 --net=host 绝对有效。但是,如果我使用“docker network create ”手动创建一个网络,那么我对这个创建的新网络执行 --net=,它不会自动检测并作为集群加入。
    猜你喜欢
    • 2015-12-09
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 2018-09-05
    • 2022-01-05
    • 2016-11-14
    • 2012-02-24
    • 2019-12-13
    相关资源
    最近更新 更多