【发布时间】:2018-09-05 21:37:42
【问题描述】:
首先,我认为这个问题并不特定于 ElasticSearch(以免阻碍一些潜在的答案)。
我正在使用带有 dnsrr(DNS 循环)的 docker 服务,以允许发现集群中的每个节点:它们总是尝试使用主机名“elastic”并且(应该)获得不同的 IP。
当我在本地机器上创建 3 台虚拟机时,这工作得非常好,但我不明白为什么当我在 3 台 EC2 机器上运行它时,配置为 swarm 领导者的机器只尝试自己的 IP,而两个工作人员发现彼此没有问题。
我对 AWS 还很陌生,所以我想这一定是某个地方的某种错误配置,但我不知道要检查什么。
如果您对可能导致此问题的原因有任何想法,请提前致谢,如果您想出解决方案就更好了!
使用的docker compose文件如下,简化到最大以隔离问题。
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
【问题讨论】:
标签: amazon-web-services docker elasticsearch amazon-ec2 docker-swarm