ES集群分布式详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES集群分布式详解相关的知识,希望对你有一定的参考价值。
参考技术A ES集群中各节点角色功能简介本博客根据ES 7.15 ,介绍ES中各节点角色功能。集群节点角色可以在配置文件elasticsearch.yml中通过node.roles配置,如果配置了节点角色,那么该节点将只会执行配置的角色功能;如果不配置,该节点将会执行以下角色功能:
1、如果私自配置节点信息,请确保集群配置有master角色的节点和data角色的节点
2、如果有较大的机器学习(machine learning)任务或转换(transform)任务,建议将候选的主节点(Master-eligible node)与数据节点(data node)、机器学习节点(machine learning node)和转换节点(transforming node)分开是很有必要的。
3、每个节点都默认为协调节点(Coordinating node),如果node.roles设置为[]那么该节点将只执行协调节点功能
ES集群
(1)Cluster:代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。
(2)Shards:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。
(3)replicas:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。
(4)Recovery:代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。
(5)ES为什么要实现集群:在单台ES服务器节点上,随着业务量的发展索引文件慢慢增多,会影响到效率和内存存储问题等。ES集群,可以将单个索引的分片到多个不同分布式物理机器上存储,从而可以实现高可用、容错性等。ES集群中索引可能由多个分片构成,并且每个分片可以拥有多个副本。通过将一个单独的索引分为多个分片,我们可以处理不能在一个单一的服务器上面运行的大型索引,简单的说就是索引的大小过大,导致效率问题。不能运行的原因可能是内存也可能是存储。由于每个分片可以有多个副本,通过将副本分配到多个服务器,可以提高查询的负载能力。
(6)es如何解决高并发:ES是一个分布式全文检索框架,隐藏了复杂的处理机制,内部使用 分片机制、集群发现、分片负载均衡请求路由。 Shards 分片:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。Replicas分片:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。
5、ES集群脑裂
6、ES集群的分布式存储
· 如新增一个文档流程 文档-->协调节点(hash运算)-->mater-->决策路由到对应主分片如node3节点-->同步副本分片到node2节点上-->返回结构到
协调节点coordinating node-->再传至matster
6、故障转移
· 停掉master
· cerebro界面集群状态瞬间变黄了
· 这是之前master节点的分片开始转移至剩余的两个节点,集群剩余两个节点,且保证主副分片不在同一个几点
· 重新启动故障节点,集群再次恢复三个节点,分片自动转移过去,但是此时它已不是master节点
以上是关于ES集群分布式详解的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch 分布式搜索引擎 -- 搭建ES集群 集群状态监控(cerebro) 创建集群索引库 集群脑裂问题 集群职责划分 集群分布式存储 集群分布式查询 集群故障转移