我有一个大型ES集群。我通常会收到磁盘警报,因为我们将磁盘警报策略设置为90%[我的ES高水位标记设置为87%]。当我查看分片分配时,我看到节点从高磁盘使用率节点移到某个随机节点,这可以快速解决我的磁盘问题,但通常不会将该分片移至磁盘使用率最低的节点。当达到高水位标记时,是否可以强制Elasticsearch将碎片移动到磁盘使用率最低的节点,而不是将其移动到随机节点?
最佳答案
实际上,ES不使用考虑a lot of factors的随机决策:
如果分片分配已重试N次而没有
成功
版本兼容。
如您所见,有很多因素,并且没有低磁盘空间检查程序。因此,唯一的解决方案是编写对
org.elasticsearch.plugins.ClusterPlugin
进行扩展的your own plugin,它将为您提供决策者。但是我认为这不是一个好主意,因为它与ES分配决定者模式的主要设计/思想相矛盾:该策略允许您禁止使用,旨在最大程度地提高集群中选择的自由度。这就是为什么从外面看起来像是随机移动的原因。对于大型且长期存在的集群来说,这是一个不错的策略。
引入任何类型的偏差都可能导致生产中的灾难性问题。假设您有基于磁盘空间的决策程序,并且一台服务器具有令人难以置信的大硬盘-不久之后,所有分片都将分配到该计算机上。为了解决这个问题,有必要考虑更多重要资源,例如CPU,内存,网络,分片数量等。此外,我们需要针对每个因素提出一个度量标准和权重。
关于elasticsearch - Elasticsearch如何在分片运动中选择目标节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46616540/