首页 > 解决方案 > Elasticsearch:跨数据路径传播文件

问题描述

有很多文档讨论了集群中跨节点的分片分布,但很少讨论节点内多个数据路径的实际使用情况。很明显,一个分片不能在不同的路径上分割,但是Elasticsearch(比如 7.6)何时以及如何决定创建或将一个分片从一个数据路径移动到另一个数据路径(跨节点,或在同一节点内)?

据记载,当磁盘达到给定的水印(例如 90%)时,系统决定重新分配分片。但这是否包括在同一节点内重新分配它们的可能性,例如,将其移动到新的空磁盘?

例如,是否可以告诉 Elastic 在创建新索引时使用给定的数据路径?

是否有任何明确的文件详细解释这些行为?

谢谢。

标签: elasticsearch

解决方案


答案因版本而异,将来可能会发生变化。此答案适用于撰写本文时所有已发布和受支持的版本,即版本 6.5 至 7.6。这些版本都不会在节点内的磁盘之间移动分片。他们都在第一次将每个分片分配给节点时为每个分片选择一条路径,这就是它所在的位置。如果磁盘达到高水位线,则 Elasticsearch 会将最完整数据路径上的一个或多个分片重新定位到不同的节点上,这些节点将为分片选择具有足够空间的数据路径,并且通常会更喜欢空路径。

虽然这听起来不太理想,但在实践中这并不是什么大问题。您可以将多个磁盘组合在一起(例如,使用 RAID 0 或 LVM)到单个逻辑卷中,从而避免节点内数据路径之间的平衡问题。或者,如果您真的想更好地控制分片到单个磁盘的分配,您可以在每个主机上运行多个较小的节点,每个节点只使用一个磁盘。您甚至可以结合使用这些方法。


推荐阅读