【发布时间】:2021-06-27 11:56:29
【问题描述】:
我有一个 3 个节点的集群和一个由 3 个主节点组成的索引。在分配这些分片时,我希望将它们中的每一个都分配给不同的节点,因此每个节点都恰好拥有我索引的一个主分片。
有什么办法可以强制执行这种行为吗?
有关信息,我需要这个,因为我正在对我的数据进行批量索引,并且我的每个主索引都占了我可用磁盘空间的 60%(在每个节点上)。因此,如果将主节点分配给同一个节点,它最终会填满所有可用的磁盘空间,并且节点最终会宕机。
更新到 VAL 答案:
我实际上不能使用第一个设置,因为我确实使用副本运行。正如我所指定的,一个主分片占用了 AVAILABLE 磁盘空间的 60%。但是一旦主索引索引完成,我可以通过删除旧数据来释放空间,只有这样我才有足够的磁盘空间来打开副本。
对不起,如果我错了,但从您所做的描述来看,我认为您实际上是指 cluster.routing.allocation.disk.watermark.high 设置?它实际上可能是一个很好的解决方案,但文档没有足够清楚地描述该过程。如果我正在对同一节点上的两个主索引进行批量索引并且达到 85% 的阈值,会发生什么情况? Elasticsearch 会立即重新分配其中一个主节点并继续在另一个节点上进行批量索引,还是会等待两个主节点的大部分完成,然后再尝试将其中一个主节点重新分配给另一个节点?如果第二个选项是正确的,那么它将不起作用,因为我的磁盘空间在两个主索引都被索引时已经达到 100%。
【问题讨论】:
标签: elasticsearch