Docker 容器集群中的 Elasticsearch

标签 elasticsearch docker cluster-computing

我想在 2 个不同的主机上运行 2 个 Elasticsearch 实例。

我已经基于 Ubuntu 14.04 和 1.3.2 版本的 Elasticsearch 构建了自己的 Docker 镜像。如果我在 1 个主机上运行 2 个 ES 容器,每个实例都可以看到并与另一个实例通信;但是当我在 2 个不同的主机上运行 2 个 ES 实例时,它不起作用。容器的 9300 端口绑定(bind)到主机的 9300 端口。

是否可以使用我的配置创建 ES 集群?

最佳答案

我能够在两个 docker 主机上使用单播进行集群工作。我只是碰巧在使用 ehazlett/elasticsearch 图像,但我认为这并不重要。真正重要的一点似乎是将 network.publish_host 设置设置为其 docker 主机的公共(public)或可路由 IP。

配置


docker-host-01

eth0: 192.168.1.10
Docker version 1.4.1, build 5bc2ff8/1.4.1

docker-host-02

eth0: 192.168.1.20
Docker version 1.4.1, build 5bc2ff8/1.4.1

构建集群


在 Docker 主机 01 上

docker run -d \
  -p 9200:9200 \
  -p 9300:9300 \
  ehazlett/elasticsearch \
  --cluster.name=unicast \
  --network.publish_host=192.168.1.10 \
  --discovery.zen.ping.multicast.enabled=false \
  --discovery.zen.ping.unicast.hosts=192.168.1.20 \
  --discovery.zen.ping.timeout=3s \
  --discovery.zen.minimum_master_nodes=1

在 Docker 主机 02 上

docker run -d \
  -p 9200:9200 \
  -p 9300:9300 \
  ehazlett/elasticsearch \
  --cluster.name=unicast \
  --network.publish_host=192.168.1.20 \
  --discovery.zen.ping.multicast.enabled=false \
  --discovery.zen.ping.unicast.hosts=192.168.1.10 \
  --discovery.zen.ping.timeout=3s \
  --discovery.zen.minimum_master_nodes=1

关于Docker 容器集群中的 Elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28632977/

相关文章:

arrays - ElasticSearch中的权限

python - 按pyes和elasticsearch中的多个参数排序

mysql - 如何在同一个 Docker 容器上运行 JIRA 和 MySQL

amazon-web-services - 如何在 kubernetes 中将 SSL 证书安装到 aws 负载均衡器?

cluster-computing - 将新节点添加到 aerospike 集群

node.js - 如何制作带有socket io集群的node js?

filesystems - LBA和集群

python - Elasticsearch/Python - 更改映射后重新索引数据?

Elasticsearch fielddata - 我应该使用它吗?

docker - docker-compose 和手动命令之间的区别