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

1、实战遇到的问题

问题描述:如何在一个四个节点的集群中,将主节点中的数据分散到其他节点中去,最后主节点没有数据?

问题细节:

  • 线上环境有4个节点,单节点为48核的物理机,252G的内存。

  • 数据每日增量不大,累计数据就一个TB左右。数据的类型为文书类数据。

  • 核心数据就一个索引,设置了48个分片。

  • 只设置了一个主节点(同时是数据节点),其余三个仅数据节点。

2、问题解读

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

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

3、模拟一把

3.1 构建模拟环境

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

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

  • node-023:仅数据节点

  • node-024:仅数据节点

  • node-025:仅数据节点

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

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"
  }
}

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

3.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。

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

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

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

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

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

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

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

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

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

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

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

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

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 全局视角

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 命令行工具非常人性化。

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

欢迎留言交流。


推荐:

相关推荐
<p> 需要学习Windows系统YOLOv4的同学请前往《Windows版YOLOv4目标检测实战:原理与源码解析》, </p> <p> 课程链接 https://edu.csdn.net/course/detail/29865 </p> <h3> <span style="color:#3598db;">【为什么要学习这门课】</span> </h3> <p> <span>Linux</span>创始人<span>Linus Torvalds</span>有一句名言:<span>Talk is cheap. Show me the code. </span><strong><span style="color:#ba372a;">冗谈不够,放码过来!</span></strong> </p> <p> <span> </span>代码阅读是从基础到提高的必由之路。尤其对深度学习,许多框架隐藏了神经网络底层的实现,只能在上层调包使用,对其内部原理很难认识清晰,不利于进一步优化和创新。 </p> <p> YOLOv4是最近推出的基于深度学习的端到端实时目标检测方法。 </p> <p> YOLOv4的实现darknet是使用C语言开发的轻型开源深度学习框架,依赖少,可移植性好,可以作为很好的代码阅读案例,让我们深入探究其实现原理。 </p> <h3> <span style="color:#3598db;">【课程内容与收获】</span> </h3> <p> 本课程将解析YOLOv4的实现原理和源码,具体内容包括: </p> <p> - YOLOv4目标检测原理<br /> - 神经网络及darknet的C语言实现,尤其是反向传播的梯度求解和误差计算<br /> - 代码阅读工具及方法<br /> - 深度学习计算的利器:BLAS和GEMM<br /> - GPU的CUDA编程方法及在darknet的应用<br /> - YOLOv4的程序流程 </p> <p> - YOLOv4各层及关键技术的源码解析 </p> <p> 本课程将提供注释后的darknet的源码程序文件。 </p> <h3> <strong><span style="color:#3598db;">【相关课程】</span></strong> </h3> <p> 除本课程《YOLOv4目标检测:原理与源码解析》外,本人推出了有关YOLOv4目标检测的系列课程,包括: </p> <p> 《YOLOv4目标检测实战:训练自己的数据集》 </p> <p> 《YOLOv4-tiny目标检测实战:训练自己的数据集》 </p> <p> 《YOLOv4目标检测实战:人脸口罩佩戴检测》<br /> 《YOLOv4目标检测实战:中国交通标志识别》 </p> <p> 建议先学习一门YOLOv4实战课程,对YOLOv4的使用方法了解以后再学习本课程。 </p> <h3> <span style="color:#3598db;">【YOLOv4网络模型架构图】</span> </h3> <p> 下图由白勇老师绘制 </p> <p> <img alt="" src="https://img-bss.csdnimg.cn/202006291526195469.jpg" /> </p> <p>   </p> <p> <img alt="" src="https://img-bss.csdnimg.cn/202007011518185782.jpg" /> </p>
<p> 欢迎参加英特尔® OpenVINO™工具套件初级课程 !本课程面向零基础学员,将从AI的基本概念开始,介绍人工智能与视觉应用的相关知识,并且帮助您快速理解英特尔® OpenVINO™工具套件的基本概念以及应用场景。整个课程包含了视频的处理,深度学习的相关知识,人工智能应用的推理加速,以及英特尔® OpenVINO™工具套件的Demo演示。通过本课程的学习,将帮助您快速上手计算机视觉的基本知识和英特尔® OpenVINO™ 工具套件的相关概念。 </p> <p> 为保证您顺利收听课程参与测试获取证书,还请您于<strong>电脑端</strong>进行课程收听学习! </p> <p> 为了便于您更好的学习本次课程,推荐您免费<strong>下载英特尔® OpenVINO™工具套件</strong>,下载地址:https://t.csdnimg.cn/yOf5 </p> <p> 收听课程并完成章节测试,可获得本课程<strong>专属定制证书</strong>,还可参与<strong>福利抽奖</strong>,活动详情:https://bss.csdn.net/m/topic/intel_openvino </p> <p> 8月1日-9月30日,学习完成【初级课程】的小伙伴,可以<span style="color:#FF0000;"><strong>免费学习【中级课程】</strong></span>,中级课程免费学习优惠券将在学完初级课程后的7个工作日内发送至您的账户,您可以在:<a href="https://i.csdn.net/#/wallet/coupon">https://i.csdn.net/#/wallet/coupon</a>查询优惠券情况,请大家报名初级课程后尽快学习哦~ </p> <p> <span style="font-size:12px;">请注意:点击报名即表示您确认您已年满18周岁,并且同意CSDN基于商务需求收集并使用您的个人信息,用于注册OpenVINO™工具套件及其课程。CSDN和英特尔会为您定制最新的科学技术和行业信息,将通过邮件或者短信的形式推送给您,您也可以随时取消订阅不再从CSDN或Intel接收此类信息。 查看更多详细信息请点击CSDN“<a href="https://passport.csdn.net/service">用户服务协议</a>”,英特尔“<a href="https://www.intel.cn/content/www/cn/zh/privacy/intel-privacy-notice.html?_ga=2.83783126.1562103805.1560759984-1414337906.1552367839&elq_cid=1761146&erpm_id=7141654/privacy/us/en/">隐私声明</a>”和“<a href="https://www.intel.cn/content/www/cn/zh/legal/terms-of-use.html?_ga=2.84823001.1188745750.1560759986-1414337906.1552367839&elq_cid=1761146&erpm_id=7141654/privacy/us/en/">使用条款</a>”。</span> </p> <p> <br /> </p>
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页