分片分配、重新分配和恢复

编辑

每个 Elasticsearch 中的索引都分为一个或多个分片。索引中的每个文档都属于单个分片。

集群可以包含分片的多个副本。每个分片都有一个称为主分片的指定分片副本,以及零个或多个称为副本的非主分片副本。主分片副本充当所有索引操作的主要入口点。然后将主分片副本上的操作转发到其副本。

副本在集群中的节点上维护数据的冗余副本,以防止硬件故障并提高服务读取请求(如搜索或检索文档)的能力。如果主分片副本发生故障,则会将一个副本提升为主分片,并接管主分片的职责。

在正常运行过程中,Elasticsearch 会将分片副本分配到节点,跨节点重新分配分片副本以平衡集群或满足新的分配约束,并恢复分片以初始化新副本。在本主题中,您将了解这些操作的工作原理以及如何控制它们。

要了解如何优化集群中分片的数量和大小,请参阅调整分片大小。要了解读取和写入操作如何在分片和分片副本之间复制,请参阅读取和写入文档

分片分配

编辑

分片分配是将分片副本分配到节点的过程。这可能发生在初始恢复、副本分配、重新平衡、将节点添加到集群或从集群中移除节点时,或者更新影响分配的集群或索引设置时。

默认情况下,索引的主分片和副本分片副本可以分配到集群中的任何节点,并且可以重新分配以重新平衡集群。

调整分片分配设置

编辑

您可以使用以下设置控制分片副本的分配方式

  • 集群级分片分配设置:使用这些设置控制如何在整个集群中分配和平衡分片副本。例如,您可能希望将节点分配到可用区,或者阻止使用某些节点以便您可以执行维护。
  • 索引级分片分配设置:使用这些设置控制特定索引的分片副本的分配方式。例如,您可能希望将索引分配到特定数据层中的节点,或分配到具有特定属性的节点。

监控分片分配

编辑

如果分片副本未分配,则表示该分片副本未分配到集群中的任何节点。如果集群中没有足够的节点来分配分片副本,或者如果分片副本无法分配到满足分片分配过滤规则的任何节点,则可能会发生这种情况。当分片副本未分配时,您的集群被视为不健康,并返回黄色或红色集群健康状态。

您可以使用以下 API 监控分片分配

了解有关排查未分配分片副本和恢复集群健康的更多信息.

分片恢复

编辑

分片恢复是初始化分片副本的过程,例如从快照还原主分片或从主分片创建副本分片。当分片恢复完成后,恢复的分片即可用于搜索和索引。

恢复会在以下过程中自动发生

  • 首次创建索引时。
  • 当节点重新加入集群并使用其数据路径中保存的数据启动任何缺少的主分片副本时。
  • 从主分片创建新的副本分片副本。
  • 将分片副本重新分配到同一集群中的不同节点。
  • 一个快照恢复操作。
  • 一个克隆缩减拆分操作。

您可以使用恢复cat 恢复 API 确定分片恢复的原因。

调整分片恢复设置

编辑

要控制分片恢复的方式,例如恢复操作可以使用哪些资源以及应优先恢复哪些索引,您可以调整以下设置

分片恢复操作也遵循常规的分片分配设置。

监控分片恢复

编辑

您可以使用以下 API 监控分片分配

分片重新分配

编辑

分片重新分配是将分片副本从一个节点移动到另一个节点的过程。当节点加入或离开集群或集群正在重新平衡时,可能会发生这种情况。

当分片副本重新分配时,它会在目标节点上作为新的分片副本创建。当分片副本完全分配和恢复后,旧的分片副本将被删除。如果正在重新分配的分片副本为主分片,则在删除旧分片副本之前,新分片副本将标记为主分片。

调整分片重新分配设置

编辑

您可以控制如何以及何时重新分配分片副本。例如,您可以调整控制何时重新分配分片副本以平衡集群的重新平衡设置,或调整可以触发重新分配的基于磁盘的分片分配的高水位线。这些设置是集群级分片分配设置的一部分。

分片重新分配操作也遵循分片分配和恢复设置。