跨越 docker 的 Elasticsearch 集群

Elasticsearch cluster across docker

如何部署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! 在 Internet 上,我看到有人将不同的服务部署为 master 和 slave,但这是一个笨拙的解决方案,因为 ES 本身决定了谁是 master 和谁不是 master,它能胜任。 还有一个有趣的问题:你是如何部署你的 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