首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >干货 | Elasticsearch 8.X 节点角色划分深入详解

干货 | Elasticsearch 8.X 节点角色划分深入详解

作者头像
铭毅天下
发布于 2022-05-23 05:57:23
发布于 2022-05-23 05:57:23
5.4K01
代码可运行
举报
文章被收录于专栏:铭毅天下铭毅天下
运行总次数:1
代码可运行

0、问题引出

如果你的 Elasticsearch 集群是 7.9 之前的版本,在配置节点的时候,只会涉及节点类型的概念。我相信大家会对下面的概念比较熟悉:

  • 主节点
  • 数据节点
  • 协调节点
  • Ingest 节点
  • 冷热集群架构

......

Elasticsearch 7.9 版本引入了节点角色的概念。最近社群小伙伴关于节点角色提了不少问题,列举如下:

  • Q1:请问 Nginx + ES Coordinate + ES Master + ES Node 如何安装配置呢?是否安装一样,只需更改节点角色即可?
  • Q2:ES部署上,node.role都是mdi和 node.role区分m、d、i ,在部署上各有什么优势?更推荐用哪种?
  • Q3:有 ES 7.x 的集群角色如图,请问在写入海量数据时,应该连接什么角色的节点写入?专用协调节点还是数据节点?
  • Q4:role的配置,加上这些data_hot, data_warm, data_cold 和自定义的attr属性有区别吗?
  • Q5:谁能解释一下es的角色 data data_content data_hot/warm/cold他们直接的关系?
  • Q6:请问 ES 7.10 的 data_content 角色是个什么样的存在?和协调节点什么区别?

带着这些问题,我们开始 Elasticsearch 节点角色的解读。

1、什么是 Elasticsearch 节点角色?

Elasticsearch 7.9 之前的版本中的节点类型:数据节点、协调节点、候选主节点、ingest 节点,在 Elasticsearch 7.9 以及之后 版本中有了升级,升级了什么呢?

节点类型升级为节点角色(Node roles)。节点角色分的很细:数据节点角色、主节点角色、ingest节点角色、热节点角色等。

在 Elasticsearch 集群中,每个启动的 Elasticsearch 进程都可以叫做一个节点。集群中只有一个节点的时候,以 Elasticsearch 8.1.3 版本单节点集群为例,如果我们不手动设置节点角色,默认节点角色如下“红框”所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET _cat/nodes?v

# 返回结果
ip          heap.percent ram.percent cpu load_1m load_5m load_15m node.role   master name
172.21.0.14           70          96   0    0.03    0.03     0.05 cdfhilmrstw *      VM-0-14-centos

当集群中有多个节点角色的时候,就需要手动设定、配置节点的角色。

节点角色划分的目的在于:不同角色的节点各司其职,共同确保集群的功能的稳定和性能的高可用。

如上截图中的 “cdfhilmrstw”,我第一次看到这个串也是一脸懵逼,解释一下,你就“豁然开朗”。

角色缩写

英文释义

中文释义

c

cold node

冷数据节点

d

data node

数据节点

f

frozen node

冷冻数据节点

h

hot node

热数据节点

i

ingest node

数据预处理节点

l

machine learning node

机器学习节点

m

master-eligible node

候选主节点

r

remote cluster client node

远程节点

s

content node

内容数据节点

t

transform node

转换节点

v

voting-only node

仅投票节点

w

warm node

温数据节点

coordinating node only

仅协调节点

2、为什么引入节点角色?节点类型不香吗?

https://github.com/elastic/elasticsearch/pull/54998

一个新功能的诞生必然是基于早期版本存在bug或者至少用户体验差。

节点角色就是基于节点类型配置复杂和用户体验差应运而生的。

早期版本如果需要配置仅候选主节点类型,需要的配置(极端情况)如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node.data: false
node.ingest: false
node.remote_cluster_client: false
node.ml: false
node.master: true
node.transform: false
node.voting_only: false

这是非常繁琐的配置,类似我要说我自己是主节点,需要我先说明我不是数据节点、不是 Ingest 预处理节点、不是机器学习节点、不是XXX各种节点.....

