elasticsearch - 无法为暖节点分配索引
问题描述
我有一个具有 11 个节点的弹性搜索集群版本 7.5.1:3 个主节点+ 2 个 htpp 节点+ 6 个数据节点+ 1 个暖节点。我设置了 node.attr.box_type: hot 和 node.attr.box_type: warm 节点。我现在正试图将旧索引移动到暖节点。但是,面临以下2个问题
一旦将暖节点添加到集群中,分片就开始在暖节点上分配,这本不应该发生。因此,我现在将“cluster.routing.allocation.exclude._ip”设置为暖节点 IP,以阻止分片分配给暖节点。
当我手动尝试将旧索引分配给暖节点时,会出现以下异常
{
"type" : "resource_already_exists_exception",
"reason" : "index [index_name/node_id] already exists",
"index_uuid" : "KIu4GGyUTEyRuQVR8BmYZQ",
"index" : "index_name"
}
有人可以帮我实现热温架构吗
解决方案
这个想法是在启动暖节点之前使用分片分配过滤将所有索引分配给热节点,如下所示:
PUT _all/_settings
{
"index.routing.allocation.require.box_type": "hot"
}
运行此命令时,ES 将确保所有索引分片都分配给热节点。
然后您可以启动您的暖节点,当它启动并运行时,您可以在要移动到暖节点的索引上运行以下命令:
PUT warm-index-name/_settings
{
"index.routing.allocation.require.box_type": "warm",
"index.number_of_replicas": 0
}
运行上述命令时,ES 会将所有主分片重新定位warm-index-name
到暖节点并删除所有副本分片,因为您只有一个暖节点,因此它们将处于未分配状态。
如果您使用的是 ES 7.10 或更高版本,则设置热/温架构的新方法是利用数据层,该数据层只需将特定角色分配给数据节点,例如data_hot
、等,data_warm
然后使用数据层分配过滤为了将分片路由到正确的节点。
推荐阅读
- excel - 不需要工作表范围参考?
- python - 如何根据任一列中的 2 个变量删除数据框中的行
- php - Laravel:删除除最新的 5 之外的所有内容
- python - 有没有一种快速的方法来替换仅包含 1 和 -1 的 np.array 元素
- asp.net-core-mvc - 在授权策略需求处理程序中访问 dbcontext
- ios - iOS 扩展是否有 IPA 文件?
- python - 在对象方法中使用 Numexpr
- sql - 调用函数的 MS Access 更新查询不返回任何内容/更新字段
- javascript - 如何将表单数据传递给 GAS
- rx-java2 - 为什么在 startWith 中使用 just 或 fromCallable 时 Single 的行为会有所不同?