每个节点的分片总数已达到上限
edit每个节点的分片总数已达到上限
editElasticsearch 试图利用所有可用资源,通过在集群节点之间分布数据(索引分片)来实现。
用户可能希望通过配置
cluster.routing.allocation.total_shards_per_node
系统设置来影响此数据分布,以限制系统中单个节点上可以托管的分片数量,无论索引如何。
各种限制单个节点上可以托管多少分片的配置可能导致分片未分配,因为集群没有足够的节点来满足配置。
为了修复这个问题,请按照以下步骤操作:
为了使分片被分配,我们需要增加集群中节点上可以共存的分片数量。
我们将通过检查系统范围的cluster.routing.allocation.total_shards_per_node
集群设置并增加配置的值来实现这一点。
使用 Kibana
- 登录到 Elastic Cloud 控制台。
-
在Elasticsearch Service面板上,点击您的部署名称。
如果您的部署名称被禁用,您的 Kibana 实例可能不健康,在这种情况下,请与 Elastic 支持 联系。如果您的部署不包含 Kibana,您需要做的就是 首先启用它。
-
打开您的部署的侧边导航菜单(位于左上角的Elastic标志下方),然后转到开发工具 > 控制台。
-
检查
cluster.routing.allocation.total_shards_per_node集群设置:GET /_cluster/settings?flat_settings
响应将会是这样的:
-
增加 一个节点上可以分配的分片总数量的值到一个更高的值:
为了将分片分配,您可以向Elasticsearch集群添加更多节点,并将索引的目标层级节点角色分配给新节点。
要检查索引的目标分配层级,请使用获取索引设置
API 来检索 index.routing.allocation.include._tier_preference 设置的配置值:
GET /my-index-000001/_settings/index.routing.allocation.include._tier_preference?flat_settings
响应将会是这样的:
{
"my-index-000001": {
"settings": {
"index.routing.allocation.include._tier_preference": "data_warm,data_hot"
}
}
}
|
表示此索引允许分配的数据层节点角色的逗号分隔列表,列表中的第一个是优先级最高的层,即索引的目标层。
例如,在此示例中,层偏好是 |
或者,如果不希望向Elasticsearch集群添加更多节点,可以检查系统范围的cluster.routing.allocation.total_shards_per_node
集群设置并增加配置的值: