通过执行 GET /_cluster/allocation/explain 查看当前索引分配详情
"deciders": [{
"decider": "data_tier",
"decision": "NO",
"explanation": "index has a preference for tiers [data_hot,data_warm] and node does not meet the required [data_hot] tier"
}
"deciders": [{
"decider": "filter",
"decision": "NO",
"explanation": "node does not match index setting [index.routing.allocation.require] filters [temperature:hot ]"
}
如果 decider 中返回 "data_tier" 或 "filter" 时,需要先确认该索引配置的 require 属性
例如当前索引配置属性为 hot ,排查集群是否存在 hot 节点,如果确认存在 hot 节点,排查 hot 节点磁盘利用率是否到达水位线导致无法分配
1.如果集群没有 require 配置的属性节点,可以在控制台新增当前属性节点,或者修改索引当前属性为已存在节点属性
PUT {index}/_settings
{
"routing": {
"allocation": {
"require": {
"temperature": null
}
}
}
}
index.routing.allocation.include._tier_preference的属性值是一个字符串,多个tier_preference之间通过逗号 ',' 隔开,分片分配的优先级是从前往后依次降低。例如当前索引配置的属性值为:"data_hot,data_warm,data_content",该属性的具体分配逻辑为:当集群中有data_hot节点时,则直接将分片分配在data_hot节点上,当没有data_hot节点时,则检查是否有data_warm节点,如果有,则在data_warm节点上分配,没有则在data_content节点上分配。
PUT {index}/_settings
{
"index": {
"routing": {
"allocation": {
"include": {
"_tier_preference": "data_hot,data_warm,data_content"
}
}
}
}
}
2.如果是由于当前属性节点磁盘利用率到达水位,可以清理些历史数据后再尝试分配
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。