ElasticSearch(五)集群架构

一、ES集群架构

        特性:高可用 可扩展

        优势:提高系统可用性,部分节点停止服务整个集群不受影响

                   存储可水平扩展

ElasticSearch(五)集群架构_第1张图片

概念

集群
        一个集群可以有一个或者多个节点
        不同的集群通过不同的名字来区分,默认名字“elasticsearch“
        通过配置文件修改,或者在命令行中 -E cluster.name=es-cluster进行设定


二、节点


        节点是一个Elasticsearch的实例
        本质上就是一个JAVA进程
        一台机器上可以运行多个Elasticsearch进程,但是生产环境一
        般建议一台机器上只运
        行一个Elasticsearch实例
        每一个节点都有名字,通过配置文件配置,或者启动时候 -E node.name=node1指定
        每一个节点在启动之后,会分配一个UID,保存在data目录下


1 节点类型


        Master Node:主节点
        Master eligible nodes:可以参与选举的合格节点
        Data Node:数据节点
        Coordinating Node:协调节点(客户端的请求落在协调节点上,转发给相应节点)
        其他节点

ElasticSearch(五)集群架构_第2张图片

2 Master eligible nodes和Master Node(可以选举成为master节点,相当于主节点的从节点)
        每个节点启动后,默认就是一个Master eligible节点,可以设置 node.master: false禁止;
        Master-eligible节点可以参加选主流程,成为Master节点;
        当第一个节点启动时候,它会将自己选举成Master节点;
        每个节点上都保存了集群的状态,只有Master节点才能修改集群的状态信息;
        集群状态(Cluster State) ,维护了一个集群中,必要的信息所有的节点信息
        所有的索引和其相关的Mapping与Setting信息,分片的路由信息;
3 Master Node的职责
        处理创建,删除索引等请求,负责索引的创建与删除
        决定分片被分配到哪个节点
        维护并且更新Cluster State
4 Master Node的最佳实践
        Master节点非常重要,在部署上需要考虑解决单点的问题
        为一个集群设置多个Master节点,每个节点只承担Master 的单一角色

5 选主的过程
        互相Ping对方,Node ld 低的会成为被选举的节点,其他节点会加入集群,但是不承担                     Master节点的角色。一旦发现被选中的主节点丢失,就会选举出新的Master节点

6 Data Node & Coordinating Node
Data Node

        可以保存数据的节点,叫做Data Node,负责保存分片数据。在数据扩展上起到了至关重要的作用;
节点启动后,默认就是数据节点。可以设置node.data: false
禁止由Master Node决定如何把分片分发到数据节点上
通过增加数据节点可以解决数据水平扩展和解决数据单点问题


Coordinating Node
负责接受Client的请求, 将请求分发到合适的节点,最终把结果汇集到一起
每个节点默认都起到了Coordinating Node的职责


其他节点类型
Hot & Warm Node

不同硬件配置 的Data Node,用来实现Hot & Warm架构,降
低集群部署的成本
Ingest Node
数据前置处理转换节点,支持pipeline管道设置,可以使用
ingest对数据进行过滤、转换等操作
Machine Learning Node
负责跑机器学习的Job,用来做异常检测
Tribe Node
Tribe Node连接到不同的Elasticsearch集群,并且支持将这
些集群当成一个单独的集群处理
ElasticSearch(五)集群架构_第3张图片

读写分离架构

ElasticSearch(五)集群架构_第4张图片

三、分片

主分片:用于解决数据水平扩展的问题,通过分片将数据分配到不同的节点上,一个分片是一个运行的lucene实例,主分片数在索引创建时指定,后续不允许修改;

副本分片:用于解决数据高可用问题,副本分片是主分片的copy。副本分片数可调整,增加副本数可以提高服务的可用性(读取可以从副本和主分片读取,提高读取的吞吐量)

分片的设定
对于生产环境中分片的设定,需要提前做好容量规划

分片数设置过小导致后续无法增加节点实现水平扩展
单个分片的数据量太大,导致数据重新分配耗时


分片数设置过大,7.0 开始,默认主分片设置成1,解决了over-sharding(分片过度)的问题
影响搜索结果的相关性打分,影响统计结果的准确性
单个节点上过多的分片,会导致资源浪费,同时也会影响性能

主分片的数量不允许更改,由于分片路由的时候是取的hash取模的结果;


生产环境集群配置建议
单一职责:master eligible nodes:负责集群的状态管理
                  使用低配置cpu Ram和磁盘


                  date nodes:负责数据存储及处理客户请求
                  使用高配置cpu Ram和磁盘

                  ingest nodes:负责处理数据
                  使用高配置cpu Ram和低配置磁盘

                  coordinating nodes:请求抓饭数据处理
                  使用低高cpu Ram和低配置磁盘

节点扩展方案

当磁盘容量无法满足需求时,可以增加数据节点;
磁盘读写压力大时,增加数据节点
当系统中有大量的复杂查询及聚合时候,增加Coordinating节点,增加查询的性能

es分片路由的规则
shard_num = hash(_routing) % num_primary_shards
_routing字段的取值,默认是_id字段,可以自定义。

大数据量索引可根据不同情况对索引进行拆分进行优化查询;

你可能感兴趣的:(elasticsearch,架构,java,搜索引擎)