Elasticsearch集群中的一个节点永久重载

时间:2017-02-28 07:25:44

标签: elasticsearch sharding

我有一个包含11个节点的Elasticsearch集群。其中五个是数据节点,另外一个是我添加和检索文档的客户端节点。

我正在使用标准的Elasticsearch配置。每个索引都有5个分片和副本。在集群中,我有55个索引,并且有大约150GB的数据。

群集非常慢。使用Kopf插件,我可以看到每个节点的统计数据。在那里,我可以看到一个单个数据节点(不是主节点)永久重载。堆,磁盘,CPU都可以,但负载几乎每次都是100%。我注意到,每个分片都是主分片,而所有其他数据节点都有主分片和副本。当我关闭该节点然后再次打开时,另一个数据节点也会出现同样的问题。

我不知道为什么以及如何解决这个问题。我认为客户端节点和主节点均匀分配请求?为什么总是有一个数据节点过载?

1 个答案:

答案 0 :(得分:1)

尝试以下设置:

<强> cluster.routing.rebalance.enable

启用或禁用特定种类分片的重新平衡:

    all - (default) Allows shard balancing for all kinds of shards.
    primaries - Allows shard balancing only for primary shards.
    replicas - Allows shard balancing only for replica shards.
    none - No shard balancing of any kind are allowed for any indices. 

<强> cluster.routing.allocation.allow_rebalance

指定何时允许分片重新平衡:

    always - Always allow rebalancing.
    indices_primaries_active - Only when all primaries in the cluster are allocated.
    indices_all_active - (default) Only when all shards (primaries and replicas) in the cluster are allocated. 

<强> cluster.routing.allocation.cluster_concurrent_rebalance

允许控制群集范围内允许的并发分片重新平衡数量。

Defaults to 2

应用所需设置的样本卷曲:

curl -XPUT <elasticsearchserver>:9200/_cluster/settings -d '{ 
  "transient" : {
    "cluster.routing.rebalance.enable" : "all"
  }
}

如果您希望设置在重新启动后保持不变,则可以将transient替换为persistent