java - Elasticsearch集群上的数据量

标签 java elasticsearch

我有一个简单的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/

相关文章:

Ubuntu 15.10 elasticsearch 2.3 无法连接到本地主机端口 9200 : Connection refused

ruby-on-rails - Elasticsearch错误

elasticsearch - 由于Netty-Client主机名解析,AWS工作人员无法通信

apache-spark - Elasticsearch Spark 解析问题 - 无法解析字段 [Y] 的值 [X]

java - 使用引用库 Eclipse 进行调试/编译

java - 将多行日志文件分解为事件流或迭代器

java - 解析日期字符串时抛出多个异常

java - 无法让谷歌教程工作

elasticsearch - 我可以使用Kibana解析消息字段吗

java - 如何从 DetachedCriteria 获取 hql 字符串