首页 > 解决方案 > 使用 Docker 跨多台机器设置 Elasticsearch 集群

问题描述

我目前尝试使用 docker-compose 来启动多个弹性搜索容器,但这些容器都部署在我的本地机器上。使用 Docker 将多个容器部署到多台不同机器的过程是什么?

我知道 docker swarm 存在,但我不确定如何将它与 docker compose 一起使用,以便我启动多个弹性搜索节点,这些节点位于我启动的不同虚拟机中。

到目前为止,我知道在elasticsearch.yml配置文件中我需要指定虚拟机地址, discovery.zen.ping.unicast.hosts: ["vm_ip1:9200", "vm_ip2:9200"]但我不确定如何将此更改强制执行到创建的 docker 容器上。为了启动容器,我使用了弹性搜索文档中显示的示例 docker-compose.yml 文件

version: '2.2'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
    container_name: elasticsearch
    environment:
      - cluster.name=elasticsearch
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata1:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - esnet
  elasticsearch2:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
    container_name: elasticsearch2
    environment:
      - cluster.name=elasticsearchr
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "discovery.zen.ping.unicast.hosts=elasticsearch"
      - "index.number_of_shards: 2"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata2:/usr/share/elasticsearch/data
    networks:

如果需要更多详细信息,请告诉我,谢谢!

标签: dockerelasticsearchdocker-composedocker-swarm

解决方案


推荐阅读