如果 Elasticsearch 不能跨分区平衡分片,为啥 Elasticsearch 允许您在 .yml 文件中指定多个磁盘分区?
Posted
技术标签:
【中文标题】如果 Elasticsearch 不能跨分区平衡分片,为啥 Elasticsearch 允许您在 .yml 文件中指定多个磁盘分区?【英文标题】:Why does Elasticsearch allow you to specify multiple disk partitions in the .yml file if it doesn't balance shards across partitions?如果 Elasticsearch 不能跨分区平衡分片,为什么 Elasticsearch 允许您在 .yml 文件中指定多个磁盘分区? 【发布时间】:2021-05-04 19:47:20 【问题描述】:这是我之前在here 提出的问题的后续。
我有一个包含三个数据节点和一个头节点的集群。每个数据节点上的硬盘驱动器具有三个分区:/data1
、/data2
和/data3
。我在头节点上配置了我的elasticsearch.yml
,如下所示:
path.data: /data1/elasticsearch, /data2/elasticsearch_2, /data3/elasticsearch_3
我现有的索引存储在每个节点上的/data1/elasticsearch
中。但是,当我禁用复制并尝试为我的新索引加载数据时,我触发了low watermark cluster setting
; /data1
没有足够的空间。
查看我找到的 Elasticsearch 文档this warning:
Elasticsearch 不会跨节点的数据路径平衡分片。单个路径中的高磁盘使用率可能会触发整个节点的高磁盘使用水印。如果触发,Elasticsearch 不会向节点添加分片,即使节点的其他路径有可用磁盘空间。如果您需要额外的磁盘空间,我们建议您添加一个新节点而不是额外的数据路径。
所以我的问题是:如果 Elasticsearch 不将分片分配到节点上的下一个空路径,为什么它允许您指定多个数据存储路径?
【问题讨论】:
【参考方案1】:将不再允许使用多个数据路径的选项,此功能存在一些问题,例如您提到的问题以及 kibana 在同一节点上使用多个磁盘时可能显示错误的可用空间这一事实。
根据github issue,计划在版本 7.13 中弃用多数据路径的使用并在版本 8.0 中删除。
根据同样的问题:
(...) 多数据路径是一项成本非常高的功能(设计中存在许多错误和缺陷),用户相对较少,最重要的是,它是 Elasticsearch 之外标准的更好替代方案。
【讨论】:
以上是关于如果 Elasticsearch 不能跨分区平衡分片,为啥 Elasticsearch 允许您在 .yml 文件中指定多个磁盘分区?的主要内容,如果未能解决你的问题,请参考以下文章
windows安装ElasticSearch的Head可视化插件简单使用并解决不能连接ElasticSearch服务跨域问题
Elasticsearch:跨集群搜索 Cross-cluster search(CCS)及安全