如何防止碎片从热节点重新定位到热节点或冷节点?

nvbavucw  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(2)|浏览(525)

我有什么:
elasticsearch(7.7.0)群集(amazon/opendistro for elas)ticsearch:1.8.0 docker 图像)
一个主节点
一个协调节点
两个数据节点 node.attr.data=hot 一个数据节点 node.attr.data=warm 我想要什么:防止碎片从热数据节点分配和重新定位到热(将来是冷)数据节点。
我尝试了什么:
我已经把 "index.routing.allocation.require.data": "hot" 对于所有索引模板,因此新创建的索引将不会分配给热数据节点以外的任何节点。这个很好用。
无论如何,我不能限制碎片从热节点重新定位到热节点。目前我正在使用 "cluster.routing.allocation.exclude._ip" : "warm data node ip" 防止从热数据节点重新定位到热数据节点。但我是否可以将ilm与此筛选器一起使用?
我也试过

PUT _cluster/settings
{
  "transient": {
    "cluster.routing.allocation.awareness.attributes": ["data"]
  }
}

PUT _cluster/settings
{
  "transient": {
    "cluster.routing.allocation.awareness.force.data.values": ["hot"]
  }
}

然后取下 "cluster.routing.allocation.exclude._ip" 过滤器。碎片正在从热数据节点重新定位到热数据节点。我错过了什么?

7rfyedvj

7rfyedvj1#

我认为您错过了ilm策略中的分配意识。你的暖相定义应该有

"allocate": {
   "require": {
        "data": "warm"
    }
}

把它从你的定义中删除,它会解决你的问题。
对我来说,完全理解ilm的最佳文章是https://www.elastic.co/blog/implementing-hot-warm-cold-in-elasticsearch-with-index-lifecycle-management 您将在“针对冷热环境优化ilm策略”中找到一个完整的示例

bmvo0sr5

bmvo0sr52#

我必须更新我的旧incides的设置:

PUT my-index/_settings
{
  "index.routing.allocation.require.data": "hot"
}

如果索引模板被更新,则在某个索引模板下的索引将不会被更新。

相关问题