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

这篇具有很好参考价值的文章主要介绍了干货 | Elasticsearch 8.X 节点角色划分深入详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 8.X 节点角色划分深入详解

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

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

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

干货 | Elasticsearch 8.X 节点角色划分深入详解
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或者至少用户体验差。

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

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

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各种节点.....

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

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

node.roles: [ data, master ]

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

3.1 主节点(Master-eligible node)

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

  • 主节点的重要性:拥有稳定的主节点对于集群健康非常重要。

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

  • 主节点存储数据:集群中每个索引的索引元数据,集群层面的元数据。

3.1.1 专用候选主节点(Dedicated master-eligible node)

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

专用候选主节点配置:

node.roles: [ master ]
3.1.2 仅投票主节点(Voting-only master-eligible node)

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

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

仅投票主节点配置:

node.roles: [ master, voting_only ]

注意:master 必不可少。

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

  • 高可用性 (HA) 集群需要至少三个符合主节点资格的节点;其中至少两个不是仅投票节点。

  • 即使其中一个节点发生故障,这样的集群也将能够选举一个主节点。

3.2 数据节点(Data node)

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

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

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

数据节点存储内容:

  • 分片数据。

  • 每个分片对应的元数据。

  • 集群层面的元数据,如:setting 和 索引模板。

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

数据节点的配置:

node.roles: [ data ]

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

  • 内容数据节点(Content data node)

  • 热数据节点(Hot data node)

  • 温数据节点(Warm data node)

  • 冷数据节点(Cold data node)

  • 冷冻数据节点(Frozen data node)

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

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

图片来自:Elastic 官方博客

3.2.1 内容数据节点

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

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

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

node.roles: [ data_content ]
3.2.2 热数据节点

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

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

node.roles: [ data_hot ]
3.2.3 温数据节点

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

node.roles: [ data_warm ]
3.2.4 冷数据节点

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

node.roles: [ data_cold ]
3.2.5 冷冻数据节点

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

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节点

node.roles: [ ingest ]

3.4 仅协调节点(Coordinating only node)

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

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

node.roles: [ ]

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

3.5 远程节点(Remote-eligible node)

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

node.roles: [ remote_cluster_client ]

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

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

node.roles: [ ml, remote_cluster_client]

3.7 转换节点(Transform node)

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

推荐阅读:

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

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 )自动实现机制,之前版本的分片分配策略手动配置变得不再必须:

"allocate" : {
            "include" : {
              "box_type": "hot,warm"
            }
          }

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

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

5、小结

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

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

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

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

角色 描述 存储 内存 计算 网络
数据节点 存储和检索数据 极高
主节点 管理集群状态
Ingest 节点 转换输入数据
机器学习节点 机器学习 极高 极高
协调节点 请求转发和合并检索结果

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

参考

  • https://www.elastic.co/guide/en/elasticsearch/reference/current/data-tiers.html

  • https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html

  • https://www.elastic.co/cn/blog/whats-new-elasticsearch-7-11-0-schema-on-read-is-here

  • 探究 | Elasticsearch集群规模和容量规划的底层逻辑

推荐

1、重磅 | 死磕 Elasticsearch 方法论认知清单(2021年国庆更新版)

2、如何从0到1打磨一门 Elasticsearch 线上直播课?(口碑不错)

3、如何系统的学习 Elasticsearch ?

4、干货 | Elasticsearch 索引生命周期管理 ILM 实战指南

更短时间更快习得更多干货!

和全球 1600+ Elastic 爱好者一起精进!

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

比同事抢先一步学习进阶干货!文章来源地址https://www.toymoban.com/news/detail-420584.html

