我有一个简单的elasticsearch集群,我在文档中看到主节点必须访问弹性数据卷。
但事实是,如果两个节点使用相同的数据量,就会发生此错误: Caused by: java.lang.IllegalStateException: failed to acquire node locks, attempts [[/usr/share/elasticsearch/data/escluster]] 带有锁 id [0];也许这些位置不可写,或者在没有增加 [node.max_local_storage_nodes] 的情况下启动了多个节点(原为 [1])?
我尝试了很多配置,但找不到如何在不同节点之间共享卷。
Docker 组合
version: '2'
services:
esmaster:
build: elasticsearch/
volumes:
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
volumes_from:
- esdata
environment:
cluster.name: "escluster"
node.data: "false"
http.enabled: "false"
node.master: "true"
ES_JAVA_OPTS: "-Xmx2g -Xms2g"
discovery.zen.ping.unicast.hosts: esmaster
cap_add:
- IPC_LOCK
networks:
- elk
esclient:
build: elasticsearch/
volumes:
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
ports:
- "9200"
- "9300"
environment:
cluster.name: "escluster"
node.data: "false"
http.enabled: "true"
node.master: "false"
ES_JAVA_OPTS: "-Xmx2g -Xms2g"
discovery.zen.ping.unicast.hosts: esclient
cap_add:
- IPC_LOCK
networks:
- elk
depends_on:
- esmaster
esdata:
build: elasticsearch/
volumes:
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- ./elasticsearch/data:/usr/share/elasticsearch/data
environment:
cluster.name: "escluster"
node.data: "true"
http.enabled: "false"
node.master: "false"
ES_JAVA_OPTS: "-Xmx2g -Xms2g"
discovery.zen.ping.unicast.hosts: esdata
cap_add:
- IPC_LOCK
networks:
- elk
logstash:
build: logstash/
volumes:
- ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml
- ./logstash/pipeline:/usr/share/logstash/pipeline
ports:
- "5000:5000"
environment:
LS_JAVA_OPTS: "-Xmx6g -Xms6g"
networks:
- elk
depends_on:
- esmaster
kibana:
build: kibana/
volumes:
- ./kibana/config/:/usr/share/kibana/config
ports:
- "5601:5601"
networks:
- elk
depends_on:
- esmaster
networks:
elk:
driver: bridge
最佳答案
您不想共享您的数据目录。每个 Elasticsearch 实例都应该使用它自己的数据目录。
您可以在 https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-cli-run-prod-mode 部分找到一个可用的 docker-compose 文件。 — 两个节点,每个节点都使用自己的 Docker 命名卷。
关于java - Elasticsearch集群上的数据量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46651742/