跨Docker的Elasticsearch集群

如何部署ES(Elasticsearch)群集?

我使用Docker Swarm + Compose来部署我的系统,并尝试通过.yml部署ES群集:

version: '3.3' services: elasticsearch: image: elasticsearch:alpine ports: - '9200:9200' - '9300:9300' command: [ elasticsearch, -E, network.host=0.0.0.0, -E, discovery.zen.ping.unicast.hosts=elasticsearch, -E, discovery.zen.minimum_master_nodes=1, -E, cluster.name=mycluster ] networks: - esnet1 environment: ES_JAVA_OPTS: "-Xmx512m -Xms512m" deploy: mode: replicated replicas: 2 #endpoint_mode: dnsrr resources: limits: cpus: '2' memory: 1024M reservations: cpus: '0.50' memory: 512M networks: esnet1: 

呼叫请求<ip>:9200/_cat/nodes?v我看到单个实例。 问题https://github.com/elastic/elasticsearch-docker/issues/91说,这是在Docker中的错误,它将被修复。 没问题,但没有集群的ES不是ES! 在互联网上,我看到人们把不同的服务部署为主人和奴隶,但这是一个笨拙的解决scheme,因为ES本身决定了谁是主人,谁不主人。 有趣的问题是:如何部署ES群集?

回答这个问题: https : //github.com/elastic/elasticsearch-docker/issues/91#issuecomment-328671018

使用docker 17.09.0-ce-rc1或更高版本

例如: https : //github.com/elastic/elasticsearch-docker/issues/91#issuecomment-330032899