我有一个包含11个节点的Elasticsearch集群。其中五个是数据节点,另外一个是我添加和检索文档的客户端节点。
我正在使用标准的Elasticsearch配置。每个索引都有5个分片和副本。在集群中,我有55个索引,并且有大约150GB的数据。
群集非常慢。使用Kopf插件,我可以看到每个节点的统计数据。在那里,我可以看到一个单个数据节点(不是主节点)永久重载。堆,磁盘,CPU都可以,但负载几乎每次都是100%。我注意到,每个分片都是主分片,而所有其他数据节点都有主分片和副本。当我关闭该节点然后再次打开时,另一个数据节点也会出现同样的问题。
我不知道为什么以及如何解决这个问题。我认为客户端节点和主节点均匀分配请求?为什么总是有一个数据节点过载?
答案 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
。