Elasticsearch8.2扩容挪数据master出现异常

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elasticsearch8.2扩容,exclude是一个基本操作。生产过程中操作的时候出现故障,master节点出现异常,产生的现象和脑裂类似...

背景

1.ES 8.2 版本集群,从10节点扩到20节点(变更,目标替换老的10个节点,先扩容新节点再下掉老节点)

2.挪数据执行exclude API,排除老节点IP,设置迁移速率为800Mb/s,默认40Mb/s


异常

1.迁移过程中突然不再recovery,且老节点上依然有数据

2.发现出现一些pending task(node left/挪数据暂停...)

3.节点日志中出现 failed to process cluster event (clear-voting-config-exclusions) within 30s;还有 index not found异常;

4.集群依然是green

5.indices中的doc数量两次请求不一样(猜测脑裂)

6.pending task 30min 依然无法完成,确认无法自动恢复

image.png

image.png


分析

1.假定脑裂,即需要将部分节点先孤立,再加回集群即可恢复,由于不知道脑裂的哪批节点,只能保留现有的master节点,一个个操作其他节点。

风险评估:如果选择的master节点最终的term周期并不是最大的,可能会有丢数据风险;进入ES的容器可以发现,data目录和write目录都多了个lock文件,加上了锁,保证了数据的安全。此时联系用户停止数据写入(发现用户已经没有任何写入了),此时可以把锁全部干掉,然后任意一个master候选节点成为master都不会丢数据,哪怕term不是最大的。

注:如果有写入,可能会出现master候选节点信息不完全一致(没来得及同步完全),在手动随机选master节点后导致数据丢失。

2.参考官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/8.2/node-tool.html

执行unsafe查看term任期,降低风险,还是尽量选最大的;

执行detach,将节点孤立;

重启节点(pod)重新加入集群;


小插曲

怀疑是由于master候选节点是双数导致了master vote列表出现小于一半的情况,导致节点加入集群异常;

尝试加一个node,从20-->21

结论:节点无法加入集群,测试失败,无法快速恢复


处理

1.执行 执行 ./elasticsearch-node unsafe-bootstrap

image.png

删掉 /usr/share/elasticsearch/data/node.lock

继续执行 ./elasticsearch-node unsafe-bootstrap

image.png

继续删 /usr/share/elasticsearch/data/_state/write.lock

继续执行 ./elasticsearch-node unsafe-bootstrap

image.png

选择N

找到term最大的再选择y


2.节点逐一 ./bin/elasticsearch-node detach-cluster  (不包括master节点),detach之后重启节点,观察,节点会加入集群。


原理分析

// TODO




相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
6月前
|
安全 索引
elasticsearch异常问题
elasticsearch异常问题
121 0
|
4月前
|
存储 负载均衡 算法
|
4月前
|
运维 安全 网络协议
运维.索引引擎ElasticSearch.记录一个小异常:received plaintext http traffic on an https channel
运维.索引引擎ElasticSearch.记录一个小异常:received plaintext http traffic on an https channel
272 0
|
6月前
|
NoSQL 大数据 微服务
【后端面经】【NoSQL】ElasticSearch - 1 -4 削峰 扩容
【6月更文挑战第19天】面试中,限流阈值设定、触发及恢复策略是关键点。熔断即停止新请求,降级需优先保障核心业务。可通过研发插件或使用网关(如极限网关)实现熔断、限流、降级,但网关可能引入性能损耗。客户端限流也是有效手段,尤其对高压力业务。然而,最佳解决方案仍是针对高并发需求进行扩容。
36 0
【后端面经】【NoSQL】ElasticSearch - 1 -4 削峰 扩容
|
6月前
|
Python
python执行elasticsearch异常【已解决】
python执行elasticsearch异常【已解决】
60 2
|
6月前
|
Linux
elasticsearch启动异常
elasticsearch启动异常
38 1
|
7月前
|
存储 JSON API
【Elasticsearch专栏 16】深入探索:Elasticsearch的Master选举机制及其影响因素分析
Elasticsearch,开源搜索和分析引擎,以其分布式特性受开发者喜爱。本文聚焦其Master选举过程,关键在于保障集群稳健和高可用。Master负责集群操作,数据节点存储数据。选举在Master不可用时发生,基于Zen Discovery模块,遵循多数派协议。选举过程包括启动发现、选举触发、节点投票和状态同步。相关命令和配置有助于管理选举和集群状态。理解和优化选举机制能提升Elasticsearch集群的性能和稳定性。
118 1
|
7月前
|
前端开发 安全 Unix
elasticsearch安装及启动异常解决
elasticsearch安装及启动异常解决
188 0
|
7月前
|
JSON 自然语言处理 负载均衡
数据库-Elasticsearch进阶学习笔记(集群、故障、扩容、简繁体、拼音等)
数据库-Elasticsearch进阶学习笔记(集群、故障、扩容、简繁体、拼音等)
89 0
ES选举:Elasticsearch中Master选举完全解读
ES选举:Elasticsearch中Master选举完全解读
ES选举:Elasticsearch中Master选举完全解读