如何防止碎片从热节点迁移到热节点或冷节点?

时间:2020-10-29 07:57:04

标签: elasticsearch elasticsearch-7 elasticsearch-opendistro

我有什么

  • Elasticsearch(7.7.0)集群(amazon / opendistro-for-elasticsearch: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"过滤器。碎片还是从热数据节点移到热数据节点。我想念什么?

2 个答案:

答案 0 :(得分:0)

我认为您错过了ILM政策中的分配意识。 您的暖相定义应该具有

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

从您的定义中删除它,它应该可以解决您的问题。

为我全面了解ILM的最佳文章是 https://www.elastic.co/blog/implementing-hot-warm-cold-in-elasticsearch-with-index-lifecycle-management 您可以在“优化ILM策略以实现冷热模式”中找到完整的示例

答案 1 :(得分:0)

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

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

如果索引模板已更新,则某些索引模板下的索引将不会更新。

相关问题