Elasticsearch 集群更换节点角色有了更快的方式

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 1、实战遇到的问题问题描述:如何在一个四个节点的集群中,将主节点中的数据分散到其他节点中去,最后主节点没有数据?问题细节:线上环境有4个节点,单节点为48核的物理机,252G的内存。数据每日增量不大,累计数据就一个TB左右。数据的类型为文书类数据。核心数据就一个索引,设置了48个分片。只设置了一个主节点(同时是数据节点),其余三个仅数据节点。

2、问题解读

抛开节点配置、集群部署层面的问题。


问题转化为:主节点&数据节点角色的节点如何转化为仅主节点?


3、模拟一把

3.1 构建模拟环境

模拟环境:4核、8GB 云服务器,Elasticsearch 7.12.0 版本 四节点。


node-022:主节点&数据节点


node-023:仅数据节点


node-024:仅数据节点


node-025:仅数据节点


集群部署完成未导入任何数据截图如下:

image.png

3.2 构造数据

基于 kibana 样例数据(kibana_sample_data_ecommerce)构建索引。


新索引 kibana_sample_data_ecommerce_02


主分片数:48


副本分片数:1


Mapping 和数据:


同 kibana_sample_data_ecommerce 保持一致。


索引数据迁移基于 reindex 实现。


POST _reindex

{

 "source": {

   "index": "kibana_sample_data_ecommerce"

 },

 "dest": {

   "index": "kibana_sample_data_ecommerce_02"

 }

}

数据构造完毕后,截图如下:

image.png

.3 节点角色变化实战

这里有个前提:能不能不停机转换节点角色?


看我们开篇的节点角色划分是没戏了。仅一个主节点,且更换角色的节点也是主节点。


3.3.1 步骤 1:将主节点&数据节点  node-022 的属性改为仅主节点。

修改 elasticsearch.yml 的节点属性配置部分,如下:


node.master: true

node.data: false

3.3.2 步骤 2:下线 主节点&数据节点 node-022。

kill 掉对应的 elasticsearch 进程即可。


3.3.3 步骤 3:重新启动 主节点&数据节点 node-022。

启动主节点后,报错如下:

image.png

What?elasticsearch-node repurpose 是什么鬼?


3.3.4 步骤 4:执行 elasticsearch-node repurpose 实现角色转换前处理工作。

bash-4.2$ ./bin/elasticsearch-node repurpose

   WARNING: Elasticsearch MUST be stopped before running this tool.

... ...

Found 29 shards in 6 indices to clean up

Use -v to see list of paths and indices affected

Node is being re-purposed as master and no-data. Clean-up of shard data will be performed.

Do you want to proceed?

Confirm [y/N] y

Node successfully repurposed to master and no-data

image.png

以上指令及返回结果解读如下:


(1)执行 elasticsearch-node repurpose 的前置条件是:当前节点已被停用。


(2)节点角色转换为仅主节点(确切的说是:候选主节点)。


(3)当输入 y 确认后,清理了 6 个索引(含 29 个分片)的数据。


3.3.5 步骤5:再次启动主节点 node-022

这时候,节点能正常启动。


同时,其余节点会再建立与主节点 node-022 的连接。


节点分片会被重新分配,本质是:原有主节点上关联的副本分片提升为主分片,主分片再重新生成对应的副本分片。

image.png

查看下主节点角色,如下  node-022 变成了:仅主节点角色,已没有数据节点角色。

image.png

至此,主节点&数据节点变成了仅主节点。


3.3.6 角色变换小结

第一:仅需要下线主节点,其他节点可以保持原有状态,无需下线。


第二:需要借助:elasticsearch-node repurpose 实现角色转换。


4 elasticsearch-node repurpose 原理

4.1 elasticsearch-node 上线版本

7.0.0 版本,也就意味着:7.0 之前的版本不具备该功能。


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


4.2 elasticsearch-node repurpose 全局视角

image.png

4.3 elasticsearch-node 工具作用

以下是官方文档翻译:


可以在节点关闭时对它们执行某些不安全的操作。通过此命令可以调整节点的角色,不安全地编辑集群设置,并且即使灾难(disaster,集群异常)与磁盘上的数据不兼容,也可以在灾难(disaster)后恢复某些数据或启动节点。


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


4.4 elasticsearch-node 工具用法

能实现的功能有很多,支持的参数也有好几个,诸如:


repurpose


remove-settings


remove-customs


unsafe-bootstrap


detach-cluster


override-version


篇幅原因,建议直接参看官方文档。


我们契合本文主题,只讲解一下更换角色命令的使用。


4.5 elasticsearch-node repurpose 用法详解

elasticsearch-node repurpose 的作用:如果节点曾经是数据节点或候选主机节点,但已被重新设计为不具有其中一个角色或改为其他角色,则可用于从节点中删除不需要的数据。


核心用途一句话概括:更改节点角色、删除不必要的数据。


使用该命令的核心四个步骤:


步骤 1:停止需要更换角色的节点。


步骤 2:通过 elasticsearch.yml 更新节点角色。


步骤 3:执行 elasticsearch-node repurpose。


步骤 4:重新启动节点。


文中 3.3 节的实现就是用的这四个步骤。


提示:


1、要删除索引数据,所以会有交互提示,输入“y“代表确认删除。


2、会保留 meta 元数据信息,确保集群可用。


5、小结

类似问题,广靠猜没有用,实际操作一把,会发现“新大陆”。


之前我也不知道,7.X 版本的这个 elasticsearch-node 命令行工具非常人性化。


涉及到更换集群节点角色的场景,不妨一试!


欢迎留言交流。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
打赏
0
0
0
0
582
分享
相关文章
Elasticsearch集群JVM调优设置合适的堆内存大小
Elasticsearch集群JVM调优设置合适的堆内存大小
1469 1
|
3月前
|
CentOS环境搭建Elasticsearch集群
至此,您已成功在CentOS环境下搭建了Elasticsearch集群。通过以上介绍和步骤,相信您对部署Elasticsearch集群有了充分的了解。最后祝您在使用Elasticsearch集群的过程中顺利开展工作!
212 22
揭秘 Elasticsearch 集群架构,解锁大数据处理神器
Elasticsearch 是一个强大的分布式搜索和分析引擎,广泛应用于大数据处理、实时搜索和分析。本文深入探讨了 Elasticsearch 集群的架构和特性,包括高可用性和负载均衡,以及主节点、数据节点、协调节点和 Ingest 节点的角色和功能。
247 0
Elasticsearch集群JVM调优堆外内存
Elasticsearch集群JVM调优堆外内存
147 1
Elasticsearch集群JVM调优垃圾回收器的选择
Elasticsearch集群JVM调优垃圾回收器的选择
273 1
Elasticsearch集群JVM调优
Elasticsearch集群JVM调优
248 5
Elasticsearch集群的网络设置
Elasticsearch集群的网络设置
273 3
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
Kibana 是 Elastic Stack(原 ELK Stack)中的核心数据可视化工具,主要与 Elasticsearch 配合使用,提供强大的数据探索、分析和展示功能。elasticsearch安装在windows上一般是zip文件,解压到对应目录。文件,elasticsearch8.x以上版本是自动开启安全认证的。kibana安装在windows上一般是zip文件,解压到对应目录。elasticsearch的默认端口是9200,访问。默认用户是elastic,密码需要重置。
980 0
|
3月前
|
Linux安装Elasticsearch详细教程
Linux安装Elasticsearch详细教程
426 1
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
307 5
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问