一尘不染

低磁盘水印[??%]超出

elasticsearch

我在开发机(单个笔记本)中使用Elasticsearch 1.4.4。一切都设置为默认设置,因为我从未更改任何设置。

启动它时,通常会收到以下消息:

[2015-10-27 09:38:31,588][INFO ][node                     ] [Milan] version[1.4.4], pid[33932], build[c88f77f/2015-02-19T13:05:36Z]
[2015-10-27 09:38:31,588][INFO ][node                     ] [Milan] initializing ...
[2015-10-27 09:38:31,592][INFO ][plugins                  ] [Milan] loaded [], sites []
[2015-10-27 09:38:34,665][INFO ][node                     ] [Milan] initialized
[2015-10-27 09:38:34,665][INFO ][node                     ] [Milan] starting ...
[2015-10-27 09:38:34,849][INFO ][transport                ] [Milan] bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/10.81.1.108:9300]}
[2015-10-27 09:38:35,022][INFO ][discovery                ] [Milan] elasticsearch/DZqnmWIZRpapZY_TPkkMBw
[2015-10-27 09:38:38,787][INFO ][cluster.service          ] [Milan] new_master [Milan][DZqnmWIZRpapZY_TPkkMBw][THINKANDACT1301][inet[/10.81.1.108:9300]], reason: zen-disco-join (elected_as_master)
[2015-10-27 09:38:38,908][INFO ][http                     ] [Milan] bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/10.81.1.108:9200]}
[2015-10-27 09:38:38,908][INFO ][node                     ] [Milan] started
[2015-10-27 09:38:39,220][INFO ][gateway                  ] [Milan] recovered [4] indices into cluster_state
[2015-10-27 09:39:08,801][INFO ][cluster.routing.allocation.decider] [Milan] low disk watermark [15%] exceeded on [DZqnmWIZRpapZY_TPkkMBw][Milan] free: 58.6gb[12.6%], replicas will not be assigned to this node
[2015-10-27 09:39:38,798][INFO ][cluster.routing.allocation.decider] [Milan] low disk watermark [15%] exceeded on [DZqnmWIZRpapZY_TPkkMBw][Milan] free: 58.6gb[12.6%], replicas will not be assigned to this node
[2015-10-27 09:40:08,801][INFO ][cluster.routing.allocation.decider] [Milan] low disk watermark [15%] exceeded on [DZqnmWIZRpapZY_TPkkMBw][Milan] free: 58.6gb[12.6%], replicas will not be assigned to this node
....

我看到很多这样的“磁盘低水印…超出…”消息。我的情况出了什么问题?如何解决?谢谢!

更新

在这篇文章之前,我在SO中搜索了相关的文章。我发现一个与“高水印…”有关的情况,在这种情况下,磁盘空间不足。就我而言,我检查
了磁盘上是否还有56GB。

更新

根据Andrei Stefan的输入,我需要更改设置。我应该通过以下方式做到这一点:

curl -XPUT localhost:9200/_cluster/settings -d '{
    "transient" : {
        "cluster.routing.allocation.disk.threshold_enabled" : false
    }
}'

还是我可以编辑任何设置文件来设置它?


阅读 253

收藏
2020-06-22

共1个答案

一尘不染

如果您喜欢我有很多磁盘,则可以调整水印设置并使用字节值而不是百分比:

注意!您不能在这些设置中混合使用百分比值和字节值。要么全部设置为百分比值,要么全部设置为字节值。

设置cluster.routing.allocation.disk.watermark.low

控制磁盘使用率的低水位线。它默认为85%,这意味着一旦节点使用了超过85%的磁盘,ES便不会将新的分片分配给节点。如果可用空间少于配置的数量,也可以将其设置为绝对字节值(例如500mb),以防止ES分配分片。

设置cluster.routing.allocation.disk.watermark.high

控制高水位线。默认为90%,这意味着如果节点磁盘使用率上升到90%以上,ES将尝试将分片重新定位到另一个节点。一旦少于节点上配置的可用空间量,也可以将其设置为绝对字节值(类似于低水位标记)以重定位分片。

设置 ::cluster.routing.allocation.disk.watermark.flood_stage

控制洪水阶段的水印。它的默认值为95%,这意味着Elasticsearch在每个节点上分配了一个或多个分片的每个索引上强制执行一个只读索引块(index.blocks.read_only_allow_delete),该节点上至少有一个磁盘超过了泛洪阶段。这是防止节点耗尽磁盘空间的最后手段。一旦有足够的磁盘空间可用于继续进行索引操作,则必须手动释放索引块。

https://www.elastic.co/guide/zh-CN/elasticsearch/reference/current/disk-
allocator.html

请注意:

百分比值是指已使用的磁盘空间,而字节值是指可用磁盘空间。这可能会造成混淆,因为它颠倒了高和低的含义。例如,将低水印设置为10gb,将高水印设置为5gb是有意义的,但反之则不行。

在我的5TB磁盘上设置:

# /etc/elasticsearch/elasticsearch.yml
cluster.routing.allocation.disk.threshold_enabled: true
cluster.routing.allocation.disk.watermark.flood_stage: 5gb
cluster.routing.allocation.disk.watermark.low: 30gb
cluster.routing.allocation.disk.watermark.high: 20gb

编辑:添加cluster.routing.allocation.disk.watermark.flood_stage为其他答案。

2020-06-22