永久删除 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 配置文件中指定,如下所示:

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

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

自动删除不可用的主节点

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

结论

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

相关推荐
Biehmltym6 小时前
【AI】09AI Agent LLM → Streaming → Session 记录 的完整链路
大数据·人工智能·elasticsearch
小湘西7 小时前
Elasticsearch 的一些默认配置上下限
java·大数据·elasticsearch
Dxy123931021610 小时前
Elasticsearch 8如何做好标题搜索
大数据·elasticsearch
斯普信云原生组11 小时前
Elasticsearch(ES) 内存 CPU 过高问题排查报告
大数据·elasticsearch·搜索引擎
弘毅 失败的 mian12 小时前
Git 分支管理
大数据·经验分享·笔记·git·elasticsearch
阿坤带你走近大数据12 小时前
Elasticsearch(ES)的基本概念、架构及基本使用介绍
大数据·elasticsearch
Elastic 中国社区官方博客13 小时前
使用 Elasticsearch 中的结构化输出创建可靠的 agents
大数据·人工智能·elk·elasticsearch·搜索引擎·ai·全文检索
G皮T13 小时前
【Elasticsearch】查询性能调优(六):track_total_hits 影响返回结果的相关性排序吗
大数据·数据库·elasticsearch·搜索引擎·全文检索·性能·opensearch
LCG米15 小时前
嵌入式Linux系统构建:为STM32MP157移植Buildroot并开发温湿度采集驱动
linux·stm32·elasticsearch
phil zhang15 小时前
Celer:为大型C/C++项目打造的极简包管理器
开发语言·c++·elasticsearch