【Elasticsearch】Elasticsearch 中的节点角色

07-21 1307阅读

Elasticsearch 中的节点角色

  • 1.主节点(master)
    • 1.1 专用候选主节点(dedicated master-eligible node)
    • 1.2 仅投票主节点(voting-only master-eligible node)
    • 2.数据节点(data)
      • 2.1 内容数据节点(data_content)
      • 2.2 热数据节点(data_hot)
      • 2.3 温数据节点(data_warm)
      • 2.4 冷数据节点(data_cold)
      • 2.5 冷冻数据节点(data_frozen)
      • 3.ingest 节点
      • 4.仅协调节点
      • 5.远程节点(remote_cluster_client)
      • 6.机器学习节点(ml)
      • 7.转换节点(transform)
      • 8.节点角色和硬件配置的关系

        Elasticsearch 7.9 版本开始引入 节点角色 的概念。

        在 Elasticsearch 8.X 版本中,节点类型 升级为 节点角色。节点角色分得很细,包括 数据节点 角色、主节点 角色、ingest 节点 角色、热节点 角色等。

        【Elasticsearch】Elasticsearch 中的节点角色

        在 Elasticsearch 集群中,每个启动的 Elasticsearch 进程都可以叫作一个节点。以 Elasticsearch 8.X 版本集群为例,如果我们不手动设置节点角色,则默认节点角色为 cdfhilmrstw。

        【Elasticsearch】Elasticsearch 中的节点角色

        节点角色缩写英文释义中文释义
        ccold data node冷数据节点
        ddata node数据节点
        ffrozen data node冷冻数据节点
        hhot data node热数据节点
        iingest node数据预处理节点
        lmachine learning node机器学习节点
        mmaster-eligible node候选主节点
        rremote cluster client node远程节点
        scontent data node内容数据节点
        ttransform node转换节点
        wwarm data node温数据节点
        /coordinating only node仅协调节点

        当集群规模比较大之后(比如集群节点数大于 6 个),就需要手动设定、配置节点角色。

        1.主节点(master)

        主节点 在 Elasticsearch 集群中的关键作用主要体现在全局级别的管理上。例如,主节点负责管理 索引的创建或删除操作,监控哪些节点是集群的成员,以及 确定将哪些分片分配给哪些节点。这种决策和管理的能力使主节点在维持整个集群稳定运行中扮演了重要角色。

        此外,主节点还负责 存储重要的元数据,包括集群中每个索引的元数据和集群级别的元数据。特别地,主节点的 path.data 目录用于存放这些集群元数据信息,这是主节点不可或缺的功能。

        因此,为了确保集群的稳定运行和有效管理,需要特别注意主节点的配置和维护。

        拥有稳定的主节点对于集群健康非常重要。与早期版本不同,节点角色划分后,主节点又被细分为专用 候选主节点 和 仅投票主节点。

        1.1 专用候选主节点(dedicated master-eligible node)

        如果集群规模大、节点多,那么就有必要设置独立的 专用候选主节点,其配置如下。

        node.roles: [ master ]
        

        1.2 仅投票主节点(voting-only master-eligible node)

        这类节点仅用于投票,它们不会被选为主节点。其硬件配置可以比专用候选主节点更低一些。仅投票主节点 的配置如下,其中 master 必不可少。

        node.roles: [ master, voting only ]
        

        🚀 关于集群主节点配置,要强调一点:高可用性集群 需要至少 3 个符合主节点资格的节点,其中至少两个不是仅投票节点。这样即使其中一个节点发生故障,该集群也能够选举出一个主节点。

        2.数据节点(data)

        数据节点 会在 Elasticsearch 集群中执行关键任务,包括 保存数据到硬盘或其他永久性存储设备上(通常称为 落地存储),以及执行各种数据处理操作(如数据添加、删除、修改、查询、搜索和聚合等)。

        由于数据节点的功能包括对大量数据进行处理和保存,它们对硬件配置的需求相对较高,特别是对 CPU、内存和磁盘的需求。为了确保数据节点有效地处理这些任务并响应查询请求,我们需要在硬件配置上提供足够的资源。而选择性能强大的 CPU 以及提供充足的内存和磁盘空间,是确保数据处理效率和稳定性的关键。

        使用专用数据节点的好处在于可以 让主节点和数据节点分离、各司其职。

        数据节点存储的内容如下:

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

          数据节点的配置如下:

          node.roles: [ data ]
          

          在 Elasticsearch 多层冷热集群架构体系下,数据节点又可以细分如下。

          • 内容数据节点
          • 热数据节点
          • 温数据节点
          • 冷数据节点
          • 冷冻数据节点

            2.1 内容数据节点(data_content)

            内容数据节点 是一个节点角色,用于 指定具体的负责存储和搜索数据的节点。这个角色的主要功能是 处理和查询数据,包括文本、数字和地理位置等类型的数据。其具体职责如下:

            • 存储数据:将数据分片存储在节点上。
            • 搜索数据:处理来自客户端的搜索请求,并在本地分片中搜索数据。
            • 索引数据:对新数据进行索引操作,以便进行搜索和查询。
              node.roles: [data_content]
              

              2.2 热数据节点(data_hot)

              热数据节点 的用途主要是保存 最近、最常访问 的热数据,即经常被访问和更新的数据。在数据生命周期的早期,数据通常处于活跃状态,会频繁读写。热数据节点通常配置在高性能硬件上,例如高速 SSD 存储和高性能 CPU。

              node.roles: [data_hot]
              

              2.3 温数据节点(data_warm)

              温数据节点 的用途主要是保存 访问频次低 且 很少更新 的时序数据。

              node.roles: [data_warm]
              

              2.4 冷数据节点(data_cold)

              冷数据节点 的用途主要是保存 不经常访问 且 通常不更新 的时序数据,可用于存储可搜索快照。

              node.roles: [data_cold]
              

              2.5 冷冻数据节点(data_frozen)

              冷冻数据节点 的用途主要是保存 很少访问 且 从不更新 的时序数据。

              node.roles: [data_frozen]
              

              注意 ⚠

              • 🚀 在配置节点角色时,data_hot、data_warm、data_cold 要和 data_content 一起配置而不要和原有的仅 data 节点角色一起配置了。
              • 🚀 如果仅设置 data_hot 而不设置 data_content 节点角色,则会导致集群数据写入后无法落地。
              • 🚀 data_hot、data_warm 与 data_cold 节点角色是标识性的角色,而数据实际落地存储还得靠 data_content 角色。

                3.ingest 节点

                这类节点通常 执行由预处理管道组成的预处理任务,后面会专门详细解读 ingest 数据预处理过程。

                node.roles: [ ingest ]
                

                4.仅协调节点

                这类节点的作用类似于智能负载均衡器,负责路由分发请求、聚拢(或叫作收集,可理解为分发的反过程)搜索或聚合结果。

                配置为空则代表仅协调节点,如下所示。

                node.roles: [ ]
                

                5.远程节点(remote_cluster_client)

                这类节点用于 跨集群检索 或 跨集群复制。

                node.roles: [ remote_cluster_client ]
                

                6.机器学习节点(ml)

                机器学习节点 是一类特殊类型的节点,它专门用于运行机器学习功能。它们负责运行数据分析任务,如异常检测、预测和回归等。这类节点的功能是收费的,Elasticsearch 开源版本并不提供。

                node.roles: [ ml, remote_cluster_client ]
                

                7.转换节点(transform)

                转换节点 是一个特殊类型的节点,负责执行数据转换任务。数据转换是指将数据从种格式或结构转换为另一种格式或结构的过程。在 Elasticsearch 中,这通常涉及对原始数据创建新的索引,并对新索引中的数据进行汇总、分组或其他转换操作,以便更有效地行分析和查询。

                node.roles: [ transform, remote_cluster_client ]
                

                8.节点角色和硬件配置的关系

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

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]