【问题标题】:high disk watermark [90%] exceeded [...] shards will be relocated away from this node超过高磁盘水印 [90%] [...] 分片将从该节点重新定位
【发布时间】:2021-08-17 10:26:37
【问题描述】:

我正在尝试从本地机器上的 docker 容器运行多节点 Elasticsearch。下面是我的 docker compose 文件:

version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.13.0
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - C:/Docker/Elasticsearch/data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - esnet
  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.13.0
    container_name: es02
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - C:/Docker/Elasticsearch/data02:/usr/share/elasticsearch/data
    networks:
      - esnet
  es03:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.13.0
    container_name: es03
    environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - C:/Docker/Elasticsearch/data03:/usr/share/elasticsearch/data
    networks:
      - esnet
  kibana:
    image: docker.elastic.co/kibana/kibana:7.13.0
    container_name: kibana
    environment:
      - "ELASTICSEARCH_HOSTS=http://es01:9200"
    ports:
      - '5601:5601'
    networks:
      - esnet

networks:
  esnet:
    driver: bridge

当我运行 docker compose 命令时,出现以下错误:

es01      | {"type": "server", "timestamp": "2021-05-29T12:08:16,409Z", "level": "WARN", "component": "o.e.c.r.a.DiskThresholdMonitor", "cluster.name": "es-docker-cluster", "node.name": "es01", "message": "high disk watermark [90%] exceeded on [6UfoOc1-QaCrrRlhLngSkA][es02][/usr/share/elasticsearch/data/nodes/0] free: 17.3gb[7.3%], shards will be relocated away from this node; currently relocating away shards totalling [0] bytes; the node is expected to continue to exceed the high 
disk watermark when these relocations are complete", "cluster.uuid": "dpml3lE2Q0i7NRxFaQcGkQ", "node.id": "F_delTaoRfCASAlmu_Yd-Q"  }

下面是我的docker资源截图:

来自http://127.0.0.1:9200/的docker服务器消息下方

{
  "name" : "es01",
  "cluster_name" : "es-docker-cluster",
  "cluster_uuid" : "dpml3lE2Q0i7NRxFaQcGkQ",
  "version" : {
    "number" : "7.13.0",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "5ca8591c6fcdb1260ce95b08a8e023559635c6f3",
    "build_date" : "2021-05-19T22:22:26.081971330Z",
    "build_snapshot" : false,
    "lucene_version" : "8.8.2",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

但是,我的 Kibana 无法正常工作。 :(

【问题讨论】:

  • 在您的 Docker 组合中,您将数据位置挂载到本地磁盘 (C:/Docker/Elasticsearch/...),所以我怀疑您那里的磁盘空间不足。根据错误消息 (free: 17.3gb[7.3%]),您使用的磁盘大小大致为 ~236 GB,而您只剩下 ~17.3 GB 可用空间。可以查一下吗?
  • @zsltg,是的,你是对的,在我不得不清理一些磁盘空间之后,遇到了另一个与虚拟内存相关的问题。我通过使用stackoverflow.com/a/66547784/596495 答案解决了这个问题。

标签: docker elasticsearch


【解决方案1】:

在评论部分,我已经提到了我的问题,只是为了将来参考,我在这里解释一下:

  1. 高磁盘水印 [90%] 超出 [...] 分片将从该节点移出: 每当您遇到系统中可用的磁盘空间不足时,就会出现此错误。因此,为了解决这个问题,我不得不清理一些数据以腾出更多磁盘空间,而我当前的可用空间为 40GB,运行良好。
  2. 修复磁盘空间后,我解决了另一个问题,即“最大虚拟内存区域 vm.max_map_count [65530] 太低,至少增加到 [262144]”
    所以这里我们需要增加Docker的虚拟内存。首先在windows中,我们需要先去Docker终端,然后再执行增加虚拟内存的命令。

如果你的 Docker 使用 wsl 子系统,那么

  1. 打开电源外壳
  2. 运行:wsl -d docker-desktop,这将带到 Docker 终端。
  3. 运行:sysctl -w vm.max_map_count=262144

重新启动 Docker,一切就绪。

注意:这里已经回答了增加虚拟内存:https://stackoverflow.com/a/66547784/596495

【讨论】:

    猜你喜欢
    • 2020-11-09
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 2023-01-15
    • 1970-01-01
    • 2021-12-04
    • 2021-02-12
    相关资源
    最近更新 更多