01序言
Elasticsearch经过多年发展,集群模式已经非常成熟,涵盖的技术点非常多,对于使用者来说,掌握并熟练运用至关重要。那么Elasticsearch有多少种集群模式呢?当前适合哪种集群模式?本文不涉及实战操作,仅限集群原理范围探讨,基于当前最新版本7.6.X。
02集群模式
Elasticsearch节点设计支持多种角色,这个是实现集群最重要的前提,节点角色各司其职,也可以任意组合,职责重合。
ES节点角色类型
节点角色说明:
Master,集群管理Voting,投票选举节点Data,数据节点Ingest,数据编辑节点Coordinate,协调节点Machine Learning,集群学习节点
以下展开各种集群模式
1.单节点(入门)
单节点集群模式
单节点模式默认开启所有节点特性,具备一个集群所有节点角色,可以认为是一个进程内部的集群。Elasticsearch在默认情况下,不用任何牌配置也可以运行,这也是它设计的精妙之处,相比其它很多数据产品集群配置,如Mongodb,简化了很多,起步入门容易。
2.基本高可用(初级)
集群基本高可用模式
Elasticsearch集群要达到基本高可用,一般要至少启动3个节点,3个节点互相连接,单个节点包括所有角色,其中任意节点停机集群依然可用。为什么要至少3个节点?因为集群选举算法奇数法则。
3.数据与管理分离(中级)
集群数据节点与管理节点分离
Elasticserach管理节点职责是管理集群元数据、索引信息、节点信息等,自身不设计数据存储与查询,资源消耗低;相反数据节点是集群存储与查询的执行节点。管理节点与数据节点分离,各司其职,任意数据节点故障或者全部数据节点故障,集群仍可用;管理节点一般至少启动3个,任意节点停机,集群仍正常运行。
4.数据与协调分离(高级)
集群数据节点与管理节点分离
Elasticsearch内部执行查询或者更新操作时,需要路由,默认所有节点都具备此职能,特别是大的查询时,协调节点需要分发查询命令到各个数据节点,查询后的数据需要在协调节点合并排序,这样原有数据节点代价很大,所以分离职责,详细技术原理可以观看腾讯课堂《Elastic技术原理:数据查询》,里面详细讲解了Elastic执行查询的过程。
5.协调读写分离(高级)
集群实现读写分离
Elasticsearch设置读写分离指的是在协调节点上,不是数据节点上,集群大量的查询需要消耗协调节点很大的内存与CPU合并结果,同时集群大量的数据写入会阻塞协调节点,所以在协调节点上做读写分离很少必要,也很简单,由集群设计搭建时规划好即可。
6.数据节点标签(高级)
集群数据节点差异化分组
Elasticsearch给数据节点标签,目的是分离索引数据的分布,在一个集群规模中等以上,索引数据用途多种多样,对于数据节点的资源需求不一样,数据节点的配置可以差异化,有的数据节点配置高做实时数据查询,有的数据节点配置低做历史数据查询,有的数据节点做专门做索引重建。Elasticsearch集群部署时需要考虑基础硬件条件,集群规模越来越大,需要多个数据中心,多个网络服务、多个服务器机架,多个交换机等组成,索引数据的分布与这些基础硬件条件都密切相关。
7.主副分片分离(高级)
Elasticsearch集群规模大了之后得考虑集群容灾,若某个机房出现故障,则可以迅速切换到另外的容灾机房。
8.跨集群操作(高级)
集群索引数据主分片与副本分片分离
Elasticsearch单个集群规模不能无限增长,理论上可以,实际很危险,通过创建多个分集群分解,集群直接建立直接连接,客户端可以通过一个代理集群访问任意集群,包括代理集群本身数据。Elasticsearch集群支持异地容灾,采用的是跨集群复制的机制,与同一集群主分片副本分片分离是不同的概念,2个集群完全是独立部署运行,仅数据同步复制。
9.跨集群版本操作(高级)
Elasticsearch跨集群版本操作
Elasticsearch版本更新很快,已知问题修复很快,新特性新功能推出很快,一日不学,如隔三秋。有的集群数据重要性很高,稳定第一,不能随意升级,有的业务场景刚好需要最新版本新功能新特性支持。
03结语
经验总结
Elasticsearch集群模式种类挺多,每种集群模式都有它的应用场景以及解决实际的问题,每种集群模式之间也可以轻易转换。所以说ES玩的好,下班下得早。
内容来源
内容来源于笔者工作中运用多种技术栈解决实际场景需求,得出的一些实战经验与总结思考,提供后来者借鉴参考,请勿抄袭,内容原创,转载请注明。
https://baijiahao.baidu.com/s?id=1663609942544356335&wfr=spider&for=pc
最新评论: