我有一个大型ES群集。我通常得到磁盘警报,因为我们将磁盘警报策略设置为90%[我的ES高水印设置为87%]。当我查看分片分配时,我看到节点从高磁盘使用节点移出到某个随机节点,这可以快速解决我的磁盘问题,但它通常不会将该分片移动到磁盘使用率最低的节点。是否可以强制弹性搜索将分片移动到磁盘使用率最低的节点,而不是在达到高水位时将其移动到随机节点?
答案 0 :(得分:1)
实际上ES不会使用考虑a lot of factors的随机决策:
正如您所看到的,有很多因素,并且没有低磁盘空间检查器。因此,唯一的解决方案是编写your own plugin,其中org.elasticsearch.plugins.ClusterPlugin
扩展server_sem
,这将提供您的决策。但我认为这不是一个好主意,因为它与ES分配决策模式的主要设计/理念相矛盾:
此策略允许您禁止并旨在最大限度地在群集中进行选择。这就是为什么从外面看起来像一个随机的移动。对于大型和长期集群来说,这是一个很好的策略。
引入任何类型的偏差都可能导致生产中的灾难性问题。让我们假设您有基于磁盘空间的决策程序,并且一台服务器具有令人难以置信的大型硬盘 - 过了一段时间,所有分片都将在此机器上分配。要解决这个问题,有必要考虑更重要的资源,如CPU,内存,网络,分片数量等。此外,我们需要为每个因素提出一个度量和权重。