Elasticsearch 分片重新分配
Elasticsearch shard re-allocation
据我了解,elasticsearch 中的分片通过内部机制分布在所有数据节点中。
但是,我有以下观察 -
- 如果我们没有做任何索引并且添加了一个新的数据节点,分片会分布在两个节点之间。
- 但是,如果已经完成一些索引,然后添加一个新节点
那么碎片不会自动分发。我必须移动
他们通过集群重新路由手动。
这是预期的行为吗?
手头的问题是我一开始只有一个节点、5 个分片并且没有副本。该索引包含大约 100 GB 的数据。现在我想添加一个新的数据节点。
我的问题 -
- elasticsearch 在决定跨节点移动分片之前是否需要一些时间?
- 对于已经存在索引数据的集群,手动集群重新路由是移动分片的唯一方法吗?
注意 - 群集重新路由工作正常。但是,这些问题将帮助我规划未来。
TIA
如果您需要在添加节点后立即分发分片,则必须手动执行重新路由。即使您不 运行 手动进行,过一段时间后 elasticsearch 也会均匀地分配您的分片。
关于分片重新平衡,您可以使用一些配置选项
在index settings
"index.routing.allocation.total_shards_per_node": 1
在`集群设置中
"transient":{
"cluster.routing.allocation.cluster_concurrent_rebalance": 1
}
配置参数本身解释了它们的用途,您可以修改值并查看它们如何为您工作。
据我了解,elasticsearch 中的分片通过内部机制分布在所有数据节点中。
但是,我有以下观察 -
- 如果我们没有做任何索引并且添加了一个新的数据节点,分片会分布在两个节点之间。
- 但是,如果已经完成一些索引,然后添加一个新节点 那么碎片不会自动分发。我必须移动 他们通过集群重新路由手动。
这是预期的行为吗?
手头的问题是我一开始只有一个节点、5 个分片并且没有副本。该索引包含大约 100 GB 的数据。现在我想添加一个新的数据节点。
我的问题 -
- elasticsearch 在决定跨节点移动分片之前是否需要一些时间?
- 对于已经存在索引数据的集群,手动集群重新路由是移动分片的唯一方法吗?
注意 - 群集重新路由工作正常。但是,这些问题将帮助我规划未来。
TIA
如果您需要在添加节点后立即分发分片,则必须手动执行重新路由。即使您不 运行 手动进行,过一段时间后 elasticsearch 也会均匀地分配您的分片。
关于分片重新平衡,您可以使用一些配置选项
在index settings
"index.routing.allocation.total_shards_per_node": 1
在`集群设置中
"transient":{
"cluster.routing.allocation.cluster_concurrent_rebalance": 1
}
配置参数本身解释了它们的用途,您可以修改值并查看它们如何为您工作。