设计高可用性

编辑

像 Elasticsearch 这样的分布式系统旨在即使某些组件发生故障也能继续工作。只要有足够数量的良好连接的节点来接管其职责,如果某些节点不可用或断开连接,Elasticsearch 集群可以继续正常运行。

高可用性集群的规模是有下限的。所有 Elasticsearch 集群都需要以下组件才能正常运行:

高可用性集群需要为每个必需的集群组件提供冗余。这意味着高可用性集群必须具有以下组件:

  • 至少三个主节点候选节点
  • 每个角色至少两个节点
  • 每个分片至少两个副本(一个主分片和一个或多个副本,除非索引是 可搜索快照索引

高可用性集群需要三个主节点候选节点,这样如果其中一个节点发生故障,其余两个节点仍然可以构成多数并能够成功选举。

同样,每个角色的节点冗余意味着如果特定角色的节点发生故障,另一个节点可以承担其职责。

最后,高可用性集群应至少具有每个分片的两个副本。如果一个副本发生故障,则应该有另一个正常的副本接管。Elasticsearch 会自动在其余节点上重建任何失败的分片副本,以便在故障后将集群恢复到完全健康状态。

故障会暂时降低集群的总容量。此外,故障发生后,集群必须执行其他后台活动才能恢复其健康状态。您应该确保您的集群即使某些节点发生故障也能处理您的工作负载。

根据您的需求和预算,Elasticsearch 集群可以由单个节点、数百个节点或介于两者之间的任何数量的节点组成。设计较小的集群时,通常应重点使其能够承受单个节点故障。大型集群的设计者还必须考虑多个节点同时发生故障的情况。以下页面提供了一些构建各种规模的高可用性集群的建议: