首页 > 解决方案 > 弹性节点不共享数据?

问题描述

嗨,目前我正在使用 docker compose 来启动两个弹性容器实例并在它们之间建立网络。

在其中一个弹性容器中,我正在执行批量 api 请求以将一些文档插入索引。

但是问题是当我分别登录到每个弹性容器并在其中执行 curl 命令时显示结果而其他不显示。

Prasanths-MacBook-Air:api kannan$ docker ps
CONTAINER ID        IMAGE                                                 COMMAND                  CREATED             STATUS              PORTS                              NAMES
798c06a9907b        docker_elasticsearch2                                 "/docker-entrypoint.…"   8 minutes ago       Up 8 minutes        9200/tcp, 9300/tcp                 elasticsearch2
336e58a46217        docker.elastic.co/elasticsearch/elasticsearch:6.6.1   "/usr/local/bin/dock…"   8 minutes ago       Up 8 minutes        0.0.0.0:9200->9200/tcp, 9300/tcp   elasticsearch

现在登录尝试 curl 命令以列出每个容器上的每个索引

Prasanths-MacBook-Air:api kannan$ docker exec -it 798c06a9907b curl '127.0.0.1:9200/_cat/indices?v&pretty'
health status index uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   test  z27UBFUWTfC3E-xFFDhLOQ   5   1          0            0      1.2kb          1.2kb
yellow open   cars  R5mvqQk2RkuspNQ6o02E4g   5   1        833            0    491.6kb        491.6kb

现在尝试以下

Prasanths-MacBook-Air:api kannan$ docker exec -it 336e58a46217 curl '127.0.0.1:9200/_cat/indices?v&pretty'
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size

这是我的 docker compose 文件名为 elasticsearch.yml 使用以下命令

docker-compose -f src/main/docker/elasticsearch.yml up

这是文件 elasticsearch.yml 的内容

version: '2.0'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.6.1
    container_name: elasticsearch
    environment:
      - cluster.name=docker-cluster
      - 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:
    build:
        context: .
        dockerfile: elasticsearch/elasticsearch-Migration.Dockerfile
    container_name: elasticsearch2
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "discovery.zen.ping.unicast.hosts=elasticsearch"
      - network.host=0.0.0.0
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata2:/usr/share/elasticsearch/data
    networks:
      - esnet

volumes:
  esdata1:
    driver: local
  esdata2:
    driver: local

networks:
  esnet:

知道为什么当我在容器 elasticsearch 上执行 curl 命令时索引没有正确列出并且它适用于容器 elasticsearch2

太感谢了

标签: elasticsearchdocker-compose

解决方案


试试这个 yml 文件,希望这会工作

version: '2.0'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.6.1
    container_name: elasticsearch
    environment:
      - node.master=true
      - cluster.name=docker-cluster
      - 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:
    build:
        context: .
        dockerfile: elasticsearch/elasticsearch-Migration.Dockerfile
    container_name: elasticsearch2
    environment:
      - node.master=false
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "discovery.zen.ping.unicast.hosts=elasticsearch"
      - network.host=0.0.0.0
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata2:/usr/share/elasticsearch/data
    networks:
      - esnet

volumes:
  esdata1:
    driver: local
  esdata2:
    driver: local

networks:
  esnet:

推荐阅读