永久删除 Elasticsearch 中的主节点

Elasticsearch 是一个开源分布式搜索和分析引擎,用于各种任务,例如全文搜索、日志分析和实时数据分析。 Elasticsearch 集群由一个或多个节点组成,每个节点可以具有多种角色,包括主节点(master node)、数据节点 (data node)、摄取节点 (ingest node) 和机器学习节点 (machine learning node)。

在本文档中,我们将重点讨论从 Elasticsearch 集群中永久删除一个主节点。 在各种场景中可能需要此操作,例如重组集群或通过添加新节点来扩展集群。

当前和所需的集群配置

在所提供的示例中,当前的 Elasticsearch 集群由两个具有所有角色的节点和一个 master-voting-only 节点组成。 后者是参与主节点选举投票的节点,但不保存数据或处理搜索或索引请求。

目标是通过添加三个新节点来扩展集群。 这些新节点之一将被指定为主节点,而现有的仅主投票节点将被删除。 此外,其中两个新节点将具有除主节点之外的所有角色。

  • 当前配置:2 个节点(所有角色)+ 1 个 master-voting-only 节点
  • 所需配置:3 个节点(所有角色)+ 2 个节点(除主节点外的所有角色)

为什么需要三个主节点?

更多关于 Elasticsearch 节点的描述,请参考文章 "Elasticsearch 中的一些重要概念: cluster, node, index, document, shards 及 replica"。

在 Elasticsearch 集群中,主节点负责集群范围内的轻量级操作,例如创建或删除索引、确定将哪些分片分配给新节点以及删除不响应的节点。

拥有单个主节点会导致单点故障,如果该节点发生故障,可能会导致停机。 拥有两个主节点可能会导致 "裂脑 (split brain)" 情况,如果两个主节点彼此失去连接,集群就会分为两个独立的集群,每个集群都有自己的主节点。

为了避免这些问题,建议集群中至少有三个符合主节点资格的节点。 原因是 Elasticsearch 使用基于仲裁的投票系统来选举主节点。 仲裁的计算方式为 (master_eligible_nodes / 2) + 1。因此,在三节点集群中,至少有两个节点需要同意选举新的主节点,以防止出现裂脑情况。

主节点删除流程

从 Elasticsearch 集群中删除主节点可以通过关闭该节点来执行。 但是,需要注意的是,即使在删除该节点后,集群也可能会继续 "记住" 该节点。 这是因为 Elasticsearch 维护了一个符合条件的主节点列表,以保证集群的稳定性。

删除 master-voting-only 节点并添加新节点后,集群仍将具有三个主节点。 这些节点将形成新的集合,根据 Elasticsearch 的共识算法,这些节点中的任何两个都足以形成法定人数并做出有关集群的决策。

节点角色分配

关于将除 "master" 之外的所有角色分配给节点,可以通过在节点的 yml 配置文件中显式指定所有角色来完成。

例如,如果你希望一个节点具有除 master 之外的所有角色,你可以在节点的 yml 配置文件中指定,如下所示:

复制代码
node.roles: [ data, ingest, ml, remote_cluster_client, transform ]

在此示例中,除主角色之外的所有角色都分配给该节点。

自动删除不可用的主节点

Elasticsearch 有一项功能,可以自动从投票配置中删除不可用的主节点。 此功能由 cluster.auto_shrink_voting_configuration 属性控制,需要将其设置为 true。 启用此属性后,如果节点关闭,Elasticsearch 将 "最终" 从投票配置中删除任何不可用的主节点。

结论

从 Elasticsearch 集群中删除主节点是一项复杂的操作,需要深入了解集群配置以及此类操作的含义。

相关推荐
拓端研究室2 小时前
专题:2025机器人产业深度洞察报告|附136份报告PDF与数据下载
大数据·人工智能·物联网
阿里云大数据AI技术3 小时前
NL2SQL 再创佳绩!阿里云论文中选 SIGMOD 2025
大数据·人工智能·云计算
是小pa丫4 小时前
ElasticSearch重置密码
elasticsearch
庄小焱5 小时前
【离线数仓项目】——电商域ADS层开发实战
大数据
庄小焱5 小时前
【离线数仓项目】——离线大数据系统设计
大数据
南城尽相思6 小时前
es的自定义词典和停用词
elasticsearch·搜索引擎
吃手机用谁付的款6 小时前
基于hadoop的竞赛网站日志数据分析与可视化(下)
大数据·hadoop·python·信息可视化·数据分析
孟猛20237 小时前
使用 C++ 调用 Elasticsearch API
elasticsearch
线条17 小时前
Spark 单机模式安装与测试全攻略
大数据·分布式·spark
老周聊架构7 小时前
大数据领域开山鼻祖组件Hadoop核心架构设计
大数据