而节点角色的出现“革命性”的结局了这个问题,如下所示,只需要说明我是某某某,而不需要费劲巴拉的解释我不是某某某。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node.roles: [ data, master ]

3、不同角色节点的功能详解

3.1 主节点(Master-eligible node)

  • 主节点的核心用途:集群层面的管理,例如创建或删除索引、跟踪哪些节点是集群的一部分,以及决定将哪些分片分配给哪些节点。主节点的path.data 用于存储集群元数据信息,不可缺少。
  • 主节点的重要性:拥有稳定的主节点对于集群健康非常重要。

和早期版本不同,节点角色划分后,主节点又被细分为:候选主节点和仅投票主节点。

  • 主节点存储数据:集群中每个索引的索引元数据,集群层面的元数据。
3.1.1 专用候选主节点(Dedicated master-eligible node)

如果集群规模大、节点多之后,有必要独立设置专用候选主节点。

专用候选主节点配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node.roles: [ master ]
3.1.2 仅投票主节点(Voting-only master-eligible node)

用途:仅投票,不会被选为主节点。

硬件配置可以较专用候选主节点低一些。

仅投票主节点配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node.roles: [ master, voting_only ]

注意:master 必不可少。

关于集群主节点配置,要强调说明如下:

  • 高可用性 (HA) 集群需要至少三个符合主节点资格的节点;其中至少两个不是仅投票节点。
  • 即使其中一个节点发生故障,这样的集群也将能够选举一个主节点。

3.2 数据节点(Data node)

数据节点用途:数据落地存储、数据增、删、改、查、搜索、聚合操作等处理操作。

数据节点硬件配置:CPU 要求高、内存要求高、磁盘要求高。

专属数据节点好处:主节点和数据节点分离,各司其职。

数据节点存储内容:

  • 分片数据。
  • 每个分片对应的元数据。
  • 集群层面的元数据,如:setting 和 索引模板。

拥有专用数据节点的主要好处是主角色和数据角色的分离。

数据节点的配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node.roles: [ data ]

在 Elastic 多层(tires)冷热集群架构体系下,数据节点又可以细分为:

  • 内容数据节点(Content data node)
  • 热数据节点(Hot data node)
  • 温数据节点(Warm data node)
  • 冷数据节点(Cold data node)
  • 冷冻数据节点(Frozen data node)

图片来自:Elastic 官方博客

3.2.1 内容数据节点

用途:处理写入和查询负载,具有较长的数据保留要求。

建议至少设置一个副本,以保证数据的高可用。

不属于数据流的系统索引或其他索引会自动分配到内容数据节点。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node.roles: [ data_content ]
3.2.2 热数据节点

用途:保存最近、最常访问的时序数据。

推荐使用:SSD 磁盘,至少设置一个副本。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node.roles: [ data_hot ]
3.2.3 温数据节点

用途:保存访问频次低且很少更新的时序数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node.roles: [ data_warm ]
3.2.4 冷数据节点

用途:保存不经常访问且通常不更新的时序数据。可存储可搜索快照。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node.roles: [ data_cold ]
3.2.5 冷冻数据节点

用途:保存很少访问且从不更新的时序数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node.roles: [ data_frozen ]

在冷热集群架构时序数据 ILM 索引生命周期管理的实战演练环节,验证发现:

在配置节点角色时,data_hot、data_warm、data_cold 要和 data_content 要一起配置。且 data_hot、data_warm、data_cold 不要和原有的data 节点一起配置了。

如果仅data_hot 不设置 data_content 会导致集群数据写入后无法落地。

我的理解:data_hot, data_warm, data_cold 是标识性的节点,实际落地存储还得靠 data_content 角色。

3.3 数据预处理节点(ingest node)

用途:执行由预处理管道组成的预处理任务。

关于啥是数据的预处理?之前有多篇文章解读过:

Elasticsearch 预处理没有奇技淫巧,请先用好这一招!

Elasticsearch的ETL利器——Ingest节点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node.roles: [ ingest ]

