ES介绍 《三》
可扩展性和复原力:集群、节点和分片
Elasticsearch的建立是为了始终可用,并根据你的需求进行扩展。它是通过分布式的性质来实现的。你可以在集群中添加服务器(节点)来增加容量,Elasticsearch会自动将你的数据和查询负载分配到所有的可用节点上。不需要彻底改造你的应用程序,Elasticsearch知道如何平衡多节点集群以提供规模和高可用性。节点越多,越好。
这是怎么做到的?从表面上看,Elasticsearch索引实际上只是一个或多个物理分片的逻辑分组,每个分片实际上是一个独立的索引。通过将索引中的文档分布在多个分片上,并将这些分片分布在多个节点上,Elasticsearch可以确保冗余,这既可以防止硬件故障,又可以在集群中增加节点的查询能力。随着集群的增长(或缩减),Elasticsearch会自动迁移分片,以重新平衡集群。
有两种类型的分片:原始分片和复制分片。索引中的每个文档都属于一个主分片。复制分片是主分片的一个副本。复制提供了数据的冗余副本,以防止硬件故障,并增加了为搜索或检索文档等读取请求服务的能力。
索引中的主碎片的数量在创建索引的时候是固定的,但是复制碎片的数量可以在任何时候改变,而不会中断索引或查询操作。
这取决于...
关于分片大小和为索引配置的主分片数量,有一些性能上的考虑和权衡。分片越多,维护这些索引的开销就越大。分片大小越大,当Elasticsearch需要重新平衡集群时,移动分片的时间就越长。
查询大量的小分片会使每个分片的处理速度更快,但更多的查询意味着更多的开销,所以查询数量较少的大分片可能会更快。简而言之......这取决于。
作为一个起点。
目标是将平均分片大小保持在几GB到几十GB之间。对于基于时间的数据的用例,通常看到分片在20GB到40GB之间。
避免千亿分片的问题。一个节点可以容纳的分片数量与可用的堆空间成正比。作为一般规则,每GB堆空间的分片数量应少于20个。
为你的使用情况确定最佳配置的最好方法是通过用你自己的数据和查询进行测试。
在发生灾难的情况下
一个集群的节点需要相互之间有良好的、可靠的连接。为了提供更好的连接,你通常把节点放在同一个数据中心或附近的数据中心。然而,为了保持高可用性,你也需要避免任何单点故障。在一个地方发生重大故障的情况下,另一个地方的服务器需要能够接替。答案是什么?跨集群复制(CCR)。
CCR提供了一种方法,可以将索引从主集群自动同步到一个可以作为热备份的次要远程集群。如果主集群发生故障,次要集群可以接管。你也可以使用CCR来创建二级集群,以便为你的用户提供地理上接近的读取请求。
跨集群复制是主动-被动的。主集群上的索引是主动领导索引,处理所有的写请求。复制到二级集群的索引是只读的跟随者。
护理和喂养
与任何企业系统一样,你需要工具来保护、管理和监控你的Elasticsearch集群。集成在Elasticsearch中的安全、监控和管理功能使你能够使用Kibana作为控制中心来管理集群。数据滚动和索引生命周期管理等功能可以帮助你智能地管理你的数据。 使用www.DeepL.com/Translator翻译(免费版)