1.3. 可伸缩性:集群、节点、分片

未匹配的标注

Elasticsearch的宗旨在于始终可用,并根据你的需求进行扩展。它是一个天然的分布式系统,你可以将服务器(节点)添加到集群以增加容量,Elasticsearch分配数据和查询会自动负载到所有可用节点,不需要大幅修改你的应用程序,Elasticsearch知道如何平衡多节点集群以提高扩展性和高可用性。节点越多,性能越好。

Elasticsearch是如何工作的?实际上,Elasticsearch索引只是一个或多个物理碎片的逻辑分组,其中每个碎片都是一个独立的索引。通过将索引中的文档分布在多个碎片上,并将这些碎片分布到多个节点上,Elasticsearch就可以实现冗余功能,这即可以防止硬件故障,又可以在添加节点到集群时,增加查询能力。随着集群的增长(或收缩),Elasticsearch会自动迁移碎片以重新平衡集群。

分片有两种类型:主分片和副本分片。索引中的每个文档都有一个主分片,副本分片是主分片的副本,副本分片可提供数据的冗余副本,以防止硬件故障并增加处理读取请求(如搜索或检索文档)的能力。

创建索引时,索引中主分片的数量是固定的,但副本分片数是随时可更改的,其更改操作不会中断索引或者查询。

性能取决于配置

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

查询大量的小分片会使每个分片处理速度更快,但是更多的查询意味着需要更多的开销,因此查询较少数量的大片可能会更快点。简而言之就是:视情况而定。

初始依据:

旨在将每个分片大小保持在几GB到几十GB之间。对于基于时间的数据的用例,通常会看到20G~40G之间的分片。
为避免庞大的分片问题,一个节点可以容纳的分片数跟可用空间成正比。通常情况下,每1GB的分片数已经给少于20个。

最好的方式就是通过自己不断的数据测试,去得到最佳的配置方式。

容灾

出于性能的考虑,集群中的节点要在同一网络中。在不同网络的节点会让集群平衡节点时消耗时间会过长。但是高可用架构要求你避免所有鸡蛋都放在一个篮子里。如果一个位置发生了重大事故,则另外一个位置的服务器需要能够无痕接管。
如何无缝?答案是跨集群复制(CCR)
CCR提供一种方法,可以自动将索引从主集群同步到可用作热备份的辅助远程集群。如果主集群发生了故障,则从集群可以接管。你可以使用CCR创建从集群,以接管地理位置近的用户,提供读取请求服务。
跨集群复制是主动+被动。主集群是主动索引,并处理所有写入请求,然后复制到从节点,从集群不做索引操作,只做接收。

运维

与任何企业系统一样,你都需要工具去守护、管理和监控 Elasticsearch集群。
Kibana集成了Elasticsearch中的安全,监控和管理功能,你可以使用它作为管理Elasticsearch集群的应用。它还有数据汇总和索引管理等功能用来帮助你管理这段时间内的数据。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
上一篇 下一篇
CrazyZard
贡献者:5
讨论数量: 0
发起讨论 只看当前版本


暂无话题~