将索引分配过滤器迁移到节点角色

edit

将索引分配过滤器迁移到节点角色

edit

如果您目前使用自定义节点属性并 基于属性的分配过滤器来 通过 数据层移动索引, 在 热-温-冷架构中, 我们建议您切换到使用内置节点角色 和自动 数据层分配。 使用节点角色使 ILM 能够自动 在数据层之间移动索引。

虽然我们建议依赖自动数据层分配来管理您的数据在热-温-冷架构中,您仍然可以使用基于属性的分配过滤器来控制分片分配以达到其他目的。

Elasticsearch Service 和 Elastic Cloud Enterprise 可以自动执行迁移。对于自管理的部署,您需要手动更新配置、ILM 策略和索引以切换到节点角色。

在 Elasticsearch Service 或 Elastic Cloud Enterprise 上自动迁移到节点角色

edit

如果您正在使用来自Elasticsearch服务或Elastic Cloud Enterprise默认部署模板的节点属性,当您:

  • 升级到 Elasticsearch 7.10 或更高版本
  • 部署温、冷或冻结数据层
  • 启用自动扩展

这些操作会自动更新您的集群配置和ILM策略以使用节点角色。此外,升级到7.14或更高版本时,每当对您的部署应用任何配置更改时,ILM策略都会自动更新。

如果您使用自定义索引模板,请在自动迁移完成后检查它们,并删除任何基于属性的分配过滤器

在自动迁移后,您不需要采取任何进一步的行动。 以下手动步骤仅在您不允许自动迁移或拥有自托管部署时才需要。

迁移到自托管部署中的节点角色

edit

切换到使用节点角色:

将数据节点分配到数据层

edit

为每个数据节点配置适当的角色,将其分配到一个或多个数据层:data_hotdata_contentdata_warmdata_colddata_frozen。节点还可以具有其他角色。默认情况下,新节点配置了所有角色。

当您向 Elasticsearch Service 部署添加数据层时, 一个或多个节点会自动配置相应的角色。 要显式更改 Elasticsearch Service 部署中节点的角色,请使用 更新部署 API。 将节点的 node_type 配置替换为适当的 node_roles。 例如,以下配置将节点添加到热层和内容层,并启用它作为摄取节点、远程节点和转换节点。

"node_roles": [
  "data_hot",
  "data_content",
  "ingest",
  "remote_cluster_client",
  "transform"
],

如果您直接管理自己的集群,请在elasticsearch.yml中为每个节点配置适当的角色。例如,以下设置将节点配置为热层和内容层中的仅数据节点。

node.roles [ data_hot, data_content ]

从现有ILM策略中移除自定义分配设置

edit

更新每个生命周期阶段的分配操作,以移除基于属性的分配设置。ILM 将在每个阶段注入一个 迁移操作,以自动将索引过渡到数据层。

如果分配操作未设置副本数量,请完全删除分配操作。(空的分配操作是无效的。)

策略必须为架构中的每个数据层指定相应的阶段。每个阶段都必须存在,以便ILM可以注入迁移操作,使索引在数据层之间移动。如果你不需要执行任何其他操作,该阶段可以为空。例如,如果你为一个部署启用了温数据层和冷数据层,你的策略必须包括热、温、冷阶段。

停止在新索引上设置自定义热属性

edit

当您创建一个数据流时,它的第一个后备索引现在会自动分配给data_hot节点。同样,当您直接创建一个索引时,它会自动分配给data_content节点。

在 Elasticsearch Service 部署中,移除设置所有索引的热分片分配属性的 cloud-hot-warm-allocation-0 索引模板。

DELETE _template/.cloud-hot-warm-allocation-0

如果您使用的是自定义索引模板,请更新它以删除您用于将新索引导入热层的基于属性的分配过滤器

为了完全避免在混合层级偏好和自定义属性路由设置时引发的问题,我们还建议更新所有遗留的、可组合的和组件模板,以删除它们配置中的基于属性的分配过滤器

为现有索引设置层级偏好

edit

ILM 自动通过可用的数据层过渡托管索引,通过自动注入一个 迁移操作 到每个阶段。

要使 ILM 能够将 现有 托管索引 通过数据层移动,请更新索引设置为:

  1. 通过将其设置为null来移除自定义分配过滤器。
  2. 设置层级偏好

例如,如果你的旧模板将data属性设置为hot 以将分片分配到热层,请将data属性设置为null 并将_tier_preference设置为data_hot

PUT my-index/_settings
{
  "index.routing.allocation.require.data": null,
  "index.routing.allocation.include._tier_preference": "data_hot"
}

对于已经过渡出热阶段的索引,层级偏好应包括适当的回退层级,以确保在首选层级不可用时,索引分片能够被分配。例如,指定热层级作为已经处于温阶段的索引的回退层级。

PUT my-index/_settings
{
  "index.routing.allocation.require.data": null,
  "index.routing.allocation.include._tier_preference": "data_warm,data_hot"
}

如果索引已经在冷阶段,请包含冷、温、热层。

对于同时配置了_tier_preferencerequire.data的索引,但_tier_preference已过时(即节点属性配置比配置的_tier_preference更“冷”),迁移需要移除require.data属性,并将_tier_preference更新为反映正确的分层。

例如,对于具有以下路由配置的索引:

{
  "index.routing.allocation.require.data": "warm",
  "index.routing.allocation.include._tier_preference": "data_hot"
}

路由配置应固定如下:

PUT my-index/_settings
{
  "index.routing.allocation.require.data": null,
  "index.routing.allocation.include._tier_preference": "data_warm,data_hot"
}

这种情况可能发生在一个系统中,当默认使用数据层时,例如,当使用节点属性的ILM策略被恢复并将受管理的索引从热阶段过渡到温阶段时。在这种情况下,节点属性配置指示了索引应分配到的正确层。