首先,我认为这个问题不是特定于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
答案 0 :(得分:0)
尝试在未启用加密的情况下重新创建,看看是否有效。
还要确保在具有all the proper ports open between them的三个节点之间安装了一个安全组。