Elasticsearch(ES)集群节点角色

Elasticsearch集群

    • 一、介绍
    • 二、分布式系统的优点
      • 2.1 高可用
      • 2.2 水平可扩展
    • 三、集群角色
      • 3.1 节点
        • 3.1.1 Master Node(主节点)
        • 3.1.2 Data Node(数据节点)
        • 3.1.3 Ingest Node(预处理节点)
        • 3.1.4 Coordinating Node(协调节点)

一、介绍

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎。找到与查询最匹配的 10 个文档并不困难。但如果面对的是十亿行日志,又该如何解读呢?下面介绍Elasticsearch分布式系统的相关设计(经过查阅官方文档,自己整理和归纳,真实可靠,值得大家收藏学习)

二、分布式系统的优点

2.1 高可用

服务高可用: 当master节点出现故障后会从集群中重新选出master节点
数据高可用: 数据会有副本存储到其他节点,不会丢失数据

2.2 水平可扩展

请求量提升 / 数据量的不断增长可以通过水平扩展集群的节点(增加集群的数据节点来分担压力)

三、集群角色

3.1 节点

Elasticsearch节点是一个 Elasticsearch 的实例(es是java写的,所以本质就是一个java进程)
任何时候启动一个 Elasticsearch 实例,都在启动一个node。连接节点的集合称为集群

3.1.1 Master Node(主节点)

节点启动后默认就是一个 Master eligible (有资格成为主节点的)节点。可以设置 node.master: false 禁止。当第一个节点启动的时候,它会将自己选举成master节点。
主要职责
    主节点负责轻量级集群范围的操作,例如创建或删除索引、跟踪哪些节点是集群的一部分以及决定将哪些分片分配给哪些节点。拥有一个稳定的主节点对于集群健康很重要。专用主节点(节点只有一个角色master)让它们专注于管理集群,保证集群的稳定性。因为索引数据和搜索查询等操作会占用大量的cpu,内存,io资源(数据节点的职责)
通过下面配置创建一个主节点:

node.master: true 
node.data: false 
node.ingest:false

3.1.2 Data Node(数据节点)

  1. 数据节点保存包含已编入索引的文档的分片
  2. 数据节点处理数据相关的操作,如 CRUD、搜索和聚合。这些操作是 I/O 密集型、内存密集型和 CPU 密集型的,会占用大量的cpu、内存和io。监控这些资源并在它们过载时添加更多数据节点很重要(也就是水平扩展)。
  3. 不参与选举,只会存储数据
  4. 专用数据节点的主要好处是主角色和数据角色的分离,保障集群的稳定性

通过下面配置创建一个数据节点:

node.master: false
node.data: true
node.ingest: false

3.1.3 Ingest Node(预处理节点)

  1. 在实际的 indexing(索引)发生之前使用 ingest node 来预处理 documents(文档)。
  2. 这种预处理发生在 intercepts bulk(拦取批量索引) index requests(索引请求)的 ingest node 上,应用 transformations(转换),然后将文档传回 index(索引)或者 bulk APIs。
  3. 可以在任何节点上启用 ingest,甚至使用专门的 ingest nodes。默认情况下在所有的节点上启用 ingest。在 elasticsearch.xml 文件中配置如下 :
node.master: false
node.data: false
node.ingest: true

3.1.4 Coordinating Node(协调节点)

  1. 将请求转发给保存数据的数据节点,每个数据节点执行请求后,将结果返回给协调节点,协调节点负责收集汇总,将每个节点的结果合并为单个全局结果。
  2. 每个节点默认都起到了Coordinating Node的职责。

通过下面配置创建一个数据节点:

node.master: false
node.data: false
node.ingest: false

其他节点类型不太常用,所以这里不过多介绍。

你可能感兴趣的:(Elasticsearch,elasticsearch,搜索引擎,big,data)