到了这里,关于干货 | Elasticsearch 8.X 节点角色划分深入详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ElasticSearch——详解主从模式,以及主节点的选取算法(一)

    详解主从模式,以及主节点的选取算法 Discovery模块负责发现集群中的节点,以及选择主节点 。 ES支持多种不同Discovery类型选择,内置的实现称为Zen Discovery,其他的包括公有云平台亚马逊的EC2、谷歌的GCE等。本文讨论内置的Zen Discovery实现。 Zen Discovery封装了节点发现(Ping)、

    2024年02月10日
    浏览(35)
  • kubernetes集群划分节点

    Kubernetes(K8s)是一个用于管理容器化应用程序的开源平台,可以帮助开发人员更轻松地部署、管理和扩展应用程序。在Kubernetes中,集群划分是一种重要的概念,可以帮助我们更好地组织和管理集群中的节点和资源。 本文将介绍如何使用Kubernetes对集群进行划分,并提供详细的

    2024年02月05日
    浏览(83)
  • Elasticsearch进阶篇(一):Elasticsearch写入原理深入详解

    引用官方文档地址:分片内部原理 | Elasticsearch: 权威指南 | Elastic 索引是 Elasticsearch 存储、组织和搜索数据的逻辑容器。它类似于 MySQL 中的 数据表 ,一个 Elasticsearch 集群可以包含多个索引。从 Elasticsearch 7.x 开始,Elasticsearch 不再支持多个 type且默认为_doc,并在之后的版本中

    2024年04月10日
    浏览(53)
  • 【集群划分】基于kmeans的电压调节的集群划分【IEEE33节点】

      💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 ​ 🎉3 参考文献 🌈4 Matlab代码实现 高

    2024年02月05日
    浏览(43)
  • 【Elasticsearch专栏 08】深入探索:Elasticsearch中的Routing机制详解

    在深入研究Elasticsearch的内部工作原理时,不可避免地会遇到“Routing”这一概念。Routing是Elasticsearch中用于确定文档应存储在哪个分片上的机制。理解Routing的工作原理对于优化Elasticsearch集群的性能、确保数据的一致性和实现特定的数据布局策略至关重要。 01 Routing的基础 Ela

    2024年04月08日
    浏览(72)
  • 干货 | 算力网络节点可信度评估和安全管控方案

    以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。 第一部分:算力网络 第二部分:可信度评估 一、可信度评估 在整个算力网络处理任务的实施流程中,不同部分有不同可信度评估的方法,具体包括: 用户可信度、任务可信度、算力资源

    2023年04月08日
    浏览(44)
  • ElasticSearch 中的中文分词器以及索引基本操作详解,Java高并发编程详解深入理解pdf

    PUT book/_settings { “number_of_replicas”: 2 } 修改成功后,如下: 更新分片数也是一样。 2.3 修改索引的读写权限 索引创建成功后,可以向索引中写入文档: PUT book/_doc/1 { “title”:“三国演义” } 写入成功后,可以在 head 插件中查看: 默认情况下,索引是具备读写权限的,当然这

    2024年04月09日
    浏览(51)
  • 深入理解SOMEIP培训讲义 - 干货!!!

    曾经给同事培训 SOMEIP 写的干货,分享给大家!!! 也欢迎关注!!!评论!!! 以下是我写的系列文章 C++高性能优化编程系列 深入理解设计原则系列 深入理解设计模式系列 高级C++并发线程编程 世间最容易的事是坚持,最难的事也是坚持。要记住,坚持到底就是胜利。

    2024年02月07日
    浏览(37)
  • 深入理解哈希表:数据结构中的重要角色

    目录 一. 哈希表的原理与结构 哈希函数 存储数组 哈希冲突与解决方法 总结 二. 哈希函数的作用与设计 哈希函数的作用: 哈希函数的设计: 常见的哈希函数设计方法包括: 三. 哈希冲突与解决方法 1. 开放寻址法(Open Addressing) 2. 链地址法(Chaining) 四. 哈希表的应用 五

    2024年02月11日
    浏览(53)
  • Elasticsearch 的角色和权限管理

    Elasticsearch 是一个开源的分布式搜索和分析引擎,它允许用户通过 RESTful API 进行数据的存储、搜索和分析。在实际应用中,有时需要对 Elasticsearch 进行角色和权限管理,以确保系统的安全性和隐私保护。 1.角色管理 角色管理是 Elasticsearch 中对用户进行授权的一种方式。通过角

    2024年02月11日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包