弹性设计

编辑

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

弹性集群的大小是有限制的。所有 Elasticsearch 集群都需要以下组件才能正常运行

一个弹性集群需要每个必需集群组件的冗余。这意味着一个弹性集群必须具有以下组件

  • 至少三个有资格成为主节点的节点
  • 每个角色至少两个节点
  • 每个分片至少两个副本(一个主分片和一个或多个副本,除非索引是可搜索快照索引

一个弹性集群需要三个有资格成为主节点的节点,这样如果其中一个节点发生故障,剩余的两个节点仍然可以形成多数,并可以成功进行选举。

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

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

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

根据您的需求和预算,Elasticsearch 集群可以由单个节点、数百个节点或介于两者之间的任意数量的节点组成。在设计较小的集群时,您通常应专注于使其能够弹性应对单节点故障。较大集群的设计者还必须考虑多个节点同时发生故障的情况。以下页面提供了一些关于构建不同大小的弹性集群的建议