3.4 仅协调节点(Coordinating only node)

用途:类似智能负载均衡器,负责:路由分发请求、聚集搜索或聚合结果。

注意事项:在一个集群中添加太多的仅协调节点会增加整个集群的负担,因为当选的主节点必须等待来自每个节点的集群状态更新的确认。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node.roles: [ ]

空即是“色”,不对,这里空即是“仅协调节点”。

3.5 远程节点(Remote-eligible node)

用途:跨集群检索或跨集群复制。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node.roles: [ remote_cluster_client ]

3.6 机器学习节点(Machine learning node)

用途:机器学习,系收费功能。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node.roles: [ ml, remote_cluster_client]

3.7 转换节点(Transform node)

用途:运行转换并处理转换 API 请求。这块,咱们之前文章没有涉及。

推荐阅读:

https://www.elastic.co/guide/en/elasticsearch/reference/current/transform-overview.html

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node.roles: [ transform, remote_cluster_client ]

4、回答开篇问题

4.1 Q1:请问 Nginx + ES Coordinate + ES Master + ES Node 如何安装配置呢?是否安装一样,只需更改节点角色即可?

答案:先划分节点角色。节点不多的话手动one by one 部署(部署好了一个,其他的拷贝后修改角色、ip等就可以),节点非常多的话可以借助:ansible 等脚本工具快速部署。

4.2 Q2:ES部署上,node.role都是mdi和 node.role区分m、d、i ,在部署上各有什么优势?更推荐用哪种?

答案:本文已介绍。m 代表主节点 master, d 代表数据节点 data, i 代表数据预处理节点 ingest。

4.3 Q3:有 ES 7.x 的集群角色如图,请问在写入海量数据时,应该连接什么角色的节点写入?专用协调节点还是数据节点?

答案:看节点规模和节点角色划分,如果已经有了独立协调节点,连接独立协调节点。如果没有,连接硬件配置高的节点。

4.4 Q4:role的配置,加上这些data_hot, data_warm, data_cold 和自定义的attr属性有区别吗?

答案:新版本新特性,有区别,新的方式配置更为简洁,可读性强、用户体验优。

4.5 Q5:谁能解释一下es的角色 data data_content data_hot/warm/cold他们直接的关系?

答案:系冷热集群架构的数据节点的分层处理机制。相当于早期版本冷热集群架构的手动配置节点属性的部分,高版本做了精细切分,使得数据冷热集群管理更为高效。尤其默认迁移(migrate )自动实现机制,之前版本的分片分配策略手动配置变得不再必须:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"allocate" : {
            "include" : {
              "box_type": "hot,warm"
            }
          }

4.6 Q6:请问 ES 7.10 的 data_content 角色是个什么样的存在?和协调节点什么区别?

答案:两种完全不同的节点。data_content 属于数据节点,永久存储数据的地方。而协调节点是用来请求路由分发、结果汇聚处理的。

5、小结

有了节点角色划分之后,老版本的节点类型配置还是支持的。最早使用节点角色做 ILM 索引生命周期管理还有点不适应,摸索了一小段时间。

但,我们得拥抱 Elasticsearch 的变化。

节点角色的划分是用户体验层面、功能层面的改进,有了它,我们节点划分会更加明晰,节点用途会更加聚焦、具体。

关于节点角色和硬件配置的关系,也是经常被提问的问题,推荐配置参考:

角色

描述

存储

内存

计算

网络

数据节点

存储和检索数据

极高

主节点

管理集群状态

Ingest 节点

转换输入数据

机器学习节点

机器学习

极高

极高

协调节点

请求转发和合并检索结果

你的生产环境使用了什么版本的集群?如何做的节点角色的划分?欢迎留言讨论。

