可扩展性和弹性:集群、节点和分片

编辑

可扩展性和弹性:集群、节点和分片编辑

Elasticsearch 旨在始终可用,并随着您的需求进行扩展。它通过其分布式特性来实现这一点。您可以向集群添加服务器(节点)以提高容量,Elasticsearch 会自动将您的数据和查询负载分布到所有可用的节点上。无需彻底改造您的应用程序,Elasticsearch 知道如何平衡多节点集群以提供可扩展性和高可用性。节点越多越好。

这是如何运作的?在幕后,Elasticsearch 索引实际上只是一个或多个物理分片的逻辑分组,其中每个分片实际上都是一个自包含的索引。通过将索引中的文档分布到多个分片,并将这些分片分布到多个节点,Elasticsearch 可以确保冗余,这既可以防止硬件故障,又可以随着节点添加到集群中而提高查询容量。随着集群的增长(或缩小),Elasticsearch 会自动迁移分片以重新平衡集群。

分片有两种类型:主分片和副本分片。索引中的每个文档都属于一个主分片。副本分片是主分片的副本。副本提供数据的冗余副本,以防止硬件故障并提高容量以服务读取请求(如搜索或检索文档)。

索引中的主分片数量在创建索引时固定,但副本分片数量可以在任何时候更改,而不会中断索引或查询操作。

这取决于…​编辑

关于分片大小和为索引配置的主分片数量,存在许多性能方面的考虑因素和权衡。分片越多,维护这些索引的开销就越大。分片大小越大,在 Elasticsearch 需要重新平衡集群时移动分片所需的时间就越长。

查询大量的小分片会使每个分片的处理速度更快,但查询越多,开销就越大,因此查询较少数量的大分片可能更快。简而言之…​这取决于。

作为起点

  • 目标是使平均分片大小保持在几 GB 到几十 GB 之间。对于具有基于时间的数据的用例,通常会看到 20GB 到 40GB 范围内的分片。
  • 避免出现大量分片的问题。节点可以容纳的分片数量与可用堆空间成正比。一般来说,每个 GB 堆空间的分片数量应小于 20。

确定用例的最佳配置的最佳方法是通过 使用您自己的数据和查询进行测试

灾难发生时编辑

集群的节点需要彼此之间建立良好可靠的连接。为了提供更好的连接,您通常将节点共同放置在同一个数据中心或附近的其他数据中心。但是,为了保持高可用性,您还需要避免任何单点故障。如果某个位置发生重大故障,另一个位置的服务器需要能够接管。答案是?跨集群复制 (CCR)。

CCR 提供了一种方法,可以将索引从您的主集群自动同步到可以充当热备份的辅助远程集群。如果主集群发生故障,辅助集群可以接管。您还可以使用 CCR 创建辅助集群,以在靠近用户的地理位置为用户提供读取请求。

跨集群复制是主动-被动模式。主集群上的索引是活动的领导者索引,并处理所有写入请求。复制到辅助集群的索引是只读的跟随者。

维护和管理编辑

与任何企业系统一样,您需要工具来保护、管理和监控您的 Elasticsearch 集群。集成到 Elasticsearch 中的安全、监控和管理功能使您能够使用 Kibana 作为管理集群的控制中心。诸如 降采样索引生命周期管理 之类的功能可以帮助您随着时间的推移智能地管理数据。