elasticsearch Docker容器集群中的Elasticsearch,elasticsearch,docker,cluster-computing,elasticsearch,Docker,Cluster Computing" /> elasticsearch Docker容器集群中的Elasticsearch,elasticsearch,docker,cluster-computing,elasticsearch,Docker,Cluster Computing" />

elasticsearch Docker容器集群中的Elasticsearch

elasticsearch Docker容器集群中的Elasticsearch,elasticsearch,docker,cluster-computing,elasticsearch,Docker,Cluster Computing,我想在2台不同的主机上运行2个Elasticsearch实例 我基于Ubuntu14.04和Elasticsearch的1.3.2版本构建了自己的Docker镜像。如果我在一台主机上运行2个ES容器,每个实例都可以看到并与其他实例通信;但当我在两台不同的主机上运行两个ES实例时,它不起作用。容器的9300端口绑定到9300主机的端口 是否可以使用我的配置创建ES群集?您应该能够在不同主机上运行的两个容器之间进行通信,只要主机可以通过所需的端口访问。我认为您的问题在于,您正在尝试使用Elastic

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

我基于Ubuntu14.04和Elasticsearch的1.3.2版本构建了自己的Docker镜像。如果我在一台主机上运行2个ES容器,每个实例都可以看到并与其他实例通信;但当我在两台不同的主机上运行两个ES实例时,它不起作用。容器的9300端口绑定到9300主机的端口


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

您应该能够在不同主机上运行的两个容器之间进行通信,只要主机可以通过所需的端口访问。我认为您的问题在于,您正在尝试使用ElasticSearch多播发现,但若需要,您还需要公开容器的端口54328。如果它不起作用,您也可以尝试使用单播配置ElasticSearch,在ElasticSearch.yml中充分设置机器IP

我能够在两台docker主机上使用单播实现集群。我只是碰巧使用了
ehazlett/elasticsearch
图像,但我认为这并不重要。真正重要的一点似乎是设置
网络。将主机发布到docker主机上的公共或可路由IP

配置
docker-host-01 docker-host-02 建立集群
在Docker主机01上 在Docker主机02上
使用docker compose比在命令行中手动运行要容易得多:

elasticsearch\u主机:
图片:elasticsearch:最新
命令:“elasticsearch-Des.cluster.name=workagram-Des.node.master=true-Des.node.data=false”
环境:
-ES_堆大小=512m
端口:
- "9200:9200"
- "9300:9300"
弹性搜索1:
图片:elasticsearch:最新
命令:“elasticsearch-Des.cluster.name=workagram-Des.discovery.zen.ping.unicast.hosts=elasticsearch\u master”
链接:
-弹性搜索母版
卷数:
-“/opt/elasticsearch/data”
环境:
-ES_堆大小=512m
弹性搜索2:
图片:elasticsearch:最新
命令:“elasticsearch-Des.cluster.name=workagram-Des.discovery.zen.ping.unicast.hosts=elasticsearch\u master”
链接:
-弹性搜索母版
卷数:
-“/opt/elasticsearch/data”
环境:
-ES_堆大小=512m

谢谢您的回答,我忘了暴露端口54328。暴露此端口后,该端口无法工作。配置ES使用单播可能是解决方案,但我真的需要多播协议,我还没有尝试过,但有消息称多播在Docker设置中不起作用。但您可以使用单播配置弹性设置。查看此帖子以查看更多详细信息:www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-discovery-zen.htmlwhat如果您有3个节点?我当前正在使用elasticsearch:2.4.1,希望在两个不同的主机上配置cassandra。是否可以运行不在同一LAN中的两个节点群集?我已尝试在两个不同的ec2实例中运行这两个docker容器来替换ip地址。我无法连接彼此。在一台机器(节点)中创建的一个索引也不会反映在另一个节点中。我正在学习docker并建立ES群集。您知道在哪里使用docker compose标记,如ealsticsearch_master、elasticsearch1、elasticsearch2。我们在哪里提到它?愚蠢的问题可能是,如果我们在三台不同的机器上运行,并且它们不在同一个局域网中,这是行不通的
eth0: 192.168.1.10
Docker version 1.4.1, build 5bc2ff8/1.4.1
eth0: 192.168.1.20
Docker version 1.4.1, build 5bc2ff8/1.4.1
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 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