参考

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 铭毅天下Elasticsearch 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Elasticsearch ILM 索引生命周期管理常见坑及避坑指南
之前的博文和视频都讲过 ILM 索引生命周期管理。但从近期的反馈和我自己的实战经验看,依然会有很多坑。
铭毅天下
2022/02/09
2.4K0
Elasticsearch ILM 索引生命周期管理常见坑及避坑指南
ES02# Elasticsearch术语与部署架构梳理
ES体系化梳理第二篇,从基本概念和术语开始,走查了集群中的节点以及其在ES集群中可扮演的角色,最后走查了常见的集群部署架构。本文主要内容有:
瓜农老梁
2022/04/28
6400
ES02# Elasticsearch术语与部署架构梳理
Elasticsearch 可搜索快照技术原理及最佳实践
Elasticsearch于7.10版本推出可搜索快照功能,但是7.10版本的可搜索快照技术还不够成熟,随着7.14版本的发布,可搜索快照技术才真正能够大规模用于生产实践中。本文将基于ES 7.14.2版本,继续从原理和实践两个角度向大家介绍可搜索快照技术。
腾讯云大数据
2021/12/29
1.5K1
Elasticsearch 可搜索快照技术原理及最佳实践
Elasticsearch7.14版本集群架构升级之冷热集群
具备主节点角色,拥有控制集群的权限。当节点被授予该角色时,则表明该节点有资格被选举为主节点。
空洞的盒子
2024/07/24
3921
Elasticsearch可搜索快照技术原理及最佳实践
Elasticsearch于7.10版本推出可搜索快照功能,但是7.10版本的可搜索快照技术还不够成熟,随着7.14版本的发布,可搜索快照技术才真正能够大规模用于生产实践中。本文将基于ES 7.14.2版本,继续从原理和实践两个角度向大家介绍可搜索快照技术的。
吴容
2021/11/27
2.2K3
Elasticsearch可搜索快照技术原理及最佳实践
ES集群与角色规划
ES8自2020年2月发布至今已有一年多时间,相较于es7而言,最大的改变是彻底删除_type,并默认开启三层安全配置,进一步提高了集群安全性,同时kibana的实用性也进一步提升,大部分日常操作都可以通过web界面完成。本系列教程使用最新的es8.8版本,从运维角度出发,以构建日志平台为目的,以尽可能贴近实际生产的场景案例,优先使用简易的部署方式和kibana图形化界面操作。由浅入深,带领大家逐步上手和掌握ELK技术栈。更多ELK相关内容欢迎访问官方文档或本人博客笔记:https://www.cuiliangblog.cn/catalog/10898409
章工运维
2024/03/13
2330
ES集群与角色规划
Kubernetes 部署冷热架构 Elasticsearch「Helm 部署案例」
上一篇 我们介绍了 Elasticsearch ILM 索引生命周期管理。使用 ILM 的前提是具有冷热架构的 ES 集群,本篇就来介绍如何在 Kubernetes 部署这样的集群。
sir5kong
2023/07/26
9990
学好Elasticsearch系列-核心概念
公司使用Elasticsearch的场景还是挺多的,打算开个新的坑,写一个关于Elasticsearch的系列,这是第一章。
BookSea
2023/07/26
2660
学好Elasticsearch系列-核心概念
Elasticsearch冷热分离原理和实践
性能与容量之间的矛盾由来已久,计算机的多级存储体系就是其中一个经典的例子,同样的问题在Elasticsearch中也存在。为了保证Elasticsearch的读写性能,官方建议磁盘使用SSD固态硬盘。然而Elasticsearch要解决的是海量数据的存储和检索问题,海量的数据就意味需要大量的存储空间,如果都使用SSD固态硬盘成本将成为一个很大的问题,这也是制约许多企业和个人使用Elasticsearch的因素之一。为了解决这个问题,Elasticsearch冷热分离架构应运而生。
michelmu
2019/11/26
10K7
Elasticsearch冷热分离原理和实践
刨根问底 | Elasticsearch 5.X集群多节点角色配置深入详解
1、问题引出 ES5.X节点类型多了ingest节点类型。 针对3个节点、5个节点或更多节点的集群,如何配置节点角色才能使得系统性能最优呢? 2、ES2.X及之前版本节点角色概述 3、ES5.
铭毅天下
2018/03/20
1.5K0
刨根问底 | Elasticsearch 5.X集群多节点角色配置深入详解
Elasticsearch Data tiers数据分层介绍与展望
最近Elasticsearch 7.10版本发布,该版本除了有Searchable Snapshots可搜索快照这个重磅特性之外,还有Data tiers数据层功能。数据层实际上就是先定义好数据节点的角色,比如热节点、温节点等,然后可以在ILM索引生命周期管理中实现索引由热节点迁移到温节点,再迁移到冷节点,达到数据冷热分离的目的。
bellen
2020/12/11
1.8K0
Elasticsearch Data tiers数据分层介绍与展望
ES8.8集群与Kibana部署
es可以使用二进制、docker、k8s、rpm方式部署,此处以rpm方式为例。相较于二进制部署,省去了繁琐的用户创建、证书生成、密码设置、启动脚本配置等操作,简化部署流程,可以将更多的精力用于es的使用而不是部署上面。如果资源有限,想体验elk相关功能,可参考文档:https://www.cuiliangblog.cn/detail/section/117075458,后续也会发布docker模式下elk自定义日志采集文章。
章工运维
2024/03/13
1.1K0
ES8.8集群与Kibana部署
Elastic Stack 实战教程 2:ILM 索引生命周期管理
索引生命周期管理 (Index Lifecycle Management, ILM) 是在 Elasticsearch 在 6.6(公测版)首次引入并在 6.7 版正式推出的一项功能。ILM 旨在帮助用户更方便地管理时序数据(例如日志,指标等)。时序数据有如下几个典型的特点:
Se7en258
2023/02/26
7260
Elastic Stack 实战教程 2:ILM 索引生命周期管理
一起学Elasticsearch系列-核心概念
Elasticsearch是一个开源的搜索和分析引擎,支持近实时的大数据存储、搜索和分析。它基于Apache Lucene项目,提供全文搜索及能力强大的分布式多用户搜索引擎,同时配备RESTful web接口。它不仅能执行复杂查询,还能高效处理复杂的数据分析。
BookSea
2023/11/06
3990
一起学Elasticsearch系列-核心概念
elasticsearch部署方案_elasticsearch安装配置
Elasticsearch 是一个极其强大的搜索和分析引擎,其强大的部分在于能够对其进行扩展以获得更好的性能和稳定性。
全栈程序员站长
2022/11/07
9870
Elasticsearch集群规划及节点角色规划醉佳实践
Elasticsearch 和 Lucene 都是 Java 语言编写,这意味着我们必须注意堆内存的设置。
全栈程序员站长
2022/08/19
1.1K0
Elasticsearch 数据离线迁移方案(含冷热分层场景)
本文描述问题及解决方法同样适用于 腾讯云 Elasticsearch Service(ES)。
岳涛
2023/06/13
3.6K0
Elasticsearch 数据离线迁移方案(含冷热分层场景)
Elasticsearch 7.x 之节点、集群、分片及副本
从物理空间概念,Elasticsearch 分布式系统会有 3 个关键点需要学习。本次总结了下面相关内容:
二哥聊运营工具
2021/12/17
1.5K0
Elasticsearch 7.x 之节点、集群、分片及副本
Elasticsearch8.13.0安装指引
空洞的盒子
2024/10/09
8792
Elasticsearch多主、多数据、多协调、多冷节点说明及配置(一)
最近因为客户项目需要,所以专门调研了Elasticsearch的这些不常用的重要功能,并整理成文档,现在分享出来,希望对有这方面需求的同行有些帮助 由于内容较多,一共分为三部分分享 Elasticsearch多主、多数据、多协调、多冷节点节点说明及配置 Elasticsearch灾备同步方案设计 Elasticsearch灾备同步方案设计验证 1. 多主 ElasticSearch默认是任何节点都可以成为主节点,也可以手动设置节点成为主节点候选节点,负责管理集群范围内的所有变更,例如增加、删除索引或者增
低代码布道者
2022/07/25
1.9K0
Elasticsearch多主、多数据、多协调、多冷节点说明及配置(一)
推荐阅读
相关推荐
Elasticsearch ILM 索引生命周期管理常见坑及避坑指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档