elasticsearch - 弹性节点不共享数据?
问题描述
嗨,目前我正在使用 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
太感谢了
解决方案
试试这个 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:
推荐阅读
- r - 如何找到满足条件的组的第一个元素
- livy - 使用 Apache Livy 的 Java 应用程序
- mysql - mysql中有超过2500个表
- ffmpeg - 通过 ffserver 和 ffmpeg 在 RaspberryPi 上进行流式传输
- javascript - KnockoutJS 稍后更新
- javascript - 推荐使用 apollo 存储的哪种方式,读取片段/读取查询或使用组件中的 graphql hoc 连接查询或传递道具?
- java - java.net.ConnectException:无法连接到 overpass-api.de/178.63.48.217:80
- javascript - Angular 表单 - 如何在表单无效时禁用 ngSubmit 事件?
- haskell - Haskell Servant 和 MTL 应用风格
- python - python中这个简单的sqlite select语句代码产生这个绑定错误有什么问题?