【问题标题】:How do you set up an elastic search cluster with multiple master nodes in docker compose?如何在 docker compose 中设置具有多个主节点的弹性搜索集群?
【发布时间】:2016-07-13 15:25:27
【问题描述】:

我让 docker compose 构建一个具有 1 个主节点和 2 个数据节点的弹性搜索节点集群,如下所示,但我想知道如何扩展它以添加更多主节点,因为仍然存在单点故障如果主节点出现故障,则使用此设置。

更具体地说,第二个主节点如何与使用它的主机和应用程序交互?您是否必须为第二个主节点绑定到主机上的不同端口?那么应用程序是否必须通过负载均衡器来处理其中一个主节点出现故障的情况?

elasticsearch_master:
  image: elasticsearch:latest
  command: "elasticsearch -Des.cluster.name=vi -Des.node.master=true -Des.node.data=false"
  ports:
    - "9200:9200"
    - "9300:9300"

elasticsearch1:
  image: elasticsearch:latest
  command: "elasticsearch -Des.cluster.name=vi -Des.discovery.zen.ping.unicast.hosts=elasticsearch_master"
  links:
    - elasticsearch_master
  volumes:
    - "~/esdata:/usr/share/elasticsearch/data"

elasticsearch2:
  image: elasticsearch:latest
  command: "elasticsearch -Des.cluster.name=vi -Des.discovery.zen.ping.unicast.hosts=elasticsearch_master"
  links:
    - elasticsearch_master
  volumes:
    - "~/esdata:/usr/share/elasticsearch/data"

【问题讨论】:

  • 你找到这个问题的答案了吗?

标签: elasticsearch docker docker-compose


【解决方案1】:

我知道我们的做法不同,但这里有一个对我有用的代码示例。

services:
  esmaster1:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
    container_name: esmaster1
    environment:
      - cluster.name=es_cluster
      - bootstrap.memory_lock=true
      - http.cors.enabled=true
      - "http.cors.allow-origin=*"
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "discovery.zen.ping.unicast.hosts=esmaster1,esmaster2"
      - "node.master=true"
      - "node.data=true"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata1:/home/ruan/workspace/docker/elasticsearch/data

  esmaster2:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
    container_name: esmaster2
    environment:
      - cluster.name=es_cluster
      - bootstrap.memory_lock=true
      - http.cors.enabled=true
      - "http.cors.allow-origin=*"
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "discovery.zen.ping.unicast.hosts=esmaster1,esmaster2"
      - "node.master=true"
      - "node.data=true"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata2:/home/ruan/workspace/docker/elasticsearch/data

  elasticsearch1:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
    container_name: elasticsearch1
    environment:
      - cluster.name=es_cluster
      - bootstrap.memory_lock=true
      - http.cors.enabled=true
      - "http.cors.allow-origin=*"
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "discovery.zen.ping.unicast.hosts=esmaster1,esmaster2"
      - "node.master=false"
      - "node.data=true"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata3:/home/ruan/workspace/docker/elasticsearch/data

  elasticsearch2:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
    container_name: elasticsearch2
    environment:
      - cluster.name=es_cluster
      - bootstrap.memory_lock=true
      - http.cors.enabled=true
      - "http.cors.allow-origin=*"
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "discovery.zen.ping.unicast.hosts=esmaster1,esmaster2"
      - "node.master=false"
      - "node.data=true"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata4:/home/ruan/workspace/docker/elasticsearch/data

volumes:
  esdata1:
    driver: local
  esdata2:
    driver: local
  esdata3:
    driver: local
  esdata4:
    driver: local

如果主节点死亡,第二个节点将接管成为主节点并处理集群。如果您想使用 Kibana(或任何其他可视化工具),您还应该向集群添加其他 Elasticsearch 实例来处理该连接。这个新实例不必是主节点、数据节点或摄取节点。

我希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-05
    • 2022-01-10
    • 1970-01-01
    相关资源
    最近更新 更多