Docker Swarm的AWS EC2问题使用dnsrr设置ElasticSearch集群发现

时间:2018-03-27 12:58:19

标签: amazon-web-services docker elasticsearch amazon-ec2 docker-swarm

首先,我认为这个问题不是特定于ElasticSearch(以免劝阻某些可能的答案)。

我使用带有dnsrr(DNS循环)的docker服务来允许发现群集中的每个节点:他们总是尝试使用主机名' elastic'和(应该)获得不同的IP。

当我在本地计算机上创建3个虚拟机时,这非常正常,但是我无法弄清楚为什么当我在3台EC2计算机上运行它时,配置为swarm leader的计算机只会尝试自己的IP,而两名工人发现对方毫无问题。

我对AWS很新,所以我想某些地方肯定会出现某种错误配置,但我无法弄明白要检查的内容。

如果您对可能导致这种情况的原因有所了解,请提前致谢,如果您想出一个解决方案,那就更好了!

docker compose file as use如下所示,简化为max来隔离问题。

version: "3.3"

services:

  elastic:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.5.2
    environment:
    - ES_JAVA_OPTS=-Xms1g -Xmx1g
    - discovery.zen.ping.unicast.hosts=elastic
    - discovery.zen.minimum_master_nodes=2
    volumes:
    - elastic_data:/usr/share/elasticsearch/data
    networks:
    - overnet
    logging:
      driver: "json-file"
      options: 
        max-size: "20m"
        max-file: "10"
    deploy:
      mode: global
      endpoint_mode: dnsrr

networks:
  overnet:
    driver: overlay
    driver_opts:
      encrypted: "true"

volumes:
    elastic_data:
      external: true

1 个答案:

答案 0 :(得分:0)

尝试在未启用加密的情况下重新创建,看看是否有效。

还要确保在具有all the proper ports open between them的三个节点之间安装了一个安全组。