ElasticSearch -限制节点上的主碎片和副本碎片计数

fd3cxomn  于 2022-11-02  发布在  ElasticSearch
关注(0)|答案(2)|浏览(264)

我有ElasticSearch 7.16.2集群运行三个节点(2个主节点,1个投票节点)。一个索引有两个主碎片和两个副本,在重新启动一个节点时,两个主碎片都移动到一个节点。如何限制一个节点中的索引,使每个节点都有一个主碎片和一个副本。

w8ntj3qf

w8ntj3qf1#

您可以使用索引级碎片分配设置来实现这一点,它可能不是那么简单,而且设置有点复杂,当集群中的节点和索引不断变化时,可能会导致进一步的不平衡
为了避免在节点重新启动时发生的问题,您必须在启动Elasticsearch集群中的节点之前禁用碎片分配和碎片重新平衡。

禁用分配的命令

PUT /_cluster/settings
{
    "cluster": {
        "routing.allocation.enable": false
    }
}

禁用重新平衡的命令

PUT /_cluster/settings
{
    "cluster": {
        "routing.rebalance.enable": false
    }
}

除此之外,您可以使用reroute API手动将碎片移动到Elasticsearch中的节点,以修复当前的碎片分配。

wyyhbhjk

wyyhbhjk2#

配置是index.routing.allocation.total_shards_per_node。但是你有一个问题。首先我假设你有三个data node。(如果你没有,增加数据节点。)
问题是您总共有4个主碎片和副本碎片,并且一个节点必须为自身分配两个碎片。因此,您不能将index.routing.allocation.total_shards_per_node设置为1。至少它必须为2,并且您的问题未解决。
配置是动态:https://www.elastic.co/guide/en/elasticsearch/reference/master/increase-shard-limit.html
您还可以为群集设置cluster.routing.allocation.total_shards_per_node config。

